diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
index 2e7804e..cca54bc 100644
--- a/doc/src/sgml/ddl.sgml
+++ b/doc/src/sgml/ddl.sgml
@@ -515,8 +515,8 @@ CREATE TABLE people (
Generated columns may be skipped during logical replication according to the
- CREATE PUBLICATION option
-
+ CREATE PUBLICATION parameter
+
publish_generated_columns.
diff --git a/doc/src/sgml/ref/create_publication.sgml b/doc/src/sgml/ref/create_publication.sgml
index e133dc3..cd20bd4 100644
--- a/doc/src/sgml/ref/create_publication.sgml
+++ b/doc/src/sgml/ref/create_publication.sgml
@@ -223,7 +223,7 @@ CREATE PUBLICATION name
-
+
publish_generated_columns (boolean)
@@ -231,14 +231,6 @@ CREATE PUBLICATION name
associated with the publication should be replicated.
The default is false.
-
- This option is only available for replicating generated column data from the publisher
- to a regular, non-generated column in the subscriber.
-
-
- This parameter can only be set true if copy_data is
- set to false.
-
diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c
index 272b6a1..7ebb851 100644
--- a/src/backend/catalog/pg_publication.c
+++ b/src/backend/catalog/pg_publication.c
@@ -999,7 +999,7 @@ GetPublication(Oid pubid)
pub->pubactions.pubdelete = pubform->pubdelete;
pub->pubactions.pubtruncate = pubform->pubtruncate;
pub->pubviaroot = pubform->pubviaroot;
- pub->pubgencolumns = pubform->pubgencolumns;
+ pub->pubgencols = pubform->pubgencols;
ReleaseSysCache(tup);
@@ -1211,7 +1211,7 @@ pg_get_publication_tables(PG_FUNCTION_ARGS)
if (att->attisdropped)
continue;
- if (att->attgenerated && !pub->pubgencolumns)
+ if (att->attgenerated && !pub->pubgencols)
continue;
attnums[nattnums++] = att->attnum;
diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c
index 6242a09..0129db1 100644
--- a/src/backend/commands/publicationcmds.c
+++ b/src/backend/commands/publicationcmds.c
@@ -808,7 +808,7 @@ CreatePublication(ParseState *pstate, CreatePublicationStmt *stmt)
BoolGetDatum(pubactions.pubtruncate);
values[Anum_pg_publication_pubviaroot - 1] =
BoolGetDatum(publish_via_partition_root);
- values[Anum_pg_publication_pubgencolumns - 1] =
+ values[Anum_pg_publication_pubgencols - 1] =
BoolGetDatum(publish_generated_columns);
tup = heap_form_tuple(RelationGetDescr(rel), values, nulls);
@@ -1018,11 +1018,10 @@ AlterPublicationOptions(ParseState *pstate, AlterPublicationStmt *stmt,
replaces[Anum_pg_publication_pubviaroot - 1] = true;
}
-
if (publish_generated_columns_given)
{
- values[Anum_pg_publication_pubgencolumns - 1] = BoolGetDatum(publish_generated_columns);
- replaces[Anum_pg_publication_pubgencolumns - 1] = true;
+ values[Anum_pg_publication_pubgencols - 1] = BoolGetDatum(publish_generated_columns);
+ replaces[Anum_pg_publication_pubgencols - 1] = true;
}
tup = heap_modify_tuple(tup, RelationGetDescr(rel), values, nulls,
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index 5a39d4f..c91ae3c 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -1076,7 +1076,7 @@ pgoutput_column_list_init(PGOutputData *data, List *publications,
* then it is treated the same as if there are no column lists (even
* if other publications have a list).
*/
- if (!pub->alltables || !pub->pubgencolumns)
+ if (!pub->alltables || !pub->pubgencols)
{
bool pub_no_list = true;
@@ -1100,7 +1100,7 @@ pgoutput_column_list_init(PGOutputData *data, List *publications,
}
/* Build the column list bitmap in the per-entry context. */
- if (!pub_no_list || !pub->pubgencolumns) /* when not null */
+ if (!pub_no_list || !pub->pubgencols) /* when not null */
{
int i;
int nliveatts = 0;
@@ -1123,10 +1123,10 @@ pgoutput_column_list_init(PGOutputData *data, List *publications,
continue;
/*
- * Skip generated column if pubgencolumns option was not
- * specified.
+ * Skip generated column if publish_generated_columns parameter
+ * was not specified.
*/
- if (pub_no_list && att->attgenerated && !pub->pubgencolumns)
+ if (pub_no_list && att->attgenerated && !pub->pubgencols)
cols = bms_del_member(cols, i + 1);
nliveatts++;
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 06fda22..64fb898 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -4282,7 +4282,7 @@ getPublications(Archive *fout)
int i_pubdelete;
int i_pubtruncate;
int i_pubviaroot;
- int i_pubgencolumns;
+ int i_pubgencols;
int i,
ntups;
@@ -4298,7 +4298,7 @@ getPublications(Archive *fout)
appendPQExpBufferStr(query,
"SELECT p.tableoid, p.oid, p.pubname, "
"p.pubowner, "
- "p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete, p.pubtruncate, p.pubviaroot, p.pubgencolumns "
+ "p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete, p.pubtruncate, p.pubviaroot, p.pubgencols "
"FROM pg_publication p");
else if (fout->remoteVersion >= 130000)
appendPQExpBufferStr(query,
@@ -4333,7 +4333,7 @@ getPublications(Archive *fout)
i_pubdelete = PQfnumber(res, "pubdelete");
i_pubtruncate = PQfnumber(res, "pubtruncate");
i_pubviaroot = PQfnumber(res, "pubviaroot");
- i_pubgencolumns = PQfnumber(res, "pubgencolumns");
+ i_pubgencols = PQfnumber(res, "pubgencols");
pubinfo = pg_malloc(ntups * sizeof(PublicationInfo));
@@ -4358,8 +4358,8 @@ getPublications(Archive *fout)
(strcmp(PQgetvalue(res, i, i_pubtruncate), "t") == 0);
pubinfo[i].pubviaroot =
(strcmp(PQgetvalue(res, i, i_pubviaroot), "t") == 0);
- pubinfo[i].pubgencolumns =
- (strcmp(PQgetvalue(res, i, i_pubgencolumns), "t") == 0);
+ pubinfo[i].pubgencols =
+ (strcmp(PQgetvalue(res, i, i_pubgencols), "t") == 0);
/* Decide whether we want to dump it */
selectDumpableObject(&(pubinfo[i].dobj), fout);
@@ -4439,7 +4439,7 @@ dumpPublication(Archive *fout, const PublicationInfo *pubinfo)
if (pubinfo->pubviaroot)
appendPQExpBufferStr(query, ", publish_via_partition_root = true");
- if (pubinfo->pubgencolumns)
+ if (pubinfo->pubgencols)
appendPQExpBufferStr(query, ", publish_generated_columns = true");
appendPQExpBufferStr(query, ");\n");
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index de9783c..4002f94 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -625,7 +625,7 @@ typedef struct _PublicationInfo
bool pubdelete;
bool pubtruncate;
bool pubviaroot;
- bool pubgencolumns;
+ bool pubgencols;
} PublicationInfo;
/*
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 983962b..b8d8b4d 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -6266,7 +6266,7 @@ listPublications(const char *pattern)
gettext_noop("Via root"));
if (pset.sversion >= 180000)
appendPQExpBuffer(&buf,
- ",\n pubgencolumns AS \"%s\"",
+ ",\n pubgencols AS \"%s\"",
gettext_noop("Generated columns"));
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_publication\n");
@@ -6356,7 +6356,7 @@ describePublications(const char *pattern)
PGresult *res;
bool has_pubtruncate;
bool has_pubviaroot;
- bool has_pubgencol;
+ bool has_pubgencols;
PQExpBufferData title;
printTableContent cont;
@@ -6373,7 +6373,7 @@ describePublications(const char *pattern)
has_pubtruncate = (pset.sversion >= 110000);
has_pubviaroot = (pset.sversion >= 130000);
- has_pubgencol = (pset.sversion >= 180000);
+ has_pubgencols = (pset.sversion >= 180000);
initPQExpBuffer(&buf);
@@ -6387,9 +6387,9 @@ describePublications(const char *pattern)
if (has_pubviaroot)
appendPQExpBufferStr(&buf,
", pubviaroot");
- if (has_pubgencol)
+ if (has_pubgencols)
appendPQExpBufferStr(&buf,
- ", pubgencolumns");
+ ", pubgencols");
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_publication\n");
@@ -6441,7 +6441,7 @@ describePublications(const char *pattern)
ncols++;
if (has_pubviaroot)
ncols++;
- if (has_pubgencol)
+ if (has_pubgencols)
ncols++;
initPQExpBuffer(&title);
@@ -6457,7 +6457,7 @@ describePublications(const char *pattern)
printTableAddHeader(&cont, gettext_noop("Truncates"), true, align);
if (has_pubviaroot)
printTableAddHeader(&cont, gettext_noop("Via root"), true, align);
- if (has_pubgencol)
+ if (has_pubgencols)
printTableAddHeader(&cont, gettext_noop("Generated columns"), true, align);
printTableAddCell(&cont, PQgetvalue(res, i, 2), false, false);
@@ -6469,7 +6469,7 @@ describePublications(const char *pattern)
printTableAddCell(&cont, PQgetvalue(res, i, 7), false, false);
if (has_pubviaroot)
printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false);
- if (has_pubgencol)
+ if (has_pubgencols)
printTableAddCell(&cont, PQgetvalue(res, i, 9), false, false);
if (!puballtables)
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index fc85a64..849b3a0 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -56,7 +56,7 @@ CATALOG(pg_publication,6104,PublicationRelationId)
bool pubviaroot;
/* true if generated columns data should be published */
- bool pubgencolumns;
+ bool pubgencols;
} FormData_pg_publication;
/* ----------------
@@ -106,7 +106,7 @@ typedef struct Publication
char *name;
bool alltables;
bool pubviaroot;
- bool pubgencolumns;
+ bool pubgencols;
PublicationActions pubactions;
} Publication;
diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out
index ab703e2..f083d4f 100644
--- a/src/test/regress/expected/publication.out
+++ b/src/test/regress/expected/publication.out
@@ -1753,9 +1753,9 @@ DROP PUBLICATION pub;
DROP TABLE sch1.tbl1;
DROP SCHEMA sch1 cascade;
DROP SCHEMA sch2 cascade;
--- Test the publication with or without 'PUBLISH_GENERATED_COLUMNS' parameter
+-- Test the publication 'publish_generated_columns' parameter enabled or disabled
SET client_min_messages = 'ERROR';
-CREATE PUBLICATION pub1 FOR ALL TABLES WITH (PUBLISH_GENERATED_COLUMNS=1);
+CREATE PUBLICATION pub1 FOR ALL TABLES WITH (publish_generated_columns=1);
\dRp+ pub1
Publication pub1
Owner | All tables | Inserts | Updates | Deletes | Truncates | Via root | Generated columns
@@ -1763,7 +1763,7 @@ CREATE PUBLICATION pub1 FOR ALL TABLES WITH (PUBLISH_GENERATED_COLUMNS=1);
regress_publication_user | t | t | t | t | t | f | t
(1 row)
-CREATE PUBLICATION pub2 FOR ALL TABLES WITH (PUBLISH_GENERATED_COLUMNS=0);
+CREATE PUBLICATION pub2 FOR ALL TABLES WITH (publish_generated_columns=0);
\dRp+ pub2
Publication pub2
Owner | All tables | Inserts | Updates | Deletes | Truncates | Via root | Generated columns
diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql
index 2673397..78101b9 100644
--- a/src/test/regress/sql/publication.sql
+++ b/src/test/regress/sql/publication.sql
@@ -1112,12 +1112,12 @@ DROP TABLE sch1.tbl1;
DROP SCHEMA sch1 cascade;
DROP SCHEMA sch2 cascade;
--- Test the publication with or without 'PUBLISH_GENERATED_COLUMNS' parameter
+-- Test the publication 'publish_generated_columns' parameter enabled or disabled
SET client_min_messages = 'ERROR';
-CREATE PUBLICATION pub1 FOR ALL TABLES WITH (PUBLISH_GENERATED_COLUMNS=1);
+CREATE PUBLICATION pub1 FOR ALL TABLES WITH (publish_generated_columns=1);
\dRp+ pub1
-CREATE PUBLICATION pub2 FOR ALL TABLES WITH (PUBLISH_GENERATED_COLUMNS=0);
+CREATE PUBLICATION pub2 FOR ALL TABLES WITH (publish_generated_columns=0);
\dRp+ pub2
RESET client_min_messages;