diff -rc a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
*** a/contrib/dblink/dblink.c	2017-03-08 13:44:16.000000000 +0900
--- b/contrib/dblink/dblink.c	2017-03-08 13:57:06.000000000 +0900
***************
*** 2721,2733 ****
  	ForeignServer *foreign_server = NULL;
  	UserMapping *user_mapping;
  	ListCell   *cell;
! 	StringInfo	buf = makeStringInfo();
  	ForeignDataWrapper *fdw;
  	AclResult	aclresult;
  	char	   *srvname;
  
  	static const PQconninfoOption *options = NULL;
  
  	/*
  	 * Get list of valid libpq options.
  	 *
--- 2721,2735 ----
  	ForeignServer *foreign_server = NULL;
  	UserMapping *user_mapping;
  	ListCell   *cell;
! 	StringInfoData	buf;
  	ForeignDataWrapper *fdw;
  	AclResult	aclresult;
  	char	   *srvname;
  
  	static const PQconninfoOption *options = NULL;
  
+ 	initStringInfo(&buf);
+ 
  	/*
  	 * Get list of valid libpq options.
  	 *
***************
*** 2769,2775 ****
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, ForeignDataWrapperRelationId))
! 				appendStringInfo(buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
--- 2771,2777 ----
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, ForeignDataWrapperRelationId))
! 				appendStringInfo(&buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
***************
*** 2778,2784 ****
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, ForeignServerRelationId))
! 				appendStringInfo(buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
--- 2780,2786 ----
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, ForeignServerRelationId))
! 				appendStringInfo(&buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
***************
*** 2788,2798 ****
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, UserMappingRelationId))
! 				appendStringInfo(buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
! 		return buf->data;
  	}
  	else
  		return NULL;
--- 2790,2800 ----
  			DefElem    *def = lfirst(cell);
  
  			if (is_valid_dblink_option(options, def->defname, UserMappingRelationId))
! 				appendStringInfo(&buf, "%s='%s' ", def->defname,
  								 escape_param_str(strVal(def->arg)));
  		}
  
! 		return buf.data;
  	}
  	else
  		return NULL;
***************
*** 2807,2822 ****
  escape_param_str(const char *str)
  {
  	const char *cp;
! 	StringInfo	buf = makeStringInfo();
  
  	for (cp = str; *cp; cp++)
  	{
  		if (*cp == '\\' || *cp == '\'')
! 			appendStringInfoChar(buf, '\\');
! 		appendStringInfoChar(buf, *cp);
  	}
  
! 	return buf->data;
  }
  
  /*
--- 2809,2826 ----
  escape_param_str(const char *str)
  {
  	const char *cp;
! 	StringInfoData	buf;
! 
! 	initStringInfo(&buf);
  
  	for (cp = str; *cp; cp++)
  	{
  		if (*cp == '\\' || *cp == '\'')
! 			appendStringInfoChar(&buf, '\\');
! 		appendStringInfoChar(&buf, *cp);
  	}
  
! 	return buf.data;
  }
  
  /*
