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 ****
        <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.
        </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.
        </para>
  
        <para>
--- 131,145 ----
        <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 at the first <symbol>NULL</symbol> element
!        in the <literal>keywords</literal> array.
        </para>
  
        <para>
!        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>
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++)
