[fpc-pascal] Lifetime of a database (PostgreSQL) connection
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Sat Jan 1 21:07:08 CET 2011
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]
More information about the fpc-pascal
mailing list