You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Bryan Pendleton (JIRA)" <ji...@apache.org> on 2010/01/30 23:17:34 UTC

[jira] Updated: (DERBY-4479) after rename table a to b then create table a statement execute cause null point exception

     [ https://issues.apache.org/jira/browse/DERBY-4479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Pendleton updated DERBY-4479:
-----------------------------------

    Attachment: patch.diff

Attached is my first proposal at resolving this issue.

As Knut suggested, it appears that the problem involves a missing dependency
between the CREATE TABLE statement and the table that it is creating.

For other types of statements, the dependency of the statement on the table
is generally registered during compilation. For example, here is a snip of code
from CreateIndexNode.bindStatement:

                /* Statement is dependent on the TableDescriptor */
                getCompilerContext().createDependency(td);

However, this isn't quite so easy with the CREATE TABLE statement, because
the table descriptor doesn't exist during compilation, since the table isn't
created until the statement is actually executed.

Therefore, the attached patch registers the dependency at execution time. At
the very end of CreateTableConstantAction.executeConstantAction, there is
some new code added to register a dependency from the CREATE TABLE
statement to the table we have just finished creating.

I haven't yet run the full regression suite, just the repro script. But any feedback
on the patch at this point is most welcome

> after rename table a to b then create table a statement execute cause null point exception
> ------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4479
>                 URL: https://issues.apache.org/jira/browse/DERBY-4479
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.1, 10.1.1.0, 10.2.2.0, 10.3.3.0, 10.4.2.0, 10.5.3.0, 10.6.0.0
>         Environment: Windows XP SP2
> java version "1.5.0_16"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
> Java HotSpot(TM) Client VM (build 1.5.0_16-b02, mixed mode, sharing)
>            Reporter: dragon lee
>            Assignee: Bryan Pendleton
>            Priority: Minor
>         Attachments: patch.diff
>
>
> step 1 : create original table
> 		CREATE TABLE BPEL_ARCHIVE (
> 			EVENT_TIME		CHAR(17) NOT NULL,
> 			BUSINESS_ID		VARCHAR(100) NOT NULL,
> 			EVENT_TYPE		INT,
> 			EVENT_CONTENT	BLOB,
> 			PRIMARY KEY ( EVENT_TIME )
> 		)
> step 2 : rename original table to backup table
>               RENAME TABLE BPEL_ARCHIVE TO BPEL_ARCHIVE_200912171148_200912171148
> step 3 : create original table
>              cause error...
> java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(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.executeUpdate(Unknown Source)
> 	at world.dragon.service.bpel.event.derby.DerbyArchiveEndpoint.switchTargetTable(DerbyArchiveEndpoint.java:295)
>         ...................................
> Caused by: java.lang.NullPointerException
> 	at org.apache.derby.impl.sql.execute.CreateIndexConstantAction.executeConstantAction(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.CreateConstraintConstantAction.executeConstantAction(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.CreateTableConstantAction.executeConstantAction(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.MiscResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	... 28 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.