]> granicus.if.org Git - postgresql/commitdiff
libpq: have PQconnectdbParams() and PQpingParams accept "" as default
authorBruce Momjian <bruce@momjian.us>
Sat, 19 Apr 2014 12:41:51 +0000 (08:41 -0400)
committerBruce Momjian <bruce@momjian.us>
Sat, 19 Apr 2014 12:41:51 +0000 (08:41 -0400)
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

doc/src/sgml/libpq.sgml
src/interfaces/libpq/fe-connect.c

index be0d602508df122b166531032578b6d6aa5cfbd7..1f0975ada68f3c382bcae3a8f3b33a4f1c0e3927 100644 (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>
index 3909367be6fc94ed446e7a9ef62374877ffc3f09..0791774af780abd2fdcd29958a4a77431edd4b31 100644 (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++)