[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