0.9.1 - #transaction may wrongly end enclosing transaction #19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
rdbi-0.9.1
RDBI::Database#transaction
may incorrectly end the enclosing transaction at the conclusion of a nested transaction block, if the user has already explicitly COMMITted or ROLLBACKed the inner transaction.Presently,
#transaction
, checks only to see that thedbh
is within any transaction, so it cannot tell whether a block concludes in the same (possibly nested) transaction which it began.The impact is likely limited, as nested transaction support (SAVEPOINTs?) is not to my knowledge implemented in any supported backend.
Example
Presuming a database with nested transaction support:
# initial tx depth -> 0
Proposed Fix
This pull request simply has
#transaction
remember its tx depth upon entry, and only#commit
or#rollback
if the depth is as expected after leaving the user block.Tests
I have no tests for this fix.