30.05.2015 11:29, Mark Rotteveel wrote:
> To better understand the implications of the pull request by Maxim, I'd
> like to know the semantics of isc_tpb_autocommit. Is this documented
> anywhere?

   AFAIR, no

> I'd especially like to know at which point the commit is executed, and
> the impact this has on open resources (cursor, blob, etc). As far as I
> understand commit_retaining is used. What impact does that have on
> visibility of transactions and resource use?

   A bit simplified overview of autocommit code:

   when transaction, marked as TRA_autocommit performs any of following
actions, it is marked also as TRA_perform_autocommit:
- insert
- update
- delete
- select with lock
- post event

   TRA_perform_autocommit flag is checked when:
- engine receives input message
- engine send output message
- engine stars to execute request
- engine finished to execute DDL request

   When TRA_perform_autocommit flag is detected, engine run on-commit triggers
(not for DDL, btw, looks like a bug) and performs commit retaining. New
transaction have TRA_autocommit flag set and TRA_perform_autocommit not set.

Regards,
Vlad

------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to