Michael Van Canneyt wrote:
The program is not creating explicit transactions and only has read
access to the table. I'm establishing a connection during program
initialisation and then alternating between two query objects, it's
the activation of the query object which is causing a short-term
handle to be opened.
Please excuse me for not having looked at the sources yet, but I
presume that the client library is performing a name lookup if the
initial connection was by name (hopefully it doesn't do this if the
connection was by address). I'd suggest that the IP address could
usefully be cached in case of name server failure, in the same way
that other parameters are cached somewhere (for example, the password
in the connection object can be wiped without affecting operation).
The name lookup is not done by FPC itself, but by the Postgresql client
library.
This is outside of FPC's control; FPC just asks a connection on a
certain IP address, it doesn't even know if the adress is an actual IP
addres or a DNS name.
You can always do the address lookup yourself, if you want, and pass
that to the connection component.
I thought that was probably the case. I don't know whence it's
retrieving the password but I notice that the libpq API includes
functions to retrieve the current connection details.
I'll handle the lookup myself, although I suspect that there might be
situations where the name has to be used in preference (or as a
supplement) to the IP address. I'll report back if I find anything
noteworthy.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal