apache > db
Apache DB Project
Font size:      

Apache Derby Release


Use the links below to download a distribution of Apache Derby from one of our mirrors. You should always verify the integrity of distribution files downloaded from a mirror.

There are four different distributions:

  • bin distribution - contains the documentation, javadoc, and jar files for Derby.
  • lib distribution - contains only the jar files for Derby.
  • lib-debug distribution - contains jar files for Derby with source line numbers.
  • src distribution - contains the Derby source tree at the point which the binaries were built.

db-derby- [PGP] [MD5]
db-derby- [PGP] [MD5]

db-derby- [PGP] [MD5]
db-derby- [PGP] [MD5]

db-derby- [PGP] [MD5]
db-derby- [PGP] [MD5]

db-derby- [PGP] [MD5]
db-derby- [PGP] [MD5] (Note that, due to long filenames, you will need gnu tar to unravel this tarball.)

There are two separate Eclipse plugins for Derby:

  • derby_core_plugin - provides the Derby jar files to other plugins in Eclipse.
  • derby_ui_plugin - provides an Apache Derby Nature in Eclipse for easy database application development.

derby_core_plugin_10.4.2.zip [PGP] [MD5]
derby_ui_plugin_1.1.2.zip [PGP] [MD5]

Please note: both plugins must be installed for full functionality. For information on installing and using the Derby plugins for Eclipse, please see the Using the 10 Core and 1.1 UI Derby plug-ins page.

Release Notes for Derby

These notes describe the difference between Derby release and the preceding release


Derby is a pure Java relational database engine using standard SQL and JDBC as its APIs.

Derby functionality includes:

  • Embedded engine with JDBC drivers
  • Network Server
  • Network client JDBC drivers
  • Command line tools: ij (SQL scripting), dblook (schema dump), and sysinfo (system info)

New Features

This is a maintenance release. No new features were added.

Bug Fixes

The following issues are addressed by Derby release These issues are not addressed in the preceding release.

Issue IdDescription
DERBY-3836On 10.4 branch JMX tests fail with security exceptions when run against classes
DERBY-3827Add Apache 2.0 license headers to a number of files
DERBY-3816Administration Guide topics on unsupported DB2 driver should be removed
DERBY-3813Derby tests for the existance of BigDecimal methods toPlainString and bdPrecison but does not check if they were found before using them.
DERBY-3803'org.apache.derbyTesting.functionTests.tests.lang.XMLTypeAndOpsTest' failures on JVM 1.5 on trunk, 10.4 and 10.3
DERBY-3799NullPointerException when accessing a clob through a pooled connection
DERBY-3791Excessive memory usage when fetching small Clobs
DERBY-3786Assert failure in CacheEntry.unkeepForRemove when running stress.multi
DERBY-3783LOBStreamControl shouldn't throw SQLException
DERBY-3781PositionedStoreStream.reposition(pos) with pos greater than length leaves the stream object in an inconsistent state
DERBY-3779Add client side JDBC statement pool documentation
DERBY-3777SecureServerTest, SSLTest are failed on Zos with exit code 143 starting network server
DERBY-3776testGetBytes under BlobClob4BlobTest failed on Zos with encoding issue
DERBY-3775BlobStoredProcedureTest failed on Zos: AssertionFailedError: Error SYSIBM.BLOBGETPOSITIONFROMLOCATOR returns the wrong value for the position of the Blob expected:<8> but was:<-1>
DERBY-3774jdbc4/ClobTest fails on Zos with AssertionFailedError: Streams differ at index 0 expected:<200> but was:<72>
DERBY-3773ImportExportLobTest failed on Zos Clobs differ at index 1 expected:<99> but was:<196>
DERBY-3771testClasspathChecker under SysinfoCPCheckTest failed on Zos
DERBY-3768Make EmbedBlob.length use skip instead of read
DERBY-3766EmbedBlob.setPosition is highly ineffective for streams
DERBY-3764Union Query fail on Derby
DERBY-3763Rename BaseJDBCTestCase.usingDerbyNet
DERBY-3745Derby can leak classloaders in an app server environment
DERBY-3741SQL LENGTH function materializes CLOB into memory
DERBY-3736Revoking a column level privilege from a user, a prepared statement relying on that privilege can still be executed
DERBY-3735Incorrect position calculation in PositionedStoreStream with read(byte(),...)
DERBY-3734Maximum value allowed for derby.storage.fileCacheSize (100) is too low for large system. Increase the maximum value and redocument the property.
DERBY-3732SQL Length function materializes BLOB into memory
DERBY-3730Bundle-SymbolicName: needed in Derby manifest for OSGi 4 environment
DERBY-3726Don't call RAFContainer.padFile() from instances of RAFContainer4
DERBY-3725add more information to the XSDB1:ERROR XSDB1: Unknown page format at page error
DERBY-3723Reset current schema to default (user name) when creating a new logical connection in the client driver
DERBY-3718NPE when firing a trigger
DERBY-3709Exception printed by replication test: Could not perform operation because the database is not in replication master mode.
DERBY-3708setting tracedirectory from the command line does not work
DERBY-3704If an IOException is encountered during establishment of the connection, Network Server should print the root exception to the console instead of a generic message
DERBY-3701java.lang.Exception: DRDA_UnableToAccept.S:Unable to accept connections and client hang if tracing is turned on but traceDirectory does not exist
DERBY-3695NullPointerException when invoking statement event listeners if one of the listeners is null
DERBY-3693Deadlocks accessing DB metadata
DERBY-3692'javax.transaction.xa.XAException' ++ in 'J2EEDataSourceTest'
DERBY-3690EmbedPooledConnection doesn't reset schema when creating a new logical connection
DERBY-3668Remove JDBC 3.0-specific topics from Reference Manual and merge implementation notes as needed
DERBY-3658LOBStateTracker should not use SYSIBM.CLOBRELEASELOCATOR when the database is soft-upgraded from 10.2
DERBY-3657Comment in template security policy incorrectly says that JMX is not enabled by default
DERBY-3649can't call a stored function with an aggregate argument without getting the following error: ERROR 42Y29
DERBY-3629Tools Guide should document continuation marker for ij
DERBY-3625XSDA3 error in concateTests in lang.LangHarnessJavaTest caused by bug in SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE()
DERBY-3622SYSCS_UTIL.SYSCS_EMPTY_STATEMENT_CACHE needs a better description in the reference manual
DERBY-3612Developer's Guide needs correction on garbage collection
DERBY-3602If derbytesting.jar is in a different directory than the derby jars SystemPrivilegesPermissionTest fails with java.security.AccessControlException
DERBY-3596Creation of logical connections from a pooled connection causes resource leak on the server
DERBY-3595TableFunctionTest.SpecialCollation and NoSpecialCollation fail with IBM iseries in checkGetXXXCalls
DERBY-3588suites.All fails to run on Jvm 1.5 when built with JDK 1.5 (Failed to invoke suite(): .jdbc4._Suite)
DERBY-3581Changing certain properties on client DataSource objects causes existing connections to reflect the new values
DERBY-3579The Developer's Guide incorrectly describes the behavior of transactions inside procedures and functions
DERBY-3574With client, attempting to get the lob length after commit or connection close if there was a call to length() before commit does not throw an exception
DERBY-3546Failed to get database schemas of a JAR database
DERBY-3543NetworkServerControl with options but no command does not give usage message
DERBY-3469Clob.length() doesn't detect a closed underlying connection in a consistent way
DERBY-3446Make ResultSet.getStatement return the correct statement when created by a logical statement
DERBY-3409Remove JDBC 2.0-specific topics from Reference Manual and merge implementation notes as needed
DERBY-3401Removing a ConnectionEventListener from a PooledConnection during its connectionClosed() callback causes other ConnectionEventListener callbacks to be missed
DERBY-3397Derby and break scrollable result sets? Hibernate Query.setFirstResult and/or setMaxResults
DERBY-3381"ERROR XSDA3: Limitation: Record cannot be updated or inserted due to lack of space on the page...." in suites.All
DERBY-3360Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
DERBY-3338CancelQueryTask.forgetContext() could be simplified.
DERBY-3313JDBC client driver statement cache
DERBY-3307NPE in PooledConnction event notification handling if a null listener is added
DERBY-1848jdbcapi/SetQueryTimeoutTest.java fails on IBM wctme 5.7
DERBY-48A connection request that has a default schema that is being created by another transaction will fail to connect


Compared with the previous release (, Derby release introduces the following new features and incompatibilities. These merit your special attention.

  • Note for DERBY-3701: An error message will be logged to derby.log if the Network Server tracing file cannot be created. Starting with version 10.5, the Network Server will attempt to create the trace directory if it does not exist. Any intervening directories in the given path will also be created if possible.

  • Note for DERBY-48: In Derby, a user's initial default schema is named the same as the user name, or APP if a user is not provided at connect time. This schema is implicitly auto-created the first time a schema object is created in that schema.

Note for DERBY-3701

Summary of Change

An error message will be logged to derby.log if the Network Server tracing file cannot be created. Starting with version 10.5, the Network Server will attempt to create the trace directory if it does not exist. Any intervening directories in the given path will also be created if possible.

Symptoms Seen by Applications Affected by Change

Before the fix for DERBY-3110, if derby.drda.traceAll was set to true and the derby.drda.traceDirectory was set to a non-existent directory, no tracing would occur and no error would occur. After the fix for DERBY-3110, an error "java.lang.Exception: DRDA_UnableToAccept.S:Unable to accept connections" would occur and the client would hang and no tracing would occur. With this fix for version 10.5 and higher, the Network Server will attempt to create the trace directory if possible. For 10.4.2 (and the next release on the 10.3 branch), the Network Server will still not try to create the directory. For all these releases the Network Server will print an error on session connect if there is any problem creating the trace file, but the Network Server will not cause the session connection to fail. Users who have trace turned on and the trace directory set to a non-existent directory may now see exceptions in the derby.log on connect indicating that the trace file is not found or with 10.5 or higher they may see tracing occur where it did not before.

Incompatibilities with Previous Release

Tracing properties will not be ignored or cause the client to hang if the trace directory is set to a non-existent directory.

Rationale for Change

The tracing properties should not be summarily ignored or cause the client to hang if the trace directory does not exist.

Application Changes Required

Applications that counted on the derby.drda.traceAll property being ignored if derby.drda.traceDirectory was set to a non-existent directory, need to turn tracing off or they may now see many errors in the derby.log or large amounts of tracing.

Note for DERBY-48

Summary of Change

In Derby, a user's initial default schema is named the same as the user name, or APP if a user is not provided at connect time. This schema is implicitly auto-created the first time a schema object is created in that schema.

Previously, this auto-creation would be performed as part of the user transaction. This would sometimes lead to locking issues as described in this issue. With this change, the auto-creation is now performed and committed immediately in a separate sub-transaction.

Symptoms Seen by Applications Affected by Change

The initial default schema will be present in cases where it previously would not yet have been created: If the user transaction that creates a schema object leading to auto-creation of the initial default schema rolls back for some reason after having created the schema, up till now the auto-creation of the initial default schema would be rolled back as well. Since it is now created and committed in a sub-transaction, the schema creation will not be rolled back: the default schema will persist.

Incompatibilities with Previous Release

Most applications should not be impacted by this change, but there are some corner cases as described below:

If the application tests for the existence of the initial default schema by querying Derby system tables, the results could now be different than in earlier releases, if the test is made after a rollback as described in the previous section.

Since the initial default schema will now potentially exist in cases where it would previously not exist, schema operations may be impacted, e.g. where before a DROP SCHEMA <default schema name> RESTRICT would fail due to it not yet existing, it could now work (if empty), depending on when the drop attempt is made.

Rationale for Change

Implicit schema creation is now performed in its own transaction to avoid deadlocks with other connections accessing the same schema.

Doing this is a separate transaction avoids holding dictionary locks longer than necessary, cf. DERBY-48 and thus reduces the chance for deadlocks.

Application Changes Required

Verify that the application code does not rely on the initial default schema being absent after a rollback.

Build Environment

Derby release was built using the following environment:

  • Branch - Source code came from the 10.4 branch.
  • Machine - Mac OS X Version 10.5.4
  • Ant - Apache Ant version 1.7.0 compiled on December 13 2006.
  • JDK 1.4 - Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_16-b05-302)
  • Java 6 - Java(TM) SE Runtime Environment (build 1.6.0_01-dp-b06-101)
  • OSGi - The Apache Felix project supplied felix.jar, which was used to build org.apache.derby.osgi.EmbeddedActivator.
  • Compiler - A Java 5 compiler was used to build all classes: Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
  • JSR 169 - J2ME libraries were supplied by phoneme.dev.java.net (CDC, Foundation Profile, and Personal Basis Profile meeting the 1.1.2 specifications). JSR169 libraries were supplied by java.sun.com.

Verifying releases

It is essential that you verify the integrity of the downloaded files using the PGP and MD5 signatures. MD5 verification ensures the file was not corrupted during the download process. PGP verification ensures that the file came from a certain person.

The PGP signatures can be verified using PGP or GPG. First download the Apache Derby KEYS as well as the asc signature file for the particular distribution. It is important that you get these files from the ultimate trusted source - the main ASF distribution site, rather than from a mirror. Then verify the signatures using ...

% pgpk -a KEYS
% pgpv db-derby-X.Y.tar.gz.asc


% pgp -ka KEYS
% pgp db-derby-X.Y.tar.gz.asc


% gpg --import KEYS
% gpg --verify db-derby-X.Y.tar.gz.asc

To verify the MD5 signature on the files, you need to use a program called md5 or md5sum, which is included in many unix distributions. It is also available as part of GNU Textutils. Windows users can get binary md5 programs from here, here, or here.

We strongly recommend you verify your downloads with both PGP and MD5.