Michael Van Canneyt wrote:
On Tue, 4 Nov 2014, Chris Dryburgh wrote:

Hi

In PostgreSQL it is considered poor practice to have long running idle transactions.
https://encrypted.google.com/#q=postgresql+idle+in+transaction

This is a known problem, not only for postgres.

The problem is the open transaction for an open dataset: committing the transaction (what you would normally do)
will close the dataset.

The solution for which I have code in place is a flag which tells the transaction that a connected dataset should not be closed when the transaction is committed. The transaction can then be committed or rollbacked as soon as the data is fetched.

I have code for this in place that works for all connection types. But it still needs to be checked through the testsuite.

Sounds good. The bottom line is that the Delphi model where db controls hold a connection etc. open for an extended period is not a good fit on top of a database server which implements connection pools etc.

Another issue is that once a connection has been established to a named server, there's a single point of failure if it tries to reopen it but finds that the nameserver is unavailable. A facility to temporarily cache the IP address, or possibly an application-supplied list of pool names/addresses, would be useful.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to