db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristian Waagan (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (DERBY-4333) Exception in getMaxRows() after NullPointerException in SQLClob.readExternal() during query in table with CLOB column
Date Tue, 04 Aug 2009 08:45:14 GMT

     [ https://issues.apache.org/jira/browse/DERBY-4333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Kristian Waagan resolved DERBY-4333.
------------------------------------

       Resolution: Duplicate
    Fix Version/s: 10.6.0.0
                   10.5.2.0

This is a duplicate of DERBY-4245, merged to the 10.5 branch with revision 793565.
For reference, I'm posting the stack trace with line numbers:
java.lang.NullPointerException
        at org.apache.derby.iapi.types.SQLClob.readExternal(SQLClob.java:691)
        at org.apache.derby.impl.store.raw.data.StreamFileContainer.fetchNext(StreamFileContainer.java:860)
        at org.apache.derby.impl.store.raw.data.StreamFileContainerHandle.fetchNext(StreamFileContainerHandle.java:157)
        at org.apache.derby.impl.store.access.sort.MergeScan.mergeARow(MergeScan.java:231)
        at org.apache.derby.impl.store.access.sort.MergeScan.init(MergeScan.java:199)
        at org.apache.derby.impl.store.access.sort.MergeSort.openSortScan(MergeSort.java:263)
        at org.apache.derby.impl.store.access.RAMTransaction.openSortScan(RAMTransaction.java:1920)
        at org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(SortResultSet.java:323)
        at org.apache.derby.impl.sql.execute.SortResultSet.openCore(SortResultSet.java:268)
        at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(BasicNoPutResultSetImpl.java:245)
        at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:416)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:297)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1648)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1303)
        at org.apache.derby.impl.drda.DRDAStatement.execute(Unknown Source)
        at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
        at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)

I think the easiest way to confirm this, is for the reporter to try running with derby.jar
from the 10.5.2 release candidate.
NOTE: Due to the wrong result bug DERBY-4331, the release candidate should maybe not be used
in production (at least you should investigate if the bug affects your application).

> Exception in getMaxRows() after NullPointerException in  SQLClob.readExternal() during
query in table with CLOB column
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4333
>                 URL: https://issues.apache.org/jira/browse/DERBY-4333
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.1.1
>            Reporter: Jason Ward
>            Assignee: Kristian Waagan
>             Fix For: 10.5.2.0, 10.6.0.0
>
>         Attachments: derby.log, derby_10.5_debug.zip
>
>
> Observed derby 10.5.1.1 throwing exception in getMaxRows() when querying table with greater
than ~20K rows and CLOB column.
> The exception is : 
> java.sql.SQLException: No current connection.
> 	at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
> 	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
> 	at org.apache.derby.client.am.Statement.getMaxRows(Unknown Source)
> 	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.getMaxRows(NewProxyPreparedStatement.java:1200)
> 	at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:298)
> 	at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:234)
> 	at org.hibernate.loader.Loader.getResultSet(Loader.java:1826)
> 	at org.hibernate.loader.Loader.doQuery(Loader.java:697)
> 	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
> 	at org.hibernate.loader.Loader.doList(Loader.java:2232)
> 	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
> 	at org.hibernate.loader.Loader.list(Loader.java:2124)
> 	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
> 	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597)
> 	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
> 	at com.jw.TestMain.query(TestMain.java:175)
> 	at com.jw.TestMain.main(TestMain.java:189)
> Caused by: org.apache.derby.client.am.SqlException: No current connection.
> 	at org.apache.derby.client.am.Statement.checkForClosedStatement(Unknown Source)
>  
> In digging into the stacktrace a little more it seems that hibernates call to getMaxRows()
blows up because checkForClosedStatement() throws the SQLException, but I have no idea why.
(I've verified the connection is open prior to executing hibenates list(), and it happens
too quickly to be a true timeout.) 
>  
> It only happens once my table reaches any significant size ( > 20K rows), and only
on this particular table which includes a CLOB column. 
> Curiously 10.4.2.1 does not exhibit this behavior. 
> I have prepared a small eclipse project which repros the error and will attach.

-- 
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