Subject Re: [firebird-support] Re: CommitRetaining question
Author Helen Borrie
At 04:25 PM 8/10/2005 +0000, you wrote:
> > Yes, eventually. The server will eventually be informed that the
> > connection is dead and the transaction status will be converted to
>rolled back.
>Thanks. I didn't realise the transaction would be rolled back. I
>thought the changes would still remain committed.

You misunderstand. If your application calls CommitRetaining, the DML
changes *are* committed. Once they are committed, they can't be rolled back.

However, CommitRetaining causes the committed transaction's context to be
*retained*, whereas the "hard Commit" causes the enitire context (cursors,
old record versions and other resources) to be freed. Anything that was
committed with CommitRetaining stays committed!! But the record versions
associated with that transaction won't get released without the hard
Commit...which leads to the OIT/OAT situation described....