Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-4043

NullPointerException executing DELETE against table involved in DELETE CASCADE referential constraint

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Duplicate
    • Affects Version/s: 10.4.2.0
    • Fix Version/s: None
    • Component/s: SQL
    • Labels:
      None
    • Environment:
      Windows XP
      Use encrypted, soft-upgraded DB (from v10.3.2.1)
    • Bug behavior facts:
      Crash

      Description

      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

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                jrgchip Chip Hartney
              • Votes:
                1 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: