diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index be0d602508..1f0975ada6 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -131,15 +131,15 @@ PGconn *PQconnectdbParams(const char * const *keywords, 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-NULL element - of the keywords array. + Processing will stop at the first NULL element + in the keywords array. - If any parameter is unspecified, then the corresponding - environment variable (see ) - 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 ) is checked. + If the environment variable is not set either, then the indicated + built-in defaults are used. diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 3909367be6..0791774af7 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -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++)