[ http://issues.apache.org/jira/browse/DERBY-1574?page=all ]
Mike Matrigali updated DERBY-1574:
----------------------------------
If at all possible always include the full stack trace from derby.log when
reporting a bug. Here is the
stack from the original problem against the trunk showing that the issue is in
the optimizer:
2006-07-25 20:19:59.104 GMT Thread[main,5,main] (XID = 131), (SESSIONID = 0), (D
ATABASE = wombat), (DRDAID = null), Failed Statement is: UPDATE t1^M
SET i = COALESCE(^M
(SELECT i FROM t2 WHERE t2.i=t1.i),^M
0)^M
java.lang.NullPointerException^M
at org.apache.derby.iapi.util.JBitSet.or(JBitSet.java:241)^M
at org.apache.derby.impl.sql.compile.OptimizerImpl.<init>(OptimizerImpl.java
:254)^M
at org.apache.derby.impl.sql.compile.Level2OptimizerImpl.<init>(Level2Optimi
zerImpl.java:76)^M
at org.apache.derby.impl.sql.compile.Level2OptimizerFactoryImpl.getOptimizer
Impl(Level2OptimizerFactoryImpl.java:98)^M
at org.apache.derby.impl.sql.compile.OptimizerFactoryImpl.getOptimizer(Optim
izerFactoryImpl.java:159)^M
at org.apache.derby.impl.sql.compile.ResultSetNode.getOptimizer(ResultSetNod
e.java:1635)^M
at org.apache.derby.impl.sql.compile.SelectNode.optimize(SelectNode.java:163
9)^M
at org.apache.derby.impl.sql.compile.SubqueryNode.optimize(SubqueryNode.java
:1683)^M
at org.apache.derby.impl.sql.compile.SubqueryList.optimize(SubqueryList.java
:121)^M
at org.apache.derby.impl.sql.compile.SelectNode.optimize(SelectNode.java:166
4)^M
at org.apache.derby.impl.sql.compile.DMLStatementNode.optimize(DMLStatementN
ode.java:328)^M
at org.apache.derby.impl.sql.compile.DMLModStatementNode.optimize(DMLModStat
ementNode.java:1352)^M
at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.ja
va:395)^M
at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:
118)^M
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareIn
ternalStatement(GenericLanguageConnectionContext.java:713)^M
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:567
)^M
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:516
)^M
at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:313)^M
at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)^M
at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:310)^M
at org.apache.derby.impl.tools.ij.Main.go(Main.java:207)^M
at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:173)^M
at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)^M
at org.apache.derby.tools.ij.main(ij.java:60)^M
Cleanup action completed^M
Subsequent errors in raw store indicates there is also an error handling
problem in the optimizer code
which leaves the execution context unusable for subsequent queries. The error
is:
ERROR 40XT0: An internal error was identified by RawStore module.^M
at org.apache.derby.iapi.error.StandardException.newException(StandardExcept
ion.java:294)^M
at org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java:1772)^
M
at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java:1271)^M
at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Ope
nConglomerate.java:865)^M
at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java:614)^M
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTra
nsaction.java:478)^M
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTra
nsaction.java:1315)^M
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaInde
x(DataDictionaryImpl.java:7339)^M
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(Data
DictionaryImpl.java:1532)^M
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(
DataDictionaryImpl.java:1442)^M
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Query
TreeNode.java:1504)^M
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Query
TreeNode.java:1456)^M
at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(FromB
aseTable.java:2379)^M
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(FromBase
Table.java:2107)^M
at org.apache.derby.impl.sql.compile.FromList.bindTables(FromList.java:300)^
M
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(SelectNode.
java:472)^M
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(DMLStatemen
tNode.java:220)^M
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.
java:158)^M
at org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java:252)^M
at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.ja
va:344)^M
at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:
118)^M
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareIn
ternalStatement(GenericLanguageConnectionContext.java:713)^M
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:567
)^M
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:516
)^M
at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:313)^M
at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)^M
at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:312)^M
at org.apache.derby.impl.tools.ij.Main.go(Main.java:207)^M
at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:173)^M
at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)^M
at org.apache.derby.tools.ij.main(ij.java:60)^M
Cleanup action completed^M
> NullPointerException in UPDATE with COALESCE and subquery
> ---------------------------------------------------------
>
> Key: DERBY-1574
> URL: http://issues.apache.org/jira/browse/DERBY-1574
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.1.3.1
> Environment: Java 1.5.0_06
> Reporter: Christian d'Heureuse
> Priority: Minor
>
> The following statements generate a NullPointerException:
> CREATE TABLE t1 (i INTEGER);
> CREATE TABLE t2 (i INTEGER);
> UPDATE t1
> SET i = COALESCE(
> (SELECT i FROM t2 WHERE t2.i=t1.i),
> 0);
> Any further SQL statements generate an internal error in RawStore, e.g.:
> SELECT * FROM t1;
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira