Subject Smart commit
Author Alexander Rabtchevich
As I know (my knowledge may be out of date) the transaction which did nothing
through the exception or other reason must be commited. In other case (if it is
rollbacked) the TIP will consider it as oldest active transaction (if it's
oldest) and only sweep is the solution.
So the block
try
IBquery1.execSQL;
IBtransaction1.commitretaining;
except
ibtransaction1.rollbackretaining - must be commitretaining
end;

is bad solution, but can be (and is) programmed. Maybe it's possible to
implement the forced commit (or commitretaining if rollbackretaining is asked)
as the option of engine settings in the case of transaction has done nothing.

With respect
Alexander Rabtchevich