> -----Original Message-----
> From: Mark Rotteveel [mailto:m...@lawinegevaar.nl] 
> Sent: Martes, 06 de Mayo de 2014 15:41
> 
> This leads me to the questions:
> 1) When are prepared or rolled back transactions removed from 
> RDB$TRANSACTIONS? Or are they kept indefinitely?
> 2) Is there an alternative to removing this information?

Mark, I had a second look:

TRA_commit:
if (transaction->tra_flags & (TRA_prepare2 | TRA_reconnected))
        MET_update_transaction(tdbb, transaction, true);

and MET_update_transaction does this, where X is RDB$TRANSACTION:

if (do_commit && (transaction->tra_flags & TRA_prepare2))
        ERASE X
else
{
        MODIFY X
                X.RDB$TRANSACTION_STATE = do_commit ?
                        RDB$TRANSACTIONS.RDB$TRANSACTION_STATE.COMMITTED :
                        RDB$TRANSACTIONS.RDB$TRANSACTION_STATE.ROLLED_BACK;
        END_MODIFY
}

Hence I assume that when the failed 2PC txn is handled manually, this
routine is not called.

C.


------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
• 3 signs your SCM is hindering your productivity
• Requirements for releasing software faster
• Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to