[
https://issues.apache.org/jira/browse/DERBY-4549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4549:
--------------------------------------
Attachment: preprocess.diff
It looks like the problem is very similar to DERBY-1574, only that in this case
it's SubqueryNode that forgets to call preprocess() recursively on leftOperand.
The attached patch (preprocess.diff) makes the NPE go away, and all the lang
tests ran cleanly with it.
> NPE in JBitSet
> --------------
>
> Key: DERBY-4549
> URL: https://issues.apache.org/jira/browse/DERBY-4549
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.3.1.4, 10.5.3.0, 10.6.0.0
> Reporter: Murat Knecht
> Attachments: preprocess.diff
>
>
> A NPE occurs at org.apache.derby.iapi.util.JBitSet.or().
> A NPE occured at the same location before:
> http://issues.apache.org/jira/browse/DERBY-1574
> The bug was confirmed by Bryan Pendleton to show in the HEAD as well:
> http://mail-archives.apache.org/mod_mbox/db-derby-user/201002.mbox/%[email protected]%3e
> To reproduce:
> ----------------------
> CREATE TABLE ABC (ID int PRIMARY KEY NOT NULL);
> CREATE TABLE DEF (ID int PRIMARY KEY NOT NULL);
> SELECT *
> FROM ABC t1
> WHERE (SELECT DISTINCT t2.ID FROM DEF t2)
> IN (SELECT t3.ID FROM DEF t3)
> ----------------------
> Leads to
> error message:
> Error: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC:
> java.lang.NullPointerExceptionXJ001.U
> SQLState: XJ001
> ErrorCode: -1
> Stacktrace:
> java.lang.NullPointerException
> at org.apache.derby.iapi.util.JBitSet.or(Unknown Source)
> at org.apache.derby.impl.sql.compile.OptimizerImpl.<init>(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.Level2OptimizerImpl.<init>(Unknown
> Source)
> at
> org.apache.derby.impl.sql.compile.Level2OptimizerFactoryImpl.getOptimizerImpl(Unknown
> Source)
> at
> org.apache.derby.impl.sql.compile.OptimizerFactoryImpl.getOptimizer(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.ResultSetNode.getOptimizer(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.SelectNode.optimize(Unknown Source)
> at org.apache.derby.impl.sql.compile.SubqueryNode.optimize(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.SubqueryList.optimize(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.SelectNode.optimize(Unknown Source)
> at
> org.apache.derby.impl.sql.compile.DMLStatementNode.optimizeStatement(Unknown
> Source)
> at
> org.apache.derby.impl.sql.compile.CursorNode.optimizeStatement(Unknown Source)
> at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> at
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown
> Source)
> at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAStatement.prepare(Unknown Source)
> at org.apache.derby.impl.drda.DRDAStatement.explicitPrepare(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.parsePRPSQLSTT(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
> Cleanup action completed
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.