Release Notes for Derby 10.3.2.1

These notes describe the difference between Derby release 10.3.2.1 and the preceding release 10.3.1.4.

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 maintenance release. No new features have been added.

Bug Fixes

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

Issue IdDescription
DERBY-3232Top-level index.html in releases incorrectly indicates support for JDBC 2.1 in 10.3 releases
DERBY-3216do row level lock space reclamation in btree of indiv rows.
DERBY-3190New simple demo suitable for supported Java ME platforms
DERBY-3187SimpleApp (demo) does not work in a client setting
DERBY-3176J2ME support for phoneME platform disabled in 10.3
DERBY-3175NullPointerException on INSERT after ALTER TABLE ... DROP COLUMN
DERBY-3172ConnectionEventListener.connectionErrorOccurred not being executed when SQLState 08006 Error is thrown
DERBY-3159SYSCS_SET_USER_ACCESS fails if the user name contains characters not allowed in regular identifiers.
DERBY-3158Repeat calls to SYSCS_UTIL.SYSCS_SET_USER_ACCESS() for the same user and permission fail with repeated user in list exception.
DERBY-3147Remove unused code that allow identifiers to be lower-cased.
DERBY-3142sysinfo ignores derby.ui.locale
DERBY-3136Cut down on object creations in LIKE clause implementation of territory based characters.
DERBY-3133Syntax for GRANT table permission does not mention that several privileges may be specified in a list
DERBY-3126Inserting BigDecimal value in PreparedStatement with setBigDecimal into double column loses fractional digits
DERBY-3123Style sheet (CSS) references in demo HTML files are incorrect
DERBY-3119Derby does not resolve functions to methods with Integer return type.
DERBY-3118Simple demo is out of date
DERBY-3110server hangs after trace on command fails
DERBY-3109Nonexistent property derby.database.defaultAccessMode shown in Developers Guide: User Authentication examples
DERBY-3107On client, Clob.free() does not release locators.
DERBY-3099Possible bug in interaction with buffer manager causing pages not to be freed on rollback to savepoint
DERBY-3098LOB locks are not released after free().
DERBY-3096SSL handshake throws "bad_certificate" when server tries to authenticate client
DERBY-3093Intermittent transaction failure caused by internal duplicate savepoint name for triggers
DERBY-3086The server policy needs to grant derbynet.jar more permissions so that sysinfo and drda tracing will work
DERBY-3085Fails to handle BLOB fields with a PreparedStatement with size >32750 bytes
DERBY-3081cannot create instance of generated class because of java.lang.VerifyError in 4 tests on IBM iseries
DERBY-3080With TERRITORY_BASED collation, when multiple characters map to a single collation element '_' matches a single collation element rather than a single character
DERBY-3077Trying to reconnect with derby client after bringing server down throws SQL Exception 58009 rather than 08XXX exception
DERBY-3075Client error: 08001 Error connecting to server.. throws SQLTransientConnectionException instead of SQLNonTransientConnectionException
DERBY-3074Database shutdown exception 08006 throws SQLTransientConnectionException instead of SQLNonTransientConnectionException
DERBY-3061Wrong results from query with two conjuncts
DERBY-3046setObj(int,Object,int) causes NPE if no parameter markers are present; should generate SQLException as for setObject(int,Object)
DERBY-3038SYSCS_IMPORT_TABLE FAILS with No current connection after shutdown/reconnect to encrypted database : 10.3.1.4 regression
DERBY-3033select query results in nullpointer exception in skipScan()
DERBY-3032java.lang.ClassCastException returning null from a case statement in subquery
DERBY-3025NPE when connecting to database with securityMechanism=8
DERBY-3007Documentation - SYSCS EXPORT TABLE system procedures cannot export data to an existing file
DERBY-3000getTables() call with 10.3 causes java.sql.SQLException: The parameter position '8' is out of range. The number of parameters for this prepared statement is '7'.
DERBY-2989Insert into table with constraints fails if the table name is "indicator" (or any other SQL keyword)
DERBY-2986Query involving CASE statement significantly slower in 10.3.1.4 than in 10.2.2.0
DERBY-2972Update or select with function in the where clause causes with TERRITORY_BASED collation fails with ERROR 42818: Comparisons between 'VARCHAR' and 'VARCHAR' are not supported.
DERBY-2967Single character does not match high value unicode character with collation TERRITORY_BASED
DERBY-2961TriggerTest.testTypesINActionStatement fails with 'ASSERT FAILED col1.getClass() (class org.apache.derby.iapi.types.SQLClob) expected to be the same as col2.getClass() (class org.apache.derby.iapi.types.CollatorSQLClob)
DERBY-2957ASSERT FAILED col1.getClass() (class org.apache.derby.iapi.types.SQLChar) expected to be the same as col2.getClass() (class org.apache.derby.iapi.types.CollatorSQLChar) in NistScripts dml002 test with collated database
DERBY-2910SimpleStringOperatorNode in it's bindExpression method generates a character string CAST if required but does not set the correct collation.
DERBY-2906derbynet.jar & derbytools.jar incorrectly have a META-INF/services/java.sql.Driver entry
DERBY-2902AS IDENTITY (START WITH -9223372036854775808) fails
DERBY-2564ContextService.notifyAllActiveThreads() and network server code need a privileged block around the calls to Thread.interrupt()
DERBY-2352Assertion Failure with order by and group by expression
DERBY-2351ORDER BY with expression with distinct in the select list returns incorrect result
DERBY-2297In the Dev Guide example derby.database.readOnlyAccessUsers is incorrectly mentioned as derby.database.readAccessUsers
DERBY-2188Developer's Guide talks about a jdbc url property "locale" which is not supported by Derby.
DERBY-2073Inserting BigDecimal value in PreparedStatement into double column loses fractional digits
DERBY-2016ArrayIndexOutOfBoundsException for COALESCE with aggregate functions
DERBY-1790DatabaseMetaData.getTables() with passed in table type of SYNONYM returns system tables and not SYNONYMS
DERBY-1769Add mention that Derby supports rowUpdated, rowDeleted with a result set concurrency of CONCUR_READ_ONLY
DERBY-974ClientDriver can lose some connection properties
DERBY-857LDAP user authentication fails under a security manager

