NullPointerException when accessing a clob through a pooled connection
----------------------------------------------------------------------
Key: DERBY-3799
URL: https://issues.apache.org/jira/browse/DERBY-3799
Project: Derby
Issue Type: Bug
Components: Network Client
Affects Versions: 10.4.1.3
Environment: ------------------ 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)
------------------------------------------------------
Reporter: Ralf Lovec
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/[EMAIL
PROTECTED]
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 {
ps = c.prepareStatement ("drop table test") ;
ps.execute () ;
ps.close () ;
} 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 () ;
}
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.