Thread: incompatible changes of PQsetdbLogin()

incompatible changes of PQsetdbLogin()

From
Tatsuo Ishii
Date:
It seems some incompatible changes have been made between 7.0 and
current. In 7.0, if a parameter is NULL OR a null string (""), then
the value from an environment variable is applied. However in current
ONLY NULL is considered. Is there any reason for this?
--
Tatsuo Ishii


Re: incompatible changes of PQsetdbLogin()

From
Peter Eisentraut
Date:
Tatsuo Ishii writes:

> It seems some incompatible changes have been made between 7.0 and
> current. In 7.0, if a parameter is NULL OR a null string (""), then
> the value from an environment variable is applied. However in current
> ONLY NULL is considered. Is there any reason for this?

Yes, there are several reasons.  First, to be consistent with
PQconnectdb().  Second, to be able to override a set environment variable
with an empty value.  Third, because the existing behaviour was deemed to
be quite useless.  See Oct 2 thread "libpq PGHOST".  Is there a problem?

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/



Re: incompatible changes of PQsetdbLogin()

From
Tom Lane
Date:
Tatsuo Ishii <t-ishii@sra.co.jp> writes:
> It seems some incompatible changes have been made between 7.0 and
> current. In 7.0, if a parameter is NULL OR a null string (""), then
> the value from an environment variable is applied. However in current
> ONLY NULL is considered. Is there any reason for this?

Peter E. did that recently, after discussion that concluded it was a
good idea --- otherwise there is no way to override an environment
variable with an empty string.  Do you have an example where it's
a bad idea?
        regards, tom lane


Re: incompatible changes of PQsetdbLogin()

From
Tatsuo Ishii
Date:
> Tatsuo Ishii <t-ishii@sra.co.jp> writes:
> > It seems some incompatible changes have been made between 7.0 and
> > current. In 7.0, if a parameter is NULL OR a null string (""), then
> > the value from an environment variable is applied. However in current
> > ONLY NULL is considered. Is there any reason for this?
> 
> Peter E. did that recently, after discussion that concluded it was a
> good idea --- otherwise there is no way to override an environment
> variable with an empty string.  Do you have an example where it's
> a bad idea?

For PGHOST Peter E.'s changes seem reasonable. But what about PGPORT?
In 7.0.x, if pgport is an empty string and PGPORT environment variable
is not set, then the default port no. (5432) is used. However, in
current, if pgport is an empty string, then the empty string is
assumed as a port no. that causes a failure on connection even if
PGPORT variable is set.
--
Tatsuo Ishii