db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1589) CREATE TABLE throws NullPointerException in Derby SQL Standard Authorization after DROPs and REVOKES
Date Thu, 14 Sep 2006 05:32:23 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1589?page=comments#action_12434592 ] 
            
Bryan Pendleton commented on DERBY-1589:
----------------------------------------

I think that the problem here may be that FKConstraintDefinitionNode, which is the
compiler implementation code for the "foreign key ... references ... " constraint
in the compiler, is not properly registering that the statement containing the
foreign key constraint has a dependency on the table being referenced. Due
to the lack of the dependency, when the referenced table (t11ConstraintTest)
is dropped, the statement is not invalidated.

The following diff seems to make the test script pass. More study and testing
is needed, plus the construction of a real patch proposal.

Index: FKConstraintDefinitionNode.java
===================================================================
--- FKConstraintDefinitionNode.java     (revision 441800)
+++ FKConstraintDefinitionNode.java     (working copy)
@@ -104,6 +104,8 @@

                getConstraintMoniker(),

                refTableName.getTableName());

+               getCompilerContext().createDependency(td);
+
                // Verify if REFERENCES_PRIV is granted to columns referenced
                getCompilerContext().pushCurrentPrivType(getPrivType());


> CREATE TABLE throws NullPointerException in Derby SQL Standard Authorization after DROPs
and REVOKES
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1589
>                 URL: http://issues.apache.org/jira/browse/DERBY-1589
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.1.0
>            Reporter: Daniel John Debrunner
>         Assigned To: Bryan Pendleton
>             Fix For: 10.2.1.0
>
>
> Currently, the last sql statement in following set of sql statements will raise a null
pointer exception
> connect 'jdbc:derby:c:/dellater/dbmaintest2;create=true' user 'mamta1' as mamta1;
> create table t11ConstraintTest (c111 int not null, c112 int not null, primary key (c111,
c112));
> grant references on t11ConstraintTest to mamta3;
> connect 'jdbc:derby:c:/dellater/dbmaintest2;create=true' user 'mamta3' as mamta3;
> drop table t31ConstraintTest;
> -- the following statement should remember that it depends on REFERENCES privilege on
mamta1.t11ConstraintTest
> create table t31ConstraintTest (c311 int, c312 int, foreign key(c311, c312) references
mamta1.t11ConstraintTest);
> drop table t31ConstraintTest;
> set connection mamta1;
> -- following should revoke all the privileges granted on it
> drop table t11ConstraintTest;
> create table t11ConstraintTest (c111 int not null, c112 int not null, primary key (c111,
c112));
> grant references(c111) on t11ConstraintTest to mamta3;
> grant references(c112) on t11ConstraintTest to PUBLIC;
> --connect 'jdbc:derby:c:/dellater/dbmaintest2;create=true' user 'mamta3' as mamta3;
> set connection mamta3;
> drop table t31ConstraintTest;
> -- following sql should recompie itself because the earlier plan depended on a privilege
which doesn't
> -- exist anymore. Instead, new privileges have been granted and the plan for following
statement should depend
> -- on those new privileges
> create table t31ConstraintTest (c311 int, c312 int, foreign key(c311, c312) references
mamta1.t11ConstraintTest); 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message