[ 
https://issues.apache.org/jira/browse/DERBY-4869?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12995305#comment-12995305
 ] 

Rick Hillegas commented on DERBY-4869:
--------------------------------------

Hi Kathey,

Those are good questions. Before answering them, let me first list a couple 
facts:

1) The AutoloadedDriver is the embedded driver which is registered with the 
DriverManager. When it was introduced, it is what was registered with 
DriverManager regardless of what VM you were using. It was used for JDK 1.4 on 
up.

2) The new getParentLogger() method raises a SQLFeatureNotSupportedException. 
This exception was introduced in Java 6. A method which raises this exception 
can't be compiled on Java 5 or lower.

3) As part of satisfying the JDBC 4.1 contract, when running on Java 7 or 
higher, the new getParentLogger() method must be found in the driver returned 
by DriverManager.getDriver( "jdbc:derby" ).

Two options occurred:

i) Put getParentLogger() in AutoloadedDriver but don't raise 
SQLFeatureNotSupportedException. This would mean actually implementing the 
Logger idiom for writing error messages and diagnostics. I have created 
DERBY-5007 to track this enhancement. It is an attractive feature but it is a 
mini-project and not part of JDBC 4.1. If we do get around to implementing 
DERBY-5007, then getParentLogger() will no longer have to raise 
SQLFeatureNotSupportedException. We can then move it down to AutoloadedDriver 
and remove the AutoloadedDriver40 class.

ii) The other option was to add a new AutoloadedDriver subclass to hold the new 
getParentLogger() method. This is the option I chose. The new subclass is 
called AutoloadedDriver40 because it is used if you are running on Java 6 on up 
(that is at JDBC level 4.0 or greater). This follows the general pattern of our 
JDBC implementation: When a new rev of the JDBC spec adds a method which COULD 
run on older VMs, we try to put the new method in the lowest level driver for 
which it can be compiled. You will notice that a great deal of our JDBC 3 and 
JDBC 4 functionality was actually pushed down into our JDBC 2 drivers.

I hope this makes sense. Please ask more questions if it doesn't.

Thanks,
-Rick

> Implement JDBC 4.1, the api increment introduced by Java 7
> ----------------------------------------------------------
>
>                 Key: DERBY-4869
>                 URL: https://issues.apache.org/jira/browse/DERBY-4869
>             Project: Derby
>          Issue Type: Improvement
>          Components: JDBC
>            Reporter: Rick Hillegas
>            Assignee: Rick Hillegas
>         Attachments: Drv41.java, JDBC_4.1_Changes.html, 
> derby-4869-01-ac-rs-getObject.diff, derby-4869-01-ad-rs-getObject.diff, 
> derby-4869-02-aa-cs-ps-addBatch.diff, derby-4869-02-ab-cs-ps-addBatch.diff, 
> derby-4869-03-aa-rs-getObject-errorCleanup.diff, 
> derby-4869-04-aa-rs-getObject-simplification.diff, 
> derby-4869-05-aa-rs-getObject-exception.diff, 
> derby-4869-06-aa-cs-getObject.diff, derby-4869-06-ab-cs-getObject.diff, 
> derby-4869-07-aa-timedisplacement.diff, derby-4869-08-ac-nullHandling.diff, 
> derby-4869-09-ac-abort.diff, derby-4869-10-aa-abortSecurityTest.diff, 
> derby-4869-11-aa-abortHidePrivates.diff, 
> derby-4869-12-aa-xaAndPooledAborts.diff, 
> derby-4869-13-aa-xaAndPooledAbortsSecurityManager.diff, 
> derby-4869-14-ac-closeOnCompletion.diff, derby-4869-15-aa-autoGenKeys.diff, 
> derby-4869-16-aa-clarifyStatementSpec.diff, 
> derby-4869-17-aa-statementTimeoutException.diff, 
> derby-4869-18-aa-getSetSchema.diff, 
> derby-4869-19-aa-getSetNetworkTimeout.diff, 
> derby-4869-20-aa-setSchemaFastPath.diff, 
> derby-4869-21-aa-implicitlyClosedResultSets.diff, 
> derby-4869-21-ab-implicitlyClosedResultSets.diff, 
> derby-4869-22-aa-unstableStatementTest.diff, derby-4869-23-aa-dbmd.diff, 
> derby-4869-24-ab-getParentLogger.diff, 
> derby-4869-25-aa-removeClosureCheck.diff, 
> derby-4869-26-aa-signatureTests.diff, derby-4869-27-aa-driver40.diff, 
> derby-4869-28-ab-autoloadExceptionFactory.diff, 
> derby-4869-29-aa-fixAutoloadTest.diff, 
> derby-4869-30-aa-unstableStatementTest.diff, 
> derby-4869-31-aa-unstableStatementTest.diff, 
> derby-4869-31-ab-unstableStatementTest.diff, 
> derby-4869-exp-01-aa-noTryCatch.diff, disable-tests.diff, timezone.diff
>
>
> This is a master issue logged to track our work implementing JDBC 4.1, the 
> changes to the java.sql and javax.sql packages introduced by Java 7.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to