[ http://issues.apache.org/jira/browse/DERBY-1589?page=comments#action_12434722 ] Bryan Pendleton commented on DERBY-1589: ----------------------------------------
Thanks Mamta! That is very helpful. My feeling is that the basic dependency manager issue is generic, but the NPE symptom is specific to SQL Auth. I think that without SQL Auth in place, the system is re-using the old prepared statement without re-preparing it, but in this case there are no errors that result. That is, SQL Auth converts this scenario from "harmless incorrect re-use of an invalid prepared statement" to "NPE in permission descriptor handling due to incorrect re-use of an invalid prepared statement". I will work up a complete patch with regression tests, comments, etc. Thanks again for the feedback and extra testing. > 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