Issues

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


Note for DERBY-2967

Summary of Change

Databases with territory based collation might see the behavior of LIKE predicate in WHERE clause has changed.

Symptoms Seen by Applications Affected by Change

In territory based databases, the LIKE predicate will now comply with SQL specification(Derby already follows SQL specification for UCS_BASIC databases). SQL specification for LIKE predicate requires that database should do one character comparison at a time. Prior to the fix that went in as part of DERBY-2967, Derby did string comparison rather than character comparison for LIKE. This causes a problem with territory based database because the collation element(s) for a string of characters may not be same as the collation element(s) for inidivdual characters that make up that string. In addition, the metacharacter _ in the pattern in a LIKE predicate will now consume exactly one character rather than working on number of collation elements. To show the impact on application, consider following eg. Say we are working with a territory where character 'z' has same collation elements as 'xy'. For such a territory consider following LIKE predicate 'zcb' LIKE 'xy_b' Prior to DERBY-2967, Derby will return TRUE because collation elements for 'z' matched 'xy' and 'c' was consumed by '_' and 'b' matched 'b'. But this does not follow SQL specification. SQL specification requires one character comparison at a time in LIKE. With the fix for DERBY-2967, the LIKE predicate in this example will return FALSE because the collation element(s) for 'z' does not match collation element(s) for 'x'. In addition, the metacharacter _ in pattern for LIKE will consume *one* character in the string value. So for an eg clause 'xycb' LIKE '_cb' will return FALSE because metacharacter _ will consume 'x' and since 'c' does not match 'y', Derby will return FALSE.

Rationale for Change

The previous behavior violated the SQL specification. The new behavior is correct.

Build Environment

Derby release 10.3.2.1 was built using the following environment: