I would just take a doubt about read-only transactions and ClientDataSet using the PacketRecords feature.
We use Delphi XE with update 1, Firebird 2.5.5 and Devart Corelab for Interbase/Firebird version 188.8.131.52. In our system, the transaction control is explicit . We control manually to ensure that most of the transactions be managed. In querys, we use read-only transactions. We identify a situation when are used read-only or read committed transactions in a TClientDataSet with PacketRecords .
First, start the transaction , then open the DataSet and finalize the transaction. We note that the transaction remains open until the ClientDataSet fetch all data. The sometimes transaction is finished automatically. Other sometimes not. To monitor the processes we use Sinatica Software (http://www.sinatica.com/index.php/en) .
Code block sample:
Code: Select all
Procedure TForm2.BtnOpenDataSetClick(Sender: TObject); Var LTransaction: TDBXTransaction; Begin CdsCustomer.PacketRecords := 30; CdsCustomer.Close; Try LTransaction := StartTransactionReadOnly; CdsCustomer.Open; //Transaction not finshed because SQLConnection not in InTransaction. CommitTransaction(LTransaction); Except RollBackTransaction(LTransaction); End; End;
1 ) Is it possible manage manually and securely a transaction in querys using ClientDataSet with PacketRecords?
2 ) Is it possible that due to demand of connections and process, corelab driver not manage with 100% efficient the transactional control?