# Release Notes for Derby 10.5.3.0

> These notes describe the difference between Derby release 10.5.3.0 and the preceding release 10.5.1.1.

- Overview
- New Features
- Bug Fixes
- Issues
- Build Environment

## Overview

> 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 bug fix release and also provides localization of new 10.5 messages. No new features were added.

## Bug Fixes

> The following issues are addressed by Derby release 10.5.3.0. These issues are not addressed in the preceding, deprecated 10.5.2.0 release. Most significantly, Derby 10.5.3.0 carries the fix to the wrong-results bug which caused the community to abandon 10.5.2.0: DERBY-4331

> Issue Id | Description
> DERBY-4331 | Join returns results in wrong order
> DERBY-4328 | The Developer's Guide falsely claims that you can use SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY to change the boot password on an encrypted database.
> DERBY-4324 | The Reference Guide lists wrong lengths for the GRANTOR and GRANTEE columns in SYSCOLPERMS, SYSROUTINEPERMS, and SYSTABLEPERMS.
> DERBY-4312 | SQLException XJ215 on insert with setCharacterStream() and autocommit off in mailjdbc test
> DERBY-4310 | Closing a prepared statement with an embedded XAConnection can cause the statement to be reprepared and errors related to missing dependencies. This can interfere with network server closeSession()
> DERBY-4306 | NullPointerException in JMXManagementService.unregisterMBean when running jdbcapi._Suite
> DERBY-4305 | Make changes to test harness class j9_foundation11 to support newer version of IBM's JSR169 implementation
> DERBY-4292 | creation of FileInputStream in org.apache.derby.impl.tools.ij.Main not wrapped in privilege block which can cause problems running under SecurityManager
> DERBY-4246 | '.replicationTests.ReplicationRun_Local_3_p5).testReplication_Local_3_p5_DERBY_3878()' fails w/ "Could not perform operation 'stopSlave' because the database '...' has not been booted".
> DERBY-4270 | Make replication tests save derby.log and database when a failure occurs.
> DERBY-4203 | (partial) Change mailjdbc system test to be able to restart with the existing database instead of creating a new one so it can be used for upgrade testing
> DERBY-4186 | After master stop, test fails when it succeeds in connecting (rebooting) shut-down ex-slave
> DERBY-4185 | Make timeout settable or increase default for one replication message layer protocol.
> DERBY-4175 | Instability in some replication tests under load, since tests don't wait long enough for final state or anticipate intermediate states
> DERBY-4166 | (partial) improvements to the mailjdbc test
> DERBY-4155 | jdbcapi/XATest.java doesn't seem to be running anywhere
> DERBY-3921 | Replication: Test replication of encrypted databases
> DERBY-3814 | failure in testAssertFailureThreadDump with weme 6.1 / JSR 169
> DERBY-3710 | cannot access a database using AES encryption with encryptionKeyLength=192 after it's been shutdown

> The following additional issues are addressed by Derby release 10.5.3.0. These issues are not addressed in the preceding 10.5.1.1 release.

> Issue Id | Description
> DERBY-4287 | call to System.getProperty in BCClass.java is not wrapped in a priv block so may fail when running under SecurityManager
> DERBY-4278 | Batch inserts with Clobs fails with the embedded driver
> DERBY-4276 | Update demo's to remove references to com.ibm.db2.jcc.DB2Driver
> DERBY-4274 | SYSCS_UPDATE_STATISTICS takes unnecessary table lock
> DERBY-4273 | A lock could not be obtained within the time requested error in testBTreeForwardScan_fetchRows_resumeAfterWait_nonUnique_split
> DERBY-4271 | testBootSameDbDifferentSubSubProtocol(org.apache.derbyTesting.functionTests.tests.memorydb.BasicInMemoryDbTest)java.sql.SQLException: Database 'BSDDSSP' not found.
> DERBY-4268 | "SECURITY" is reserved as SQL keyword.
> DERBY-4245 | Sorting a table containing a CLOB fails after upgrade to 10.5
> DERBY-4239 | corruption with storerecovery oc_rec? tests. ERROR XSLA7: Cannot redo operation null in the log when compress occurs during checkpoint, then jvm exits
> DERBY-4232 | XAResource.setTransactionTimeout() makes XAResource.start() fail with the client driver
> DERBY-4230 | DatabaseMetaData.getColumns() returns extra column from view with group by and expression in SELECT list
> DERBY-4229 | encryptionKeyLength connection attribute should be documented
> DERBY-4221 | Provide message localizations for 10.5
> DERBY-4218 | "Table/View 'MAX_SCAN' does not exist" in org.apache.derbyTesting.functionTests.tests.store.IndexSplitDeadlockTest
> DERBY-4212 | Prepared statement with OFFSET/FETCH gives different results on subsequent execute
> DERBY-4206 | Documentation: Release versions in output need updating
> DERBY-4205 | Developer's Guide: Permissions topic contains wrong info after 10.3
> DERBY-4204 | Runtime statistics not collected on re-execution of statement
> DERBY-4198 | When using the FOR UPDATE OF clause with SUR (Scroll-insensive updatable result sets), the updateRow() method crashes
> DERBY-4196 | Document initiation of replication from cleanly shut down database
> DERBY-4193 | ASSERT FAILED Scan position already saved with multi-threaded insert/update/delete
> DERBY-4182 | SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE does not reclaim space lost from an aborted insert
> DERBY-4171 | Connections to on-disk db go to in-memory db if in-memory db with same name is booted
> DERBY-4165 | Document the effect of shutdown on in progress transactions and open connections.
> DERBY-4164 | Make REVOKE statement description mention what happens for open result sets/cursors
> DERBY-4161 | SQL Roles - Clarify documentation regarding the SET ROLE
> DERBY-4154 | DboPowersTest should not hard upgrade the system/wombat database
> DERBY-4142 | java.lang.VerifyError causing java.sql.SQLException: Cannot create an instance of generated class ... in lang.GeneratedColumnsTest and GeneratedColumnsPermsTest on IBM iseries
> DERBY-4133 | 'testTableFunctionInJar' fails w/ 'The class 'DummyVTI' does not exist or is inaccessible...' on jvm1.4
> DERBY-4118 | ComparisonFailure in 'testSysinfo(org.apache.derbyTesting.functionTests.tests.derbynet.SysinfoTest)' on Derby 10.5 / Linux
> DERBY-4097 | 'testMixedInsertDelete(org.apache.derbyTesting.functionTests.tests.lang.NullableUniqueConstraintTest)org.apache.derby.client.am.BatchUpdateException'
> DERBY-4053 | Network Server's failure to rollback local transactions on shutdown can cause hang on startup with message java.net.BindException: Address already in use: NET_Bind in derby.log
> DERBY-4034 | Document database name and attribute length and character set limitations for network client
> DERBY-4018 | ArrayIndexOutOfBoundsException in TopService.inService under heavy multithreaded use of EmbeddedDriver
> DERBY-4001 | Sequence comparison with "ALL" does not yield correct results
> DERBY-3991 | Clob.truncate(0) throws exception
> DERBY-3926 | Incorrect ORDER BY caused by index
> DERBY-3887 | Embedded Derby fails under JBoss because of JMX-related conflicts
> DERBY-3846 | The list of supported message libraries looks wrong
> DERBY-3737 | Document the new SignatureChecker lint tool in the Tools Guide
> DERBY-3719 | '...replication.buffer.LogBufferFullException' causes failover to fail w/ 'XRE07, SQLERRMC: Could not perform operation because the database is not in replication master mode.'
> DERBY-3669 | ClientXADataSource fetched from JNDI not identical as originally bound; some properties have String "null" instead of null
> DERBY-3598 | Modify ReleaseNoteGenerator and ChangesGenerator to exclude issues that are fixed in earlier releases
> DERBY-3468 | Example in documentation of ij.exceptionTrace is wrong
> DERBY-3417 | slave side stop in a client server mode results in SQLState printed without proper error message
> DERBY-3296 | Importing to table in default schema fails when another table with the same name exists in a different schema
> DERBY-2821 | emphasize that derby encryption only supports NoPadding option
> DERBY-2447 | ejbql and floattypes in org.apache.derbyTesting.functionTests.tests.lang.LangScripts intermittently fails with 'expected:<[0.0 ] > but was:<[-0.0] '
> DERBY-2074 | NullPointerException when two threads load sort factory concurrently
> DERBY-1923 | XML operators - Xalan requirement
> DERBY-1209 | It would be good to add an example to the SYSCS_UTIL.SYSCS_CHECK_TABLE documentation for how to check all tables

## Issues

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

> - Note for DERBY-4230: In order to see the fix for DERBY-4230 for a view created with a previous release, users must drop and recreate the view.

> - Note for DERBY-3991: `Clob.truncate` now presents a more specific error message for a negative length.

> ### Note for DERBY-4230

> > #### Summary of Change

> > In order to see the fix for DERBY-4230 for a view created with a previous release, users must drop and recreate the view.

> > #### Symptoms Seen by Applications Affected by Change

> > DERBY-4230 fixed an issue where an extra column might appear in DatabaseMetaData.getColumns() for a view that uses a group by and an expression in the select list. The problem occurred during create view with the old release. After updating your derby jars to a release that has the fix, if you still see the behavior, you will need to drop and recreate the view to get the fix.

> > #### Incompatibilities with Previous Release

> > none

> > #### Rationale for Change

> > The change was made to fix a regression introduced in version 10.3.1.4 by DERBY-681.

> > #### Application Changes Required

> > Users must drop an recreate affected views to see the fix for DERBY-4230.

> ### Note for DERBY-3991

> > #### Summary of Change

> > `Clob.truncate` now presents a more specific error message for a negative length.

> > #### Symptoms Seen by Applications Affected by Change

> > Specifying a negative length will raise an SQLException with a different state;

> > - Now: `XJ071: Negative length argument '-2' passed in a BLOB or CLOB method.`
> > - Before: `XJ070: Negative or zero position argument '-2' passed in a Blob or Clob method.`

> > #### Incompatibilities with Previous Release

> > Applications catching a specific exception based on SQLState may behave differently. The incompatibility can only be seen if the application calls `Clob.truncate` with a negative length using the embedded driver.

> > #### Rationale for Change

> > The embedded driver was changed to be consistent with the client driver for the error message raised when invoking `Clob.truncate` with a negative length.

> > #### Application Changes Required

> > Look for SQLState XJ071 instead of XJ070 when `Clob.truncate` is called to catch invocations specifying a negative length.

## Build Environment

> Derby release 10.5.3.0 was built using the following environment:

> - Branch - Source code came from the 10.5 branch.
> - Machine - Mac OS X 10.5.7 on Macbook Pro 3,1.
> - Ant - Apache Ant version 1.7.1 compiled on June 27 2008
> - J2ME/JSR 169 - Sun's phoneME Advanced MR2
> - JDK 1.4 - Apple's Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_21-b01-324)
> - Java 5 - Apple's Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-304)
> - Java 6 - Apple's Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
> - Compiler - The Apple Java 5 compiler was used to compile all classes. Platform-specific code was compiled against the corresponding platform libraries listed above.