diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
new file mode 100644
index be0d602..1f0975a
*** a/doc/src/sgml/libpq.sgml
--- b/doc/src/sgml/libpq.sgml
*************** PGconn *PQconnectdbParams(const char * c
*** 131,145 ****
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.
! 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.
--- 131,145 ----
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 at the first NULL element
! in the keywords array.
! 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
new file mode 100644
index 10cc0e6..45df6ce
*** a/src/interfaces/libpq/fe-connect.c
--- b/src/interfaces/libpq/fe-connect.c
*************** conninfo_array_parse(const char *const *
*** 4352,4358 ****
const char *pname = keywords[i];
const char *pvalue = values[i];
! if (pvalue != NULL)
{
/* Search for the param record */
for (option = options; option->keyword != NULL; option++)
--- 4352,4358 ----
const char *pname = keywords[i];
const char *pvalue = values[i];
! if (pvalue != NULL && pvalue[0] != '\0')
{
/* Search for the param record */
for (option = options; option->keyword != NULL; option++)