[ 
https://issues.apache.org/jira/browse/DERBY-4043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12669537#action_12669537
 ] 

Knut Anders Hatlen commented on DERBY-4043:
-------------------------------------------

Regarding the stack traces not being identical, there is a comment in 
DERBY-2353 saying that the code had been rearranged after the bug was logged 
and it was asked what the stack trace looked like now. The rearranging of the 
code could explain the difference in the stack trace and why the NPE now occurs 
in different situations than before.

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

Reply via email to