Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
10.4.1.3, 10.5.1.1
-
None
-
------------------ Java-Informationen ------------------
Java-Version: 1.6.0
Java-Anbieter: Sun Microsystems Inc.
Java-Home: C:\Program Files\Java\jdk1.6.0\jre
Java-Klassenpfad: C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbyclient.jar;C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbytools.jar;C:\PHS\Dvlp\Schop\derby-err\build\classes
Name des Betriebssystems: Windows XP
Architektur des Betriebssystems: x86
Betriebssystemversion: 5.1
Java-Benutzername: Ralf Lovec
Java-Benutzerausgangsverzeichnis: C:\Documents and Settings\Ralf Lovec
Java-Benutzerverzeichnis: C:\PHS\Dvlp\Schop\derby-err
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
--------- Derby-Informationen --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbytools.jar] 10.4.1.3 - (648739)
[C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbyclient.jar] 10.4.1.3 - (648739)
------------------------------------------------------
----------------- Informationen zur L�ndereinstellung -----------------
Aktuelle L�ndereinstellung: [Deutsch/Deutschland [de_DE]]
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [cs]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [de_DE]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [es]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [fr]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [hu]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [it]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ja_JP]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ko_KR]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [pl]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [pt_BR]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ru]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [zh_CN]
Version: 10.4.1.3 - (648739)
Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [zh_TW]
Version: 10.4.1.3 - (648739)
------------------------------------------------------
------------------ Java-Informationen ------------------ Java-Version: 1.6.0 Java-Anbieter: Sun Microsystems Inc. Java-Home: C:\Program Files\Java\jdk1.6.0\jre Java-Klassenpfad: C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbyclient.jar;C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbytools.jar;C:\PHS\Dvlp\Schop\derby-err\build\classes Name des Betriebssystems: Windows XP Architektur des Betriebssystems: x86 Betriebssystemversion: 5.1 Java-Benutzername: Ralf Lovec Java-Benutzerausgangsverzeichnis: C:\Documents and Settings\Ralf Lovec Java-Benutzerverzeichnis: C:\PHS\Dvlp\Schop\derby-err java.specification.name: Java Platform API Specification java.specification.version: 1.6 --------- Derby-Informationen -------- JRE - JDBC: Java SE 6 - JDBC 4.0 [C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbytools.jar] 10.4.1.3 - (648739) [C:\PHS\db-derby\db-derby-10.4.1.3-bin\lib\derbyclient.jar] 10.4.1.3 - (648739) ------------------------------------------------------ ----------------- Informationen zur L�ndereinstellung ----------------- Aktuelle L�ndereinstellung: [Deutsch/Deutschland [de_DE]] Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [cs] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [de_DE] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [es] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [fr] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [hu] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [it] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ja_JP] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ko_KR] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [pl] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [pt_BR] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [ru] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [zh_CN] Version: 10.4.1.3 - (648739) Es wurde Unterst�tzung f�r die folgende L�ndereinstellung gefunden: [zh_TW] Version: 10.4.1.3 - (648739) ------------------------------------------------------
Description
After returning a pooled connection to the pool and getting it again a NullPointerException is thrown when a clob field is accessed again. This may be related to the following post: http://mail-archives.apache.org/mod_mbox/db-derby-user/200803.mbox/%3C47CD3431.5020205@sun.com%3E
Here is the stack trace:
java.lang.NullPointerException
at org.apache.derby.client.am.PreparedStatement.setIntX(Unknown Source)
at org.apache.derby.client.am.CallableLocatorProcedures.clobGetLength(Unknown Source)
at org.apache.derby.client.am.Clob.getLocatorLength(Unknown Source)
at org.apache.derby.client.am.Lob.sqlLength(Unknown Source)
at org.apache.derby.client.am.Clob.length(Unknown Source)
at org.apache.derby.client.am.Cursor.getString(Unknown Source)
at org.apache.derby.client.am.ResultSet.getString(Unknown Source)
at derbyerr.Main.main(Main.java:65)
Here is the code to reproduce the problem:
package derbyerr;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.PooledConnection;
import org.apache.derby.jdbc.ClientConnectionPoolDataSource;
public class Main {
public static void main (String[] args) {
org.apache.derby.tools.sysinfo.main (args) ;
ClientConnectionPoolDataSource creator = new ClientConnectionPoolDataSource () ;
// There should be an empty db named testdb
creator.setDatabaseName ("testdb") ;
try {
PooledConnection pc = creator.getPooledConnection () ;
Connection c = pc.getConnection () ;
PreparedStatement ps ;
ResultSet rs ;
String s ;
// Drop the table "test", if it exsists
try
catch (Exception e) {
}
// Create a test table with a clob field
ps = c.prepareStatement ("create table test (pkey varchar(255) not null primary key, value clob)") ;
ps.execute () ;
ps.close () ;
// Insert a record
ps = c.prepareStatement ("insert into test values ('123', 'abc')") ;
ps.execute () ;
ps.close () ;
// Query the record and...
ps = c.prepareStatement ("select * from test") ;
rs = ps.executeQuery () ;
rs.next () ;
// ...access the clob field - this works
s = rs.getString (2) ;
assert s.equals ("abc") ;
rs.close () ;
ps.close () ;
// Simulate connection pooling: close the connection and get it again
c.close () ;
c = pc.getConnection () ;
// Now again query the record...
ps = c.prepareStatement ("select * from test") ;
rs = ps.executeQuery () ;
rs.next () ;
// ...and access the clob - this fails
s = rs.getString (2) ;
assert s.equals ("abc") ;
rs.close () ;
ps.close () ;
} catch (Exception e)
{ e.printStackTrace () ; }}
}