Обсуждение: Libpq and PGConn

Поиск
Список
Период
Сортировка

Libpq and PGConn

От
Keary Suska
Дата:
What happens if a null pointer is sent to any libpq function for the PGConn
parameter?

Thanks,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"



Re: Libpq and PGConn

От
Tom Lane
Дата:
Keary Suska <hierophant@pcisys.net> writes:
> What happens if a null pointer is sent to any libpq function for the PGConn
> parameter?

AFAIR they all check for that and fail in a reasonably clean fashion.
Have you found one that doesn't?
        regards, tom lane


Re: Libpq and PGConn

От
Keary Suska
Дата:
on 3/29/06 10:15 AM, tgl@sss.pgh.pa.us purportedly said:

> Keary Suska <hierophant@pcisys.net> writes:
>> What happens if a null pointer is sent to any libpq function for the PGConn
>> parameter?
> 
> AFAIR they all check for that and fail in a reasonably clean fashion.
> Have you found one that doesn't?

Not as of yet. I am building a custom wrapper to libpq and trying to account
for situations such as an attempt to call a libpq function on a PGconn
object that has not been initialized, such as returned from PQconnectdb and
the like. Same goes for PGresult objects.

Is it safe to assume that in these cases--where a PGconn or Pgresult has not
been initialized, but has not been finished() either--that all functions
won't (or shouldn't) choke, will set an error message, and return a defined
value?

Thanks,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"



Re: Libpq and PGConn

От
Tom Lane
Дата:
Keary Suska <hierophant@pcisys.net> writes:
> Is it safe to assume that in these cases--where a PGconn or Pgresult has not
> been initialized, but has not been finished() either--that all functions
> won't (or shouldn't) choke, will set an error message, and return a defined
> value?

Well, there isn't any place to "set an error message" if you don't have
a PGconn.  I think it's reasonable to expect libpq functions not to
crash on NULL pointer inputs, but there's a limit to what we can do
beyond not crashing.  Also, if you pass pointers to garbage memory
(rather than NULL pointers) all bets are off; which limits the value of
worrying about the NULL case anyway.  Ultimately, if the calling app is
broken enough to pass bad pointers there isn't a lot that a library can
do to defend itself.
        regards, tom lane