Skip to content

Commit 6da7d36

Browse files
committed
Teach pg_dump to dump comments on RLS policy objects.
This was unaccountably omitted in the original RLS patch. The SQL syntax is basically the same as for comments on triggers, so crib code from dumpTrigger(). Per report from Marc Munro. Back-patch to all supported branches. Discussion: https://postgr.es/m/1581889298.18009.15.camel@bloodnok.com
1 parent 4a97f64 commit 6da7d36

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/bin/pg_dump/pg_dump.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3661,6 +3661,8 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
36613661
TableInfo *tbinfo = polinfo->poltable;
36623662
PQExpBuffer query;
36633663
PQExpBuffer delqry;
3664+
PQExpBuffer polprefix;
3665+
char *qtabname;
36643666
const char *cmd;
36653667
char *tag;
36663668

@@ -3718,6 +3720,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37183720

37193721
query = createPQExpBuffer();
37203722
delqry = createPQExpBuffer();
3723+
polprefix = createPQExpBuffer();
3724+
3725+
qtabname = pg_strdup(fmtId(tbinfo->dobj.name));
37213726

37223727
appendPQExpBuffer(query, "CREATE POLICY %s", fmtId(polinfo->polname));
37233728

@@ -3738,6 +3743,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37383743
appendPQExpBuffer(delqry, "DROP POLICY %s", fmtId(polinfo->polname));
37393744
appendPQExpBuffer(delqry, " ON %s;\n", fmtQualifiedDumpable(tbinfo));
37403745

3746+
appendPQExpBuffer(polprefix, "POLICY %s ON",
3747+
fmtId(polinfo->polname));
3748+
37413749
tag = psprintf("%s %s", tbinfo->dobj.name, polinfo->dobj.name);
37423750

37433751
if (polinfo->dobj.dump & DUMP_COMPONENT_POLICY)
@@ -3750,9 +3758,16 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37503758
.createStmt = query->data,
37513759
.dropStmt = delqry->data));
37523760

3761+
if (polinfo->dobj.dump & DUMP_COMPONENT_COMMENT)
3762+
dumpComment(fout, polprefix->data, qtabname,
3763+
tbinfo->dobj.namespace->dobj.name, tbinfo->rolname,
3764+
polinfo->dobj.catId, 0, polinfo->dobj.dumpId);
3765+
37533766
free(tag);
37543767
destroyPQExpBuffer(query);
37553768
destroyPQExpBuffer(delqry);
3769+
destroyPQExpBuffer(polprefix);
3770+
free(qtabname);
37563771
}
37573772

37583773
/*

0 commit comments

Comments
 (0)