diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 390ce490c93..e68021baa1b 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -11180,6 +11180,7 @@ static void dumpIndex(Archive *fout, IndxInfo *indxinfo) { TableInfo *tbinfo = indxinfo->indextable; + bool is_constraint = (indxinfo->indexconstraint != 0); PQExpBuffer q; PQExpBuffer delq; @@ -11192,9 +11193,11 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) /* * If there's an associated constraint, don't dump the index per se, but * do dump any comment for it. (This is safe because dependency ordering - * will have ensured the constraint is emitted first.) + * will have ensured the constraint is emitted first.) Note that the + * emitted comment has to be shown as depending on the constraint, not + * the index, in such cases. */ - if (indxinfo->indexconstraint == 0) + if (!is_constraint) { if (binary_upgrade) binary_upgrade_set_relfilenodes(q, indxinfo->dobj.catId.oid, true); @@ -11238,7 +11241,9 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) dumpComment(fout, q->data, tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, - indxinfo->dobj.catId, 0, indxinfo->dobj.dumpId); + indxinfo->dobj.catId, 0, + is_constraint ? indxinfo->indexconstraint : + indxinfo->dobj.dumpId); destroyPQExpBuffer(q); destroyPQExpBuffer(delq);