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; } /*