aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/common.c24
-rw-r--r--src/bin/pg_dump/pg_dump.c5
2 files changed, 22 insertions, 7 deletions
diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index 0d147cb08d1..9b5869add8b 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -425,17 +425,31 @@ flagInhIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
attachinfo[k].dobj.catId.oid = 0;
AssignDumpId(&attachinfo[k].dobj);
attachinfo[k].dobj.name = pg_strdup(index->dobj.name);
+ attachinfo[k].dobj.namespace = index->indextable->dobj.namespace;
attachinfo[k].parentIdx = parentidx;
attachinfo[k].partitionIdx = index;
/*
- * We want dependencies from parent to partition (so that the
- * partition index is created first), and another one from attach
- * object to parent (so that the partition index is attached once
- * the parent index has been created).
+ * We must state the DO_INDEX_ATTACH object's dependencies
+ * explicitly, since it will not match anything in pg_depend.
+ *
+ * Give it dependencies on both the partition index and the parent
+ * index, so that it will not be executed till both of those
+ * exist. (There's no need to care what order those are created
+ * in.)
+ *
+ * In addition, give it dependencies on the indexes' underlying
+ * tables. This does nothing of great value so far as serial
+ * restore ordering goes, but it ensures that a parallel restore
+ * will not try to run the ATTACH concurrently with other
+ * operations on those tables.
*/
- addObjectDependency(&parentidx->dobj, index->dobj.dumpId);
+ addObjectDependency(&attachinfo[k].dobj, index->dobj.dumpId);
addObjectDependency(&attachinfo[k].dobj, parentidx->dobj.dumpId);
+ addObjectDependency(&attachinfo[k].dobj,
+ index->indextable->dobj.dumpId);
+ addObjectDependency(&attachinfo[k].dobj,
+ parentidx->indextable->dobj.dumpId);
k++;
}
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 6763a899d81..d833c41147a 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -16326,14 +16326,15 @@ dumpIndexAttach(Archive *fout, IndexAttachInfo *attachinfo)
{
PQExpBuffer q = createPQExpBuffer();
- appendPQExpBuffer(q, "\nALTER INDEX %s ",
+ appendPQExpBuffer(q, "ALTER INDEX %s ",
fmtQualifiedDumpable(attachinfo->parentIdx));
appendPQExpBuffer(q, "ATTACH PARTITION %s;\n",
fmtQualifiedDumpable(attachinfo->partitionIdx));
ArchiveEntry(fout, attachinfo->dobj.catId, attachinfo->dobj.dumpId,
attachinfo->dobj.name,
- NULL, NULL,
+ attachinfo->dobj.namespace->dobj.name,
+ NULL,
"",
false, "INDEX ATTACH", SECTION_POST_DATA,
q->data, "", NULL,