Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit f313646

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 c6679e4 commit f313646

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/bin/pg_dump/pg_dump.c

+15
Original file line numberDiff line numberDiff line change
@@ -3666,6 +3666,8 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
36663666
TableInfo *tbinfo = polinfo->poltable;
36673667
PQExpBuffer query;
36683668
PQExpBuffer delqry;
3669+
PQExpBuffer polprefix;
3670+
char *qtabname;
36693671
const char *cmd;
36703672
char *tag;
36713673

@@ -3723,6 +3725,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37233725

37243726
query = createPQExpBuffer();
37253727
delqry = createPQExpBuffer();
3728+
polprefix = createPQExpBuffer();
3729+
3730+
qtabname = pg_strdup(fmtId(tbinfo->dobj.name));
37263731

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

@@ -3743,6 +3748,9 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37433748
appendPQExpBuffer(delqry, "DROP POLICY %s", fmtId(polinfo->polname));
37443749
appendPQExpBuffer(delqry, " ON %s;\n", fmtQualifiedDumpable(tbinfo));
37453750

3751+
appendPQExpBuffer(polprefix, "POLICY %s ON",
3752+
fmtId(polinfo->polname));
3753+
37463754
tag = psprintf("%s %s", tbinfo->dobj.name, polinfo->dobj.name);
37473755

37483756
if (polinfo->dobj.dump & DUMP_COMPONENT_POLICY)
@@ -3755,9 +3763,16 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo)
37553763
.createStmt = query->data,
37563764
.dropStmt = delqry->data));
37573765

3766+
if (polinfo->dobj.dump & DUMP_COMPONENT_COMMENT)
3767+
dumpComment(fout, polprefix->data, qtabname,
3768+
tbinfo->dobj.namespace->dobj.name, tbinfo->rolname,
3769+
polinfo->dobj.catId, 0, polinfo->dobj.dumpId);
3770+
37583771
free(tag);
37593772
destroyPQExpBuffer(query);
37603773
destroyPQExpBuffer(delqry);
3774+
destroyPQExpBuffer(polprefix);
3775+
free(qtabname);
37613776
}
37623777

37633778
/*

0 commit comments

Comments
 (0)