Derby JSR169 Design Notes

Initial Version 2004/12/15 – djd@debrunners.com

JDBC Implementation Classes

How the JDBC classes will implement the JDBC specifications and what changes are required.

Derby Embedded Class

JDBC Support

Notes

org.apache.derby.impl.jdbc



EmbedConnection

JDBC 2.0


---->> EmbedConnection20


REMOVE – move methods into EmbedConnection
(split existed to support JDBC 1.2)

---->>EmbedConnection30

JDBC 3.0, JSR169


EmbedStatement

JDBC 2.0, JDBC 3.0, JSR169


EmbedPreparedStatement

JSR169

Move BigDecimal methods into EmbedPreparedStatement20, will be non-abstract hence compiled with JSR169 libraries.

---->> EmbedPreparedStatement20

JDBC 2.0


---->>EmbedPreparedStatement30

JDBC 3.0


EmbedCallableStatement

JSR169

Move BigDecimal methods into EmbedResultSet20, will be non-abstract hence compiled with JSR169 libraries

---->> EmbedCallableStatement20

JDBC 2.0


---->>EmbedCallableStatement30

JDBC 3.0


EmbedResultSet

JSR169

Move BigDecimal methods into EmbedResultSet20, will be non-abstract hence compiled with JSR169 libraries.

---->> EmbedResultSet20

JDBC 2.0, JDBC 3.0


EmbedBlob

JDBC 2.0, JDBC 3.0, JSR169


EmbedClob

JDBC 2.0, JDBC 3.0, JSR169


EmbedSavepoint30

JDBC 3.0, JSR169

Introduced in JDBC 3.0

EmbedDatabaseMetaData

JDBC 2.0, JDBC 3.0, JSR169


EmbedResultSetMetaData

JDBC 2.0, JDBC 3.0, JSR169


EmbedParameterMetaData


Does not implement java.sql.ParmaterMetaData, used internally by Network Server

---->> EmbedParameterMetaData30

JDBC 3.0

Introduced in JDBC 3.0, not part of JSR169 subset.




org.apache.derby.jdbc



InternalDriver


NEW – Replaces current use of Driver169 as the common internal class used as the JDBC object factory (connections, statements etc.). Does not implement java.sql.Driver as that is not common to all JDBC specifications.

This re-work is needed as Driver169 will indirectly reference java.sqlSavepoint and that class does not exist in JDBC 2.0.

---->> Driver169

JSR169

REWORKED to extend InternalDriver. Does not implement java.sql.Driver as that is not part of the JSR169 subset

---->> Driver20

JDBC 2.0

Extends InternalDriver rather than Driver169. Implements java.sql.Driver but is not part of the public api (org.apache.derby.jdbc.EmbeddedDriver is the public api Driver).

---->>Driver30

JDBC 3.0

Extends Driver20.Implements java.sql.Driver but is not part of the public api (org.apache.derby.jdbc.EmbeddedDriver is the public api Driver).

SimpleDataSource

JDBC 2.0, JDBC 3.0, JSR169

NEW - Public-api, implements java.sql.DataSource supports all of the properties of EmbeddedDataSource

EmbeddedDataSource

JDBC 2.0, JDBC 3.0

Public-api – implements classes not in J2ME/CDC/Foundation

EmbeddedXADataSource

JDBC 2.0, JDBC 3.0

Public-api – XADataSource not part of JSR169 subset

EmbeddedConnectionPoolDataSoure

JDBC 2.0, JDBC 3.0

Public-api – ConnectionPoolDataSource not part of JSR169 subset

EmbeddedDriver

JDBC 2.0, JDBC 3.0

Public-api – java.sql.Driver not part of JSR169 subset



DECIMAL Implementation

Other Items

Commits

Changes wil be made in a number of incremental steps: