Release Notes for Derby 10.6.2.1

These notes describe the difference between Derby release 10.6.2.1 and the preceding release 10.6.1.0.

Overview

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

Derby functionality includes:

New Features

This is a bug fix release which also provides localizations of new 10.6 messages. No new features were added. This release addresses a data corruption issue. DERBY-4677. See release note for unique index corruption detection and repair.

Bug Fixes

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

Issue IdDescription
DERBY-4798NPE in nested outer join
DERBY-4770Files missing svn:eol-style (August 2010)
DERBY-4748StringIndexOutOfBoundsException on syntax error (invalid COMMIT)
DERBY-4747ttestSetPortPriority junit test failing in tinderbox runs with junit.framework.AssertionFailedError: Port 1537 exceeeds expected maximum.
DERBY-4736ASSERT FAIL when code generating a column reference in a join predicate in presence of other outer join reordering
DERBY-4731XA two phase commit with active GLOBAL TEMPORARY TABLE causes An internal error identified by RawStore module
DERBY-4722Error in SQL example of SYSCS_UTIL.SYSCS_DISABLE_LOG_ARCHIVE_MODE
DERBY-4717Driver trace file isn't closed/released on physical connection close when specified with the traceFile attribute/setter
DERBY-4715Write jvm information and path of derby.jar to derby.log
DERBY-4712Complex nested joins problems
DERBY-4706Remove stale and potentially unused code Request.writeEncryptedScalarStream
DERBY-4700Add method to obtain a bogus port in TestConfiguration
DERBY-4699Build breaks if a Java 6 JDK is detected when compiling with a Java 5 compiler
DERBY-4698Simple query with HAVING clause crashes with NullPointerException
DERBY-4694Build breaks on Mac OS X due to JDK classpath issues
DERBY-4693column rename looses 'identity' attribute.
DERBY-4686SQLBinary.writeBlob is inefficient, reading one byte at a time from the source BLOB
DERBY-4682Inaccurate description of how a statement is completed in Developer's guide
DERBY-4679Several left outer joins causes unstable query with incorrect results
DERBY-4677SYSCS_COMPRESS_TABLE disables unique constraints
DERBY-4676NullPointerException on SELECT on INNER JOIN
DERBY-4671Embedded driver does not work with jbossCache
DERBY-4666Localize 10.6.1 messages
DERBY-4664Change Derby internal stored procedures to avoid DriverManager.getConnection("jdbc:default:connection") as it may be recognized by other Drivers
DERBY-4661Reduce size of encoding buffer for short character values
DERBY-4654Restriction.toSQL() doesn't escape special characters
DERBY-4651Hidden assumptions in FromVTI.makeRestriction()
DERBY-4638Expose names of top-level test suites for easier scripting
DERBY-4632Delete Maven1 build files
DERBY-4610Error attempting delete with cascade and triggers
DERBY-4597remove references to IBM jcc driver from sysinfo
DERBY-4582Timestamps inserted with GMT calendar are 1 hour later when subsequently read with GMT calendar (Server Mode Only).
DERBY-4548would like an alternative location for ant.properties
DERBY-4471Left outer join reassociation rewrite gives wrong result
DERBY-4211'derbyall/encryptionAll/storemats.fail:store/updatelocksJDBC30.sql' fails with unexpected locks
DERBY-4179bootLock.java fails with missing exception on z/OS with pmz3160sr2ifix-20081021_01(SR2+IZ32776+IZ33456), and Windows Vista
DERBY-3856difference between Embedded vs DerbyNetClient in format of return from timestamp(cast(? as varchar(32)))
DERBY-2925Prevent export from overwriting existing files
DERBY-2532Client does not return SQLException on XAConnection.getXAResource() on a closed connection, Embedded does
DERBY-2026Setting a login timeout in client driver can lead to query timeout
DERBY-1595Network server fails with DRDAProtocolException if a BLOB with size 2147483647 is streamed from client

Issues

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


Note for DERBY-4677

Summary of Change

Unique nullable constraint may be disabled after compress or import operations on the table.

Symptoms Seen by Applications Affected by Change

Prior to DERBY-4677 fix, the unique nullable constraint might have been disabled or violated after calls to SYSCS_UTIL.SYSCS_COMPRESS_TABLE, or SYSCS_UTIL.SYSCS_IMPORT_TABLE. While the DERBY-4677 fix corrects the problem for new indexes, it does not automatically repair damage to existing indexes. Applications using unique nullable indexes, (first allowed in version 10.4.2.1) may find that duplicate rows exist, despite the table being created with the unique constraint. In addition to the obvious problem of this being allowed, users may also see incorrect query results where one row is returned even though there are multiple qualifying rows.

Rationale for Change

The change fixed a serious bug that allowed duplicate rows despite a unique index. Users should upgrade and manually resolve prior damage as described below.

Application Changes Required

Users using unique nullable indexes (Derby 10.4 and higher) should upgrade immediately to a Derby version that contains the fix for DERBY-4677 AND drop and recreate those indexes. The fix was made in the following revisions.


  • 10.4.2.1 (build 956034)
  • 10.5.3.1 (build 955487)
  • 10.6.1.1 (build 955790)
  • The fix will not take care of duplicate rows that may have already made their way into the database. Such duplicate rows will have to be handled by the user manually. The steps to take would be to drop and recreate unique nullable indexes. During recreation, user might run into duplicate rows SQL exception. Such duplicate rows will have to be manually handled appropriately by the user.


    Note for DERBY-2925

    Summary of Change

    Prevent export from overwriting existing files

    Symptoms Seen by Applications Affected by Change

    Due to security concerns, and to avoid accidental file damage, Export processing will not overwrite existing files. As a result, applications may observe some behavioral changes with respect to Export operations.

    Incompatibilities with Previous Release

    1. SYSCS_UTIL.SYSCS_EXPORT_TABLE: Exports of all the data from a table to an existing file is no longer possible and the user/application must remove the existing file, otherwise ERROR XIE0S will be returned.
    2. SYSCS_UTIL.SYSCS_EXPORT_QUERY: Exports of all the data returned from the SELECT statement to an existing file is no longer possible and the user/application must remove the existing file, otherwise ERROR XIE0S will be returned.
    3. SYSCS_UTIL.SYSCS_EXPORT_QUERY_LOBS_TO_EXTFILE: Export of the result of a SELECT statement to a main data output file, and the LOB data into a large object auxiliary file to an existing file is no longer possible and the user/application must remove the existing data file and/or large object auxiliary file, otherwise ERROR XIE0S will be returned if the data file exists or ERROR XIE0T will be returned if the large object auxiliary file exists.

    Rationale for Change

    Due to security concerns and to avoid accidental file damage, Export processing will no longer overwrite an existing file.

    Application Changes Required

    The application needs to specify a different filename which does not exists or delete the existing file before performing the Export operation.

    Build Environment

    Derby release 10.6.2.1 was built using the following environment: