[
https://issues.apache.org/jira/browse/DERBY-2462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491683
]
A B commented on DERBY-2462:
----------------------------
Thank you _very_ much for the detailed analysis, Dag. I feel better about the
"safety" of your v3 changes after reading your previous comment.
> Maybe a (even more) generally useful method could be:
>
> public boolean isHeldAfterCommit() throws StandardException
> {
> return (scan_state == SCAN_HOLD_INIT ||
> scan_state == SCAN_HOLD_INPROGRESS);
> }
>
> that is, if this returns true, the scan can always be reopened
> (although in the case at hand, only the second state tested for may
> occur as shown above).
>
> What do you think?
+1, I like this idea even better. Thank you for the suggestion and for your
willingness to implement it.
> I manually modified the test to verify that for all three variants (join,
> distinct and cursor),
> this happened. If you this it is still advisable, I can add those tests cases
> to SpillHash.
If it's not too much work I think this would be good. I'm sure there are tests
elsewhere to check the general concept of cursor holdability across commits,
but it might be nice to have a test case for the specific scenario of a spilled
DiskHashtable.
> If you agree, I will make a version of the patch with the new
> isHeldAfterCommit outlined above.
Sounds great. Thanks again for your continued work with this, and for your
prompt consideration of my feedback.
> org.apache.derby.impl.store.access.BackingStoreHashTableFromScan does not
> honor ResultSet holdability
> -----------------------------------------------------------------------------------------------------
>
> Key: DERBY-2462
> URL: https://issues.apache.org/jira/browse/DERBY-2462
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6, 10.2.2.0
> Environment: Test under Windows Vista, Java 1.4.2_13
> Reporter: Jeff Clary
> Assigned To: Dag H. Wanvik
> Attachments: DERBY-2462-1.diff, DERBY-2462-1.stat, DERBY-2462-2.diff,
> DERBY-2462-2.stat, DERBY-2462-3.diff, DERBY-2462-3.stat,
> DerbyHoldabilityTest.java
>
>
> After an unrelated statement on the same connection commits, and after some
> number of successful calls to ResultSet.next(), a subsequent call to
> ResultSet.next() throws an SQLException with a message like: The heap
> container with container id Container(-1, 1173965368428) is closed. This
> seems to be related to the hard-coded passing of false to the super in the
> constructor of
> org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.
> Steps to reproduce:
> 1. Execute a statement on a connection that returns a result set.
> 2. Execute a second statement on the same connection that modifies the
> database and commits.
> 3. Call next() on the first result set until the exception is thrown.
> Note that the number of rows that can be successfully retrieved from the
> result set seems to be related to the amount of data per row. Increasing the
> number of columns in the result set or the length of the columns causes the
> exception to be taken sooner.
> The attached test program demonstrates the issue.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.