@@ -6869,7 +6869,6 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
6869
6869
PQExpBuffer query = createPQExpBuffer();
6870
6870
PGresult *res;
6871
6871
IndxInfo *indxinfo;
6872
- ConstraintInfo *constrinfo;
6873
6872
int i_tableoid,
6874
6873
i_oid,
6875
6874
i_indexname,
@@ -7133,7 +7132,6 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
7133
7132
7134
7133
tbinfo->indexes = indxinfo =
7135
7134
(IndxInfo *) pg_malloc(ntups * sizeof(IndxInfo));
7136
- constrinfo = (ConstraintInfo *) pg_malloc(ntups * sizeof(ConstraintInfo));
7137
7135
tbinfo->numIndexes = ntups;
7138
7136
7139
7137
for (j = 0; j < ntups; j++)
@@ -7173,28 +7171,31 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
7173
7171
* If we found a constraint matching the index, create an
7174
7172
* entry for it.
7175
7173
*/
7176
- constrinfo[j].dobj.objType = DO_CONSTRAINT;
7177
- constrinfo[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_contableoid));
7178
- constrinfo[j].dobj.catId.oid = atooid(PQgetvalue(res, j, i_conoid));
7179
- AssignDumpId(&constrinfo[j].dobj);
7180
- constrinfo[j].dobj.dump = tbinfo->dobj.dump;
7181
- constrinfo[j].dobj.name = pg_strdup(PQgetvalue(res, j, i_conname));
7182
- constrinfo[j].dobj.namespace = tbinfo->dobj.namespace;
7183
- constrinfo[j].contable = tbinfo;
7184
- constrinfo[j].condomain = NULL;
7185
- constrinfo[j].contype = contype;
7174
+ ConstraintInfo *constrinfo;
7175
+
7176
+ constrinfo = (ConstraintInfo *) pg_malloc(sizeof(ConstraintInfo));
7177
+ constrinfo->dobj.objType = DO_CONSTRAINT;
7178
+ constrinfo->dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_contableoid));
7179
+ constrinfo->dobj.catId.oid = atooid(PQgetvalue(res, j, i_conoid));
7180
+ AssignDumpId(&constrinfo->dobj);
7181
+ constrinfo->dobj.dump = tbinfo->dobj.dump;
7182
+ constrinfo->dobj.name = pg_strdup(PQgetvalue(res, j, i_conname));
7183
+ constrinfo->dobj.namespace = tbinfo->dobj.namespace;
7184
+ constrinfo->contable = tbinfo;
7185
+ constrinfo->condomain = NULL;
7186
+ constrinfo->contype = contype;
7186
7187
if (contype == 'x')
7187
- constrinfo[j]. condef = pg_strdup(PQgetvalue(res, j, i_condef));
7188
+ constrinfo-> condef = pg_strdup(PQgetvalue(res, j, i_condef));
7188
7189
else
7189
- constrinfo[j]. condef = NULL;
7190
- constrinfo[j]. confrelid = InvalidOid;
7191
- constrinfo[j]. conindex = indxinfo[j].dobj.dumpId;
7192
- constrinfo[j]. condeferrable = *(PQgetvalue(res, j, i_condeferrable)) == 't';
7193
- constrinfo[j]. condeferred = *(PQgetvalue(res, j, i_condeferred)) == 't';
7194
- constrinfo[j]. conislocal = true;
7195
- constrinfo[j]. separate = true;
7196
-
7197
- indxinfo[j].indexconstraint = constrinfo[j]. dobj.dumpId;
7190
+ constrinfo-> condef = NULL;
7191
+ constrinfo-> confrelid = InvalidOid;
7192
+ constrinfo-> conindex = indxinfo[j].dobj.dumpId;
7193
+ constrinfo-> condeferrable = *(PQgetvalue(res, j, i_condeferrable)) == 't';
7194
+ constrinfo-> condeferred = *(PQgetvalue(res, j, i_condeferred)) == 't';
7195
+ constrinfo-> conislocal = true;
7196
+ constrinfo-> separate = true;
7197
+
7198
+ indxinfo[j].indexconstraint = constrinfo-> dobj.dumpId;
7198
7199
}
7199
7200
else
7200
7201
{
@@ -11878,6 +11879,7 @@ dumpFunc(Archive *fout, const FuncInfo *finfo)
11878
11879
char *funcsig; /* identity signature */
11879
11880
char *funcfullsig = NULL; /* full signature */
11880
11881
char *funcsig_tag;
11882
+ char *qual_funcsig;
11881
11883
char *proretset;
11882
11884
char *prosrc;
11883
11885
char *probin;
@@ -12168,15 +12170,17 @@ dumpFunc(Archive *fout, const FuncInfo *finfo)
12168
12170
12169
12171
funcsig_tag = format_function_signature(fout, finfo, false);
12170
12172
12173
+ qual_funcsig = psprintf("%s.%s",
12174
+ fmtId(finfo->dobj.namespace->dobj.name),
12175
+ funcsig);
12176
+
12171
12177
if (prokind[0] == PROKIND_PROCEDURE)
12172
12178
keyword = "PROCEDURE";
12173
12179
else
12174
12180
keyword = "FUNCTION"; /* works for window functions too */
12175
12181
12176
- appendPQExpBuffer(delqry, "DROP %s %s.%s;\n",
12177
- keyword,
12178
- fmtId(finfo->dobj.namespace->dobj.name),
12179
- funcsig);
12182
+ appendPQExpBuffer(delqry, "DROP %s %s;\n",
12183
+ keyword, qual_funcsig);
12180
12184
12181
12185
appendPQExpBuffer(q, "CREATE %s %s.%s",
12182
12186
keyword,
@@ -12329,9 +12333,7 @@ dumpFunc(Archive *fout, const FuncInfo *finfo)
12329
12333
12330
12334
append_depends_on_extension(fout, q, &finfo->dobj,
12331
12335
"pg_catalog.pg_proc", keyword,
12332
- psprintf("%s.%s",
12333
- fmtId(finfo->dobj.namespace->dobj.name),
12334
- funcsig));
12336
+ qual_funcsig);
12335
12337
12336
12338
if (dopt->binary_upgrade)
12337
12339
binary_upgrade_extension_member(q, &finfo->dobj,
@@ -12376,6 +12378,7 @@ dumpFunc(Archive *fout, const FuncInfo *finfo)
12376
12378
if (funcfullsig)
12377
12379
free(funcfullsig);
12378
12380
free(funcsig_tag);
12381
+ free(qual_funcsig);
12379
12382
if (allargtypes)
12380
12383
free(allargtypes);
12381
12384
if (argmodes)
@@ -14768,6 +14771,8 @@ dumpForeignServer(Archive *fout, const ForeignServerInfo *srvinfo)
14768
14771
srvinfo->rolname,
14769
14772
srvinfo->dobj.catId, srvinfo->dobj.dumpId);
14770
14773
14774
+ PQclear(res);
14775
+
14771
14776
free(qsrvname);
14772
14777
14773
14778
destroyPQExpBuffer(q);
0 commit comments