• Konstantin Osipov's avatar
    Draft patch that fixes and a sketches test cases for: · 946fad35
    Konstantin Osipov authored
    Bug#20837 Apparent change of isolation level during transaction,
    Bug#46527 COMMIT AND CHAIN RELEASE does not make sense,
    Bug#53343 completion_type=1, COMMIT/ROLLBACK AND CHAIN don't 
    preserve the isolation level
    Bug#53346 completion_type has strange effect in a stored 
    procedure/prepared statement
    
    Make thd->tx_isolation mean strictly "current transaction 
    isolation level"
    Make thd->variables.tx_isolation mean "current session isolation
    level".
    The current transaction isolation level is now established
    at transaction start. If there was a SET TRANSACTION
    ISOLATION LEVEL statement, the value is taken from it.
    Otherwise, the session value is used.
    A change in a session value, made while a transaction is active,
    whereas still allowed, no longer has any effect on the
    current transaction isolation level. This is an incompatible
    change.
    A change in a session isolation level, made while there is
    no active transaction, overrides SET TRANSACTION statement,
    if there was any.
    Changed the impelmentation to not look at @@session.completion_type
    in the parser, and thus fixed Bug#53346.
    Changed the parser to not allow AND NO CHAIN RELEASE,
    and thus fixed Bug#46527.
    Changed the transaction API to take the current transaction
    isolation level into account:
    - BEGIN/COMMIT now do preserve the current transaction
    isolation level if chaining is on.
    - implicit commit, XA COMMIT or XA ROLLBACK or autocommit don't.
    946fad35
transaction.cc 17.6 KB