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

Rick Hillegas updated DERBY-6434:
---------------------------------

    Attachment: derby-6434-01-ac-correctInsertPrivs.diff

Attaching derby-6434-01-ac-correctInsertPrivs.diff. This rev corrects some 
additional problems which surfaced when I ran the full regression tests on the 
previous rev of the patch. I will re-run the regression tests now.

This rev corrects two problems:

1) A canonized wrong result in GeneratedColumnsPermsTest. There was a comment 
left over from work on DERBY-6429, noting that this wrong result would need to 
be addressed when INSERT privileges were corrected.

2) A test case in RolesConferredPrivilegesTest broke because the previous rev 
altered the dependency checking for CHECK constraints which rely on role-based 
privileges.

The fix for 2 is simple but it was tricky to find. I had expected that all 
dependencies would be identified at bind() time. So I was surprised to find 
that some in-memory dependencies are added by the execute() phase of statement 
evaluation. This looks wrong to me. In a private discussion with Dag, we 
theorized that the execute() time additions are a holdover from how the code 
behaved before we added support for definer's rights.

The fix for 2 is to make ConstraintDescriptor.makeInvalid() call 
DependencyManager.invalidateFor() on the table descriptor after the CHECK 
constraint is implicitly dropped as a consequence of revoking a privilege. This 
forces Derby to take the same code path pursued when the CHECK constraint is 
explicitly dropped.

I am highly suspicious of the many calls to DependencyManager.addDependency() 
which we see in the execute() time ConstantActions. Analyzing these suspicious 
calls is outside the scope of this JIRA. I will file a follow-on issue for this 
investigation.


Touches the following additional files:

------------------

M       
java/engine/org/apache/derby/iapi/sql/dictionary/ConstraintDescriptor.java

The fix for item 2.

------------------

M       
java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsPermsTest.java

The fix for item 1.


> Incorrect privileges may be required for INSERT and DELETE statements.
> ----------------------------------------------------------------------
>
>                 Key: DERBY-6434
>                 URL: https://issues.apache.org/jira/browse/DERBY-6434
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.11.0.0
>            Reporter: Rick Hillegas
>         Attachments: derby-6434-01-aa-correctInsertPrivs.diff, 
> derby-6434-01-ac-correctInsertPrivs.diff
>
>
> This issue is a place to address problems with INSERT and DELETE statements 
> similar to the problems affecting UPDATE statements recorded on DERBY-6429. 
> In particular, DERBY-6432 and DERBY-6433 list some of the problems with 
> INSERT statements.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to