Subject | Transaction handling changes (2360 to 2411) |
---|---|
Author | |
Post date | 2016-08-03T14:14:21Z |
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.