Subject Transaction handling changes (2360 to 2411)
Author

I just updated a project to build 2411. One thing broke and i'll try to describe it here.


I'm doing the following; in a TIB_Query's OnPrepareSQL i execute a TIB_DSQL repeatedly. This stored proc inserts a reference into a GTT that has the type DELETE ROWS.


After some more processing and extensive use of SQLWehereItems the query is opened. There are (exists ( ... )) in the where clause then JOINs on the GTT. I'm doing it this way because of several factors, primarily performance, but also a very detailed requirement of these joins.


After going from 2360 to 2411 whenever the GTT is used i do not get the expected result anymore. It seems the TIB_Transaction (carefully guaranteed to be shared amongst all components in this routine) is committed server side*.


To confirm that i am not 100% confused (because putting a breakpoint on a BeforeCommit does not reveal erroneous commit behaviour) i replaced the TIB_Statement.SysPrepare function in IB_Components with the exact code from 2360 and the behaviour is back to the expected.


These are server services so putting a TIB_Monitor on the thing is not trivial.


Any insights are welcome,


/Dany


* It is the idea that the GTT should empty when the transaction is committed or rolled back.