FireDAC transactions no longer auto-commit in Delphi 10.4 Sydney

I am experiencing major issues with the latest FireDAC/Delphi 10.4 IDE.

I am using TFDQuery queries assigned to different transactions, but belonging to the same TFDConnection.

When the Insert or Update query transaction is Committed, it no longer auto-commits (or refreshes) the transactions belonging to all other queries within the same TFDConnection, e.g. those used to re-Select the updated data set. It is necessary to close the application, before all the transactions get fully committed.

For example, I use an Update Query (assigned to transaction: trUpdate)  to either update or insert new records into a data source. The Update Query transaction is Committed at the end of  insert or update data entry process. I then use another Select query (with different transaction: trSelect) to immediately refresh the updated data source and re-display the data in the grid.

In all previous versions of Delphi, the trSelect transaction would get auto-committed and it would display new data without any issues.

This is no longer the case in Delphi 10.4.  It is now necessary to manually Commit the trSelect transaction immediately after the Update Query (trUpdate) was committed, i.e. before the Select query can be used to update the data in the grid.

This is a major change in TFDQuery behaviour, which completely broke the functionality in all my Delphi projects.

I have been debugging the source code for the last few weeks by manually adding the trSelect transaction Commits in hundreds and hundreds of places.

I can no longer trust my existing Delphi code and I have to rewrite the transaction code in many more places, to make sure that it works as intended.

Is there a way to revert to the previous auto-commit transaction behaviour, as used to be in Delphi 10.3.3 and earlier ??

 

The whole Delphi 10.4 IDE appears to be very unstable and it keeps crashing continuously during debugging, in hundreds of random places. The new IDE very often hangs entirely, resulting in losses of already entered but not yet saved source code. I am getting more and more frustrated with this incredibly buggy Delphi 10.4 IDE. How can Embarcadero offer such grossly unstable, prematurely released development environment to the paying customers ??

I am just about to revert back to the old Delphi 10.3.3 IDE, which is much more stable and works hundreds of times better than the “uncooked” 10.4.

Parents
No Data
Reply
  • FireDAC's default isolation level of xiReadCommitted has been changed to xiUnspecified in the latest Delphi 10.4.

    This undocumented change seriously affects FireBird and possibly other SQL databases, by completely destroying the stadard FireDAC transaction behaviour.

    The temporary solution to this major issue is to change the isolation level back to xiReadCommitted in all FireDAC transcations.

    The FireDAC default isolation level should be revereted back to the standard xiReadCommitted in the next Delphi 10.4 patch.

Children
No Data