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

Reply via email to