RE: Pgoutput not capturing the generated columns
От | Hayato Kuroda (Fujitsu) |
---|---|
Тема | RE: Pgoutput not capturing the generated columns |
Дата | |
Msg-id | TYCPR01MB5693AF061D62E55189490D2DF5562@TYCPR01MB5693.jpnprd01.prod.outlook.com обсуждение исходный текст |
Ответ на | Re: Pgoutput not capturing the generated columns (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: Pgoutput not capturing the generated columns
|
Список | pgsql-hackers |
Dear Vignesh, Thanks for rebasing the patch! Before reviewing deeply, I want to confirm the specification. I understood like below based on the documentation. - If publish_generated_columns is false, the publication won't replicate generated columns - If publish_generated_columns is true, the behavior on the subscriber depends on the table column: - If it is a generated column even on the subscriber, it causes an ERROR. - If it is a regular column, the generated value is replicated. - If the column is missing, it causes an ERROR. However, below test implies that generated columns can be replicated even if publish_generated_columns is false. Not sure... ``` # Verify that incremental replication of generated columns occurs # when they are included in the column list, regardless of the # publish_generated_columns option. $result = $node_subscriber->safe_psql('postgres', "SELECT * FROM tab3 ORDER BY a"); is( $result, qq(|2 |4 |6 |8), 'tab3 incremental replication, when publish_generated_columns=false'); ``` Also, I've tested the case both pub and sub had the generated column, but the ERROR was strange for me. ``` test_pub=# CREATE TABLE gencoltable (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); test_pub=# CREATE PUBLICATION pub FOR TABLE gencoltable(a, b) WITH (publish_generated_columns = true); test_pub=# INSERT INTO gencoltable (a) VALUES (generate_series(1, 10)); test_sub=# CREATE TABLE gencoltable (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); test_sub=# CREATE SUBSCRIPTION sub CONNECTION ... PUBLICATION pub; -> ERROR: logical replication target relation "public.gencoltable" is missing replicated column: "b" ``` The attribute existed on the sub but it was reported as missing column. I think we should somehow report like "generated column on publisher is replicated the generated column on the subscriber". Best regards, Hayato Kuroda FUJITSU LIMITED
В списке pgsql-hackers по дате отправления: