db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ralf Lovec (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-3799) NullPointerException when accessing a clob through a pooled connection
Date Fri, 25 Jul 2008 13:57:31 GMT
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/%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 {
        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.


Mime
View raw message