On Mon, 29 Nov 2010, Joost van der Sluis wrote:
On Wed, 2010-11-24 at 20:57 +0100, Michael Van Canneyt wrote:
On Wed, 24 Nov 2010, Alexsander Rosa wrote:
But it is transparent to the libpq programmer; why it's not transparent with
sqldb?
Correction: it can be transparant in libpq.
But we can make it so in SQLDB.
The SQLDB model is in fact modeled after Firebird.
Firebird offers more control over the transactions.
We did not want to take away this possibility, so we modeled sqldb on
the most powerful RDBMS. This adds some overhead for the others.
What we neglected to do is add what Martin added: offer a less intrusive
way for the programmer to use it (i.e. create a default transaction in the
background if none is specified, and close the transaction once the data
is read).
But we'll do that too, all in good time.
If someone is in a hurry, patches are definitely accepted.
Problem is that I haven't found a good model for this. Martin's solution
could be an idea, though.
It could help if someone could sketch the typical wanted behavior from
the transactions.
I sent an idea for an implementation in a reply to Alexsander Rosa.
basically:
TConnectionOption = (coAutoTransaction)
TConnectionOptions = set of TConnectionOption;
Property TSQLConnection.options = TConnectionOptions;
Procedure TSQLConnection.CreateDefaultTransaction;
If coAutoTransaction is set, and TSQLQuery does not have a TSQLTransaction
assigned, it creates one through TSQLConnection.CreateDefaultTransaction.
(It should be of type TSQLAutoTransaction, a simple descendent of
TSQLtransaction, so detection of 'default transaction' is simple)
Whenever a TSQLQuery statement is executed and the transaction of
TSQLTransaction is
of type TSQLAutoTransaction, then it automatically commits (more flags can be
introduced
for this).
Michael.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus