Hi Tiago,

I believe that this behavior is deliberate and expected. I believe that permissions are not checked on every fetch from a ResultSet but that, instead, an in-flight ResultSet remains usable even though permissions may change after the ResultSet is opened. This, at least, is the sense I get from Dag's August 26, 2008 comment on http://issues.apache.org/jira/browse/DERBY-3223 Here's a quote from the comment:

"Any open result sets will remain usable as before, since these remain
open; even though the old (base)activation is no longer referenced
from the GenericActivationHolder, there is a reference to the old
activation from the result set, so it stays alive."

Dag may want to comment further.

Hope this helps,
-Rick


Tiago Espinha wrote:
Hey everyone,

I have been throwing tests at the SQL Roles. At this point I get a
certain behavior and perhaps Rick or Dag can give me some insight on
whether this is the expected behavior or if it is a bug.

So, I'm not totally sure of how cursors work underneath, and I decided
to run a simple test:

1. Create the role testCursor with SELECT privileges on table t1
2. Grant the role testCursor to the userTest
3. With userTest get a cursor for t1
4. Without closing the cursor, revoke the SELECT privileges to userTest
5. Try to move the cursor forward

Here the cursor keeps going until it reaches the end of the table;
this is, revoking the privileges doesn't affect the cursor. Is this
expected?

Tiago

Reply via email to