Re: Pgoutput not capturing the generated columns
От | Peter Smith |
---|---|
Тема | Re: Pgoutput not capturing the generated columns |
Дата | |
Msg-id | CAHut+PtzEvm1af1LK8x5KXeku-_mgHthiHQAOW-mYYOFfu53ig@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Pgoutput not capturing the generated columns (Shubham Khanna <khannashubham1197@gmail.com>) |
Ответы |
Re: Pgoutput not capturing the generated columns
|
Список | pgsql-hackers |
Hi, I had a quick look at the patch v17-0004 which is the split-off new BMS logic. IIUC this 0004 is currently undergoing some refactoring and cleaning-up, so I won't comment much about it except to give the following observation below. ====== src/backend/replication/logical/proto.c. I did not expect to see any code fragments that are still checking generated columns like below: logicalrep_write_tuple: if (att->attgenerated) { - if (!include_generated_columns) - continue; if (att->attgenerated != ATTRIBUTE_GENERATED_STORED) continue; ~ if (att->attgenerated) { - if (!include_generated_columns) - continue; if (att->attgenerated != ATTRIBUTE_GENERATED_STORED) continue; ~~~ logicalrep_write_attrs: if (att->attgenerated) { - if (!include_generated_columns) - continue; if (att->attgenerated != ATTRIBUTE_GENERATED_STORED) continue; ~ if (att->attgenerated) { - if (!include_generated_columns) - continue; if (att->attgenerated != ATTRIBUTE_GENERATED_STORED) continue; ~~~ AFAIK, now checking support of generated columns will be done when the BMS 'columns' is assigned, so the continuation code will be handled like this: if (!column_in_column_list(att->attnum, columns)) continue; ====== BTW there is a subtle but significant difference in this 0004 patch. IOW, we are introducing a difference between the list of published columns VERSUS a publication column list. So please make sure that all code comments are adjusted appropriately so they are not misleading by calling these "column lists" still. BEFORE: BMS 'columns' means "columns of the column list" or NULL if there was no publication column list AFTER: BMS 'columns' means "columns to be replicated" or NULL if all columns are to be replicated ====== Kind Regards, Peter Smith.
В списке pgsql-hackers по дате отправления: