Re: Pgoutput not capturing the generated columns

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: vignesh C <vignesh21@gmail.com>, Peter Smith <smithpb2250@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Michael Paquier <michael@paquier.xyz>, "Shinoda, Noriyoshi (SXD Japan FSIP)" <noriyoshi.shinoda@hpe.com>, Shubham Khanna <khannashubham1197@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Rajendra Kumar Dangwal <dangwalrajendra888@gmail.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, "euler@eulerto.com" <euler@eulerto.com>
Date: 2025-01-22T13:52:19Z
Lists: pgsql-hackers
On 21.01.25 09:27, vignesh C wrote:
>> Maybe I have some fundamental misunderstanding here, but I don't see
>> why "this approach cannot be used with psql because older version
>> servers may not have these columns". Not having the columns is the
>> whole point of using an alias approach in the first place e.g. the
>> below table t1 does not have a column called "banana" but it works
>> just fine to select an alias using that name...
> 
> This is simpler than maintaining the indexes. I misunderstood your
> comment to include displaying the columns for older versions, I did
> not want to display a value for the older versions as these columns do
> not exist. I have updated the patch based on the alias approach. The
> attached patch has the changes for the same.

The v54-0004 patch looks ok to me.  Thanks for working on this.

I will wait until that gets committed before moving forward with the 
virtual generated columns patch.


A few quick comments on the v54-0005 patch (the documentation one):

+<programlisting>
+test_pub=# CREATE TABLE tab_gen_to_gen (a int, b int GENERATED ALWAYS 
AS (a + 1) STORED);

I don't like when examples include the prompt like this.  Then it's 
harder to copy the commands out of the examples.

+     <row>
+ 
<entry>No</entry><entry>GENERATED</entry><entry>GENERATED</entry><entry>Publisher 
table column is not replicated. Use the subscriber table generated 
column value.</entry>
+     </row>

This should be formatted vertically, one line per <entry>.

+<programlisting>
+test_pub=# CREATE TABLE t1 (a int PRIMARY KEY, b int,
+test_pub(#                  c int GENERATED ALWAYS AS (a + 1) STORED,
+test_pub(#                  d int GENERATED ALWAYS AS (b + 1) STORED);

Also here check that this is formatted more consistently with the rest 
of the documentation.

+  <itemizedlist>
+   <listitem><para>
+    <literal>t1.a</literal> is a regular column. It gets replicated 
normally.
+   </para></listitem>
+   <listitem><para>
+    <literal>t1.b</literal> is a regular column. It gets replicated 
normally.
+   </para></listitem>

Leave more whitespace.  Typically, there is a blank line between block 
elements on the same level.




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Doc: Generated column replication.

  2. Rename pubgencols_type to pubgencols in pg_publication.

  3. Doc: Fix column name in pg_publication catalog.

  4. Fix buildfarm failure introduced by commit e65dbc9927.

  5. Change publication's publish_generated_columns option type to enum.

  6. Fix \dRp+ output when describing publications with a lower server version.

  7. Replicate generated columns when 'publish_generated_columns' is set.

  8. Doc: Update the behavior of generated columns in Logical Replication.

  9. Replicate generated columns when specified in the column list.

  10. Doc: Generated columns are skipped for logical replication.