[
https://issues.apache.org/jira/browse/DERBY-4043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12669396#action_12669396
]
Chip Hartney commented on DERBY-4043:
-------------------------------------
You are correct, Knut. The error does not occur with logQueryPlan=false, only
true. At least in my v10.4.2.0 test.
I can't be sure if this is the same as DERBY-2353...the stack traces are not
the same, but somewhat similar...both failing in NoRowsResultSetImpl in the end
and both, apparently only occurring with logQueryPlan=true.
The really interesting note, I think, is Bryan's in that issue...where he
refers back to DERBY-3091...reported in Sept 2007...by me! I only now remember
that issue and I was suspicious that it hadn't really been resolved then.
However, it was not a big problem using logQueryPlan=false in my distributions
to our users...so I didn't pursue it any further. That failed in v10.2.2.0 and
v10.2.2.1, but not v10.3.2.1.
> NullPointerException executing DELETE against table involved in DELETE
> CASCADE referential constraint
> -----------------------------------------------------------------------------------------------------
>
> Key: DERBY-4043
> URL: https://issues.apache.org/jira/browse/DERBY-4043
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.4.2.0
> Environment: Windows XP
> Use encrypted, soft-upgraded DB (from v10.3.2.1)
> Reporter: Chip Hartney
>
> I am incurring a NullPointerException in the DELETE CASCADE logic of
> v10.4.2.0. After the error, the connection is lost.
> The following is reproducible in my env in which I have a DB created under
> v10.3.2.1 being accessed through IJ using the v10.4.2.0 libraries. (I have
> not tested against other scenarios.) Note, however, that variations on this
> sequence do not recreate the problem...such as leaving off the PK constraints
> or adding data to the tables before creating the constraints or leaving out
> the "Entry" record.
> ij> CREATE TABLE "Catalog" ("Id" INTEGER NOT NULL GENERATED ALWAYS AS
> IDENTITY (START WITH 1, INCREMENT BY 1), "Code" VARCHAR(8) NOT NULL, "Name"
> VARCHAR(64) NOT NULL, "SeqNo" INTEGER NOT NULL DEFAULT 0);
> 0 rows inserted/updated/deleted
> ij> ALTER TABLE "Catalog" ADD CONSTRAINT "SQL171213084206750" PRIMARY KEY
> ("Id");
> 0 rows inserted/updated/deleted
> ij> CREATE TABLE "Entry" ("Id" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
> (START WITH 1, INCREMENT BY 1), "CatalogId" INTEGER NOT NULL, "ProductId"
> INTEGER NOT NULL, "PageNo" INTEGER NOT NULL, "SeqNo" INTEGER NOT NULL);
> 0 rows inserted/updated/deleted
> ij> ALTER TABLE "Entry" ADD CONSTRAINT "SQL171213084210150" PRIMARY KEY
> ("Id");
> 0 rows inserted/updated/deleted
> ij> ALTER TABLE "Entry" ADD CONSTRAINT "Entry_FK_CatalogId1" FOREIGN KEY
> ("CatalogId") REFERENCES "Catalog" ("Id") ON DELETE CASCADE ON UPDATE NO
> ACTION;
> 0 rows inserted/updated/deleted
> ij> insert into "Catalog" ("Code", "Name") values ('a', 'a');
> 1 row inserted/updated/deleted
> ij> insert into "Entry" ("CatalogId", "ProductId", "PageNo", "SeqNo") values
> (1, 1, 1, 1);
> 1 row inserted/updated/deleted
> ij> delete from "Catalog";
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> ij> select * from "Catalog";
> ERROR 08003: No current connection.
> The stack trace from derby.log is:
> 2009-01-31 20:12:48.890 GMT Thread[main,5,main] (XID = 8949829), (SESSIONID =
> 0), (DATABASE = OrderEntryDB), (DRDAID = null), Cleanup action starting
> 2009-01-31 20:12:48.890 GMT Thread[main,5,main] (XID = 8949829), (SESSIONID =
> 0), (DATABASE = OrderEntryDB), (DRDAID = null), Failed Statement is: delete
> from "Catalog"
> java.lang.NullPointerException
> at org.apache.derby.impl.sql.execute.NoRowsResultSetImpl.close(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.DeleteResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.open(Unknown Source)
> at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> at org.apache.derby.tools.ij.main(Unknown Source)
> 2009-01-31 20:12:48.890 GMT Thread[main,5,main] Equally severe exception
> raised during cleanup (ignored) null
> java.lang.NullPointerException
> at org.apache.derby.impl.sql.execute.NoRowsResultSetImpl.close(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.DeleteResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.cleanUp(Unknown
> Source)
> at
> org.apache.derby.impl.sql.conn.GenericStatementContext.cleanupOnError(Unknown
> Source)
> at
> org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> at org.apache.derby.tools.ij.main(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.