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

Knut Anders Hatlen updated DERBY-1632:
--------------------------------------

    Issue & fix info: [Repro attached]
             Urgency: Normal

Triaged for 10.5.2.

> During revoke privilege, Derby does not look for replacement privilege for 
> the dependent objects and simply drops the dependent objects. This is not SQL 
> compliant and should be fixed.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1632
>                 URL: https://issues.apache.org/jira/browse/DERBY-1632
>             Project: Derby
>          Issue Type: Bug
>          Components: Documentation, SQL
>    Affects Versions: 10.2.1.6
>            Reporter: Mamta A. Satoor
>
> Currently, when an object (trigger/constraint/view) is created, it depends on 
> the available required privilege at the user level. If none found, it depends 
> on the available required privilege at PUBLIC level. If none exist both at 
> user level or PUBLIC level, then create object fails.
> To reiterate, if the privilege is found say at the user level, the object 
> depends on that privilege. Consider the case, where the privilege also exist 
> at the PUBLIC level. Later, when a revoke privilege is issued at the user 
> level, the dependent object gets a revoke invalidation action and the 
> dependent object drops itself. Instead, the dependent object should make 
> itself depend on the PUBLIC level privilege. This does not happen in Derby at 
> this point and this behavior is not SQL compliant and should be fixed.
> eg for the problem at hand
> user1
> create table t1
> grant select on t1 to user2, public
> user2
> create view v1 as select * from user1.t1
> -- this view will depend on the user level select privilege on table t1
> user1
> revoke select on t1 from user2
> -- this revoke will end up dropping the view. The view could have made itself 
> depend on the PUBLIC level select privilege
> --  on t1 but that doesn't happen currently
> another eg for the same problem
> user1
> create table t1
> grant select on t1 to public
> user2
> create view v1 as select * from user1.t1
> -- this view will depend on the PUBLIC level select privilege on table t1
> user1
> grant select on to to user2
> revoke select on t1 from public
> -- this revoke ends up dropping the view user2.v1 eventhough there is a user 
> level SELECT privilege availble
> --  on user1.t1
> So, in brief, the problem is that when a dependent object gets a revoke 
> invalidation action, it does not check if there is another privilege 
> available to replace the privilege being revoked. Instead, they just go ahead 
> and drop themselves.
> Until we fix this behavior, we should document it so the user will know what 
> to expect for same privilege being available at different levels.

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

Reply via email to