• Davi Arnaut's avatar
    Bug#54453: Failing assertion: trx->active_trans when renaming a · 17b9155f
    Davi Arnaut authored
               table with active trx
    
    Essentially, the problem is that InnoDB does a implicit commit
    when a cursor (table handler) is unlocked/closed, creating
    a dissonance between the transaction state within the server
    layer and the storage engine layer. Theoretically, a statement
    transaction can encompass several table instances in a similar
    manner to a multiple statement transaction, hence it does not
    make sense to limit a statement transaction to the lifetime of
    the table instances (cursors) used within it.
    
    Since this particular instance of the problem is only triggerable
    on 5.1 and is masked on 5.5 due 2PC being skipped (assertion is in
    the prepare phase of a 2PC), the solution (which is less risky) is
    to explicitly end the transaction before the cached table is unlock
    on rename table.
    
    The patch is to be null merged into trunk.
    17b9155f
sql_table.cc 255 KB