[ http://issues.apache.org/jira/browse/DERBY-1589?page=all ]
Bryan Pendleton updated DERBY-1589: ----------------------------------- Attachment: createDependency.diff After some more testing, I think that this patch is a reasonable fix. Attached is createDependency.diff, which changes the compiler so that it creates a dependency from a statement with a FOREIGN KEY clause in it to the table which is referenced by that clause. The patch also contains a simple regression test, based on the original bug script. derbyall passed without errors. Please have a look and tell me what you think of this patch proposal. > 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 > > Attachments: createDependency.diff > > > 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