libpq: have PQconnectdbParams() and PQpingParams accept "" as default

Previously, these functions treated "" optin values as defaults in some
ways, but not in others, like when comparing to .pgpass.  Also, add
documentation to clarify that now "" and NULL use defaults, like
PQsetdbLogin() has always done.

BACKWARD INCOMPATIBILITY

Patch by Adrian Vondendriesch, docs by me

Report by Jeff Janes
This commit is contained in:
Bruce Momjian 2014-04-19 08:41:51 -04:00
parent 66b1084e2c
commit 13ecb822e8
2 changed files with 7 additions and 7 deletions

View File

@ -131,15 +131,15 @@ PGconn *PQconnectdbParams(const char * const *keywords,
<para>
The passed arrays can be empty to use all default parameters, or can
contain one or more parameter settings. They should be matched in length.
Processing will stop with the last non-<symbol>NULL</symbol> element
of the <literal>keywords</literal> array.
Processing will stop at the first <symbol>NULL</symbol> element
in the <literal>keywords</literal> array.
</para>
<para>
If any parameter is unspecified, then the corresponding
environment variable (see <xref linkend="libpq-envars">)
is checked. If the environment variable is not set either,
then the indicated built-in defaults are used.
If any parameter is NULL or an emptry string, the corresponding
environment variable (see <xref linkend="libpq-envars">) is checked.
If the environment variable is not set either, then the indicated
built-in defaults are used.
</para>
<para>

View File

@ -4357,7 +4357,7 @@ conninfo_array_parse(const char *const * keywords, const char *const * values,
const char *pname = keywords[i];
const char *pvalue = values[i];
if (pvalue != NULL)
if (pvalue != NULL && pvalue[0] != '\0')
{
/* Search for the param record */
for (option = options; option->keyword != NULL; option++)