On 26-3-2015 14:33, Resul Demirok [email protected] [firebird-support] wrote: > I have try to get sql text from active transaction. I had got some sql > text but some sql text is empty. I searched reason and i undertastand > mon$statements table mon$transaction_id is null and some transaction has > id in this table but as has null. why transactions id cannot add to this > table?
The MON$STATEMENTS contains the statement handles in Firebird. The lifetime of a statement handle is separate from the transaction. Therefor if there is currently no transaction associated with the statement (eg: the statement handle has been created but not yet prepared or executed), then the transaction id is null. Also if a statement has been executed with a transaction, it will be disassociated once the transaction has been committed or rolled back. I am not entirely sure, but I believe the transaction is also disassociated if the statement has completed (update, delete, etc), or - for select - the cursor has been explicitly closed/dropped or if all records have been read. Also: sql text can be null/empty if the statement handle has been created, but hasn't yet been prepared with a statement. I also believe that for DDL statements the statement is automatically unprepared after execute (and the statement handle can then be reused). Mark -- Mark Rotteveel
