Introduction

This page lists undocumented Derby behavior which can be handy for users. At the same time, users should be aware that this behavior is not documented, and hence it is subject to change at anytime.

Client side tracing under Network Server

Currently, the client tracing can be enabled by setting jdbc url attributes or through setXXX methods on the DataSource or by calling DriverManager.setLogWriter method (More information on these options can be found in the Server and Administration Guide). All these options require changing the client code which may not be a feasible option for a deployed client application. To get around this, in Derby 10.3, 2 new JVM properties(DERBY-1275) have been added. They are namely, derby.client.traceLevel and derby.client.traceDirectory. When the client application is started, the users can include these 2 JVM properties to start the client side tracing. eg java -Dderby.client.traceDirectory=./traceDir -Dderby.client.traceLevel=64 clientApplication

When running under security manager, read permission for these properties is required. If permission to read the properties is not allowed, the properties will be ignored and tracing will not be affected.

Undocumented optimizer overrides

"Overriding the default optimizer behavior" in "Tuning Derby" (http://db.apache.org/derby/docs/10.10/tuning/ctunoptimzoverride.html) documents four optimizer overrides (constraint, index, joinOrder, joinStrategy). Derby supports some additional ones that are not documented. They are as follows:

  • bulkFetch (must be an integer greater than 0 and not updatable)
  • hashInitialCapacity (must be an integer greater than 0)
  • hashLoadFactor (must be a float value greater than 0.0 and less than or equal to 1.0)
  • hashMaxCapacity (must be an integer greater than 0)
  • useStatistics (must be "true" or "false")
  • No labels