diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index ec3e2c63b0..d92a6626a5 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -3666,6 +3666,8 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) TableInfo *tbinfo = polinfo->poltable; PQExpBuffer query; PQExpBuffer delqry; + PQExpBuffer polprefix; + char *qtabname; const char *cmd; char *tag; @@ -3723,6 +3725,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)); @@ -3743,6 +3748,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) @@ -3755,9 +3763,16 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) .createStmt = query->data, .dropStmt = delqry->data)); + 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); } /*