PS_NITPICKS_GENCOLS_V310001.txt

text/plain

Filename: PS_NITPICKS_GENCOLS_V310001.txt
Type: text/plain
Part: 0
Message: Re: Pgoutput not capturing the generated columns
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 (
     <listitem>
      <para>
       Generated columns may be skipped during logical replication according to the
-      <command>CREATE PUBLICATION</command> option
-      <link linkend="sql-createpublication-params-with-include-generated-columns">
+      <command>CREATE PUBLICATION</command> parameter
+      <link linkend="sql-createpublication-params-with-publish-generated-columns">
       <literal>publish_generated_columns</literal></link>.
      </para>
     </listitem>
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 <replaceable class="parameter">name</replaceable>
         </listitem>
        </varlistentry>
 
-       <varlistentry id="sql-createpublication-params-with-include-generated-columns">
+       <varlistentry id="sql-createpublication-params-with-publish-generated-columns">
         <term><literal>publish_generated_columns</literal> (<type>boolean</type>)</term>
         <listitem>
          <para>
@@ -231,14 +231,6 @@ CREATE PUBLICATION <replaceable class="parameter">name</replaceable>
           associated with the publication should be replicated.
           The default is <literal>false</literal>.
          </para>
-         <para>
-          This option is only available for replicating generated column data from the publisher
-          to a regular, non-generated column in the subscriber.
-         </para>
-         <para>
-         This parameter can only be set <literal>true</literal> if <literal>copy_data</literal> is
-         set to <literal>false</literal>.
-         </para>
         </listitem>
        </varlistentry>
 
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;