diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index c0c6c9175ed..79a5aa8957e 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -3618,6 +3618,8 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) TableInfo *tbinfo = polinfo->poltable; PQExpBuffer query; PQExpBuffer delqry; + PQExpBuffer polprefix; + char *qtabname; const char *cmd; char *tag; @@ -3675,6 +3677,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) query = createPQExpBuffer(); delqry = createPQExpBuffer(); + polprefix = createPQExpBuffer(); + + qtabname = pg_strdup(fmtId(tbinfo->dobj.name)); appendPQExpBuffer(query, "CREATE POLICY %s", fmtId(polinfo->polname)); @@ -3695,6 +3700,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) appendPQExpBuffer(delqry, "DROP POLICY %s", fmtId(polinfo->polname)); appendPQExpBuffer(delqry, " ON %s;\n", fmtQualifiedDumpable(tbinfo)); + appendPQExpBuffer(polprefix, "POLICY %s ON", + fmtId(polinfo->polname)); + tag = psprintf("%s %s", tbinfo->dobj.name, polinfo->dobj.name); if (polinfo->dobj.dump & DUMP_COMPONENT_POLICY) @@ -3708,9 +3716,16 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) NULL, 0, NULL, NULL); + if (polinfo->dobj.dump & DUMP_COMPONENT_COMMENT) + dumpComment(fout, polprefix->data, qtabname, + tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, + polinfo->dobj.catId, 0, polinfo->dobj.dumpId); + free(tag); destroyPQExpBuffer(query); destroyPQExpBuffer(delqry); + destroyPQExpBuffer(polprefix); + free(qtabname); } /*