On Mon, 2010-11-29 at 17:57 +0100, [email protected] wrote: > > 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). No, not the design. What I meant is to sketch what you want to do. Eg:
I open a dataset A user changes some data Data is saved In this case it should be: Open transaction Open data Edit data Close data Close/commit transaction This can be done perfectly with sqldb. But which are the cases which are difficult? Joost. -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
