New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Autonomous transactions wrongly inherit run-time flags of "parent" transaction [CORE3525] #3882
Comments
Modified by: @hvladassignee: Vlad Khorsun [ hvlad ] |
Modified by: @hvladstatus: Open [ 1 ] => Resolved [ 5 ] resolution: Fixed [ 1 ] Fix Version: 2.5.1 [ 10333 ] Fix Version: 3.0 Alpha 1 [ 10331 ] |
Modified by: @dyemanovsummary: Autonomous transactions should not inherit run-time flags of "parent" transaction => Autonomous transactions wrongly inherits run-time flags of "parent" transaction |
Modified by: @dyemanovsummary: Autonomous transactions wrongly inherits run-time flags of "parent" transaction => Autonomous transactions wrongly inherit run-time flags of "parent" transaction |
Modified by: @pcisarstatus: Resolved [ 5 ] => Closed [ 6 ] |
Commented by: @pavel-zotov Can anyone explain me, what exactly flags should be inherited by ATX ?
|
Commented by: @hvlad > Can anyone explain me, what exactly flags should be inherited by ATX ? From tra.h // flags derived from TPB, see also transaction_options() at tra.cpp |
Commented by: @pavel-zotov SQL> select * from mon$transactions; Seems that mon$transactions can`t help in defining of TRA_ignore_limbo & TRA_restart_requests values. |
Commented by: @hvlad > Seems that mon$transactions can`t help in defining of TRA_ignore_limbo & TRA_restart_requests values. The ticket was mostly about *not* copying flags that shouln't be copied. |
Commented by: @pavel-zotov > The ticket was mostly about *not* copying flags that shouln't be copied. That's mean that test should check only following flags: 382 const ULONG TRA_system = 0x1L; // system transaction But no any field in mon$transactions can be found for them - so, I'll try to find something in FB-Python doc ( e.g. in "Advanced Transaction Control"). It's interesting also that [NO] WAIT | LOCK_TIMEOUT parameter is not specified: (TRA_degree3 | TRA_readonly | TRA_ignore_limbo | TRA_read_committed | 2) nor in enumeration "Flag definitions for tra_flags". So what about current behaviour (implicit "wait"-inheritance in ATx) - is it wrong or no ? |
Commented by: @hvlad a) You can't check flags that is not set using user API ( for ex.i.e. internal run-time flags). |
Modified by: @pavel-zotovQA Status: No test |
Submitted by: @hvlad
Currently autonomous transactions inherits characteristics of "parent" transaction (such as isolation level, read-only, wait mode).
Code that starts autonomous transaction just copied "parent" transaction's flags. This is wrong and at least inefficient.
Autonomous transaction should copy only flags which describes transaction characteristics, i.e. flags which could be set by transaction_options() function.
Commits: eb41aaa ecb52d3
The text was updated successfully, but these errors were encountered: