diff options
author | Amit Kapila | 2024-11-07 03:28:49 +0000 |
---|---|---|
committer | Amit Kapila | 2024-11-07 03:28:49 +0000 |
commit | 7054186c4ebe24e63254651e2ae9b36efae90d4e (patch) | |
tree | 56f43479b5f7c127128b91697da9db84242bc67e /src/include/replication | |
parent | 70291a3c66eca599fd9f59f7f6051432b2020f4b (diff) |
Replicate generated columns when 'publish_generated_columns' is set.
This patch builds on the work done in commit 745217a051 by enabling the
replication of generated columns alongside regular column changes through
a new publication parameter: publish_generated_columns.
Example usage:
CREATE PUBLICATION pub1 FOR TABLE tab_gencol WITH (publish_generated_columns = true);
The column list takes precedence. If the generated columns are specified
in the column list, they will be replicated even if
'publish_generated_columns' is set to false. Conversely, if generated
columns are not included in the column list (assuming the user specifies a
column list), they will not be replicated even if
'publish_generated_columns' is true.
Author: Vignesh C, Shubham Khanna
Reviewed-by: Peter Smith, Amit Kapila, Hayato Kuroda, Shlok Kyal, Ajin Cherian, Hou Zhijie, Masahiko Sawada
Discussion: https://postgr.es/m/B80D17B2-2C8E-4C7D-87F2-E5B4BE3C069E@gmail.com
Diffstat (limited to 'src/include/replication')
-rw-r--r-- | src/include/replication/logicalproto.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/include/replication/logicalproto.h b/src/include/replication/logicalproto.h index b219f226557..fe8583d1b6e 100644 --- a/src/include/replication/logicalproto.h +++ b/src/include/replication/logicalproto.h @@ -223,20 +223,21 @@ extern void logicalrep_write_origin(StringInfo out, const char *origin, XLogRecPtr origin_lsn); extern char *logicalrep_read_origin(StringInfo in, XLogRecPtr *origin_lsn); extern void logicalrep_write_insert(StringInfo out, TransactionId xid, - Relation rel, - TupleTableSlot *newslot, - bool binary, Bitmapset *columns); + Relation rel, TupleTableSlot *newslot, + bool binary, Bitmapset *columns, + bool include_gencols); extern LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData *newtup); extern void logicalrep_write_update(StringInfo out, TransactionId xid, - Relation rel, - TupleTableSlot *oldslot, - TupleTableSlot *newslot, bool binary, Bitmapset *columns); + Relation rel, TupleTableSlot *oldslot, + TupleTableSlot *newslot, bool binary, + Bitmapset *columns, bool include_gencols); extern LogicalRepRelId logicalrep_read_update(StringInfo in, bool *has_oldtuple, LogicalRepTupleData *oldtup, LogicalRepTupleData *newtup); extern void logicalrep_write_delete(StringInfo out, TransactionId xid, Relation rel, TupleTableSlot *oldslot, - bool binary, Bitmapset *columns); + bool binary, Bitmapset *columns, + bool include_gencols); extern LogicalRepRelId logicalrep_read_delete(StringInfo in, LogicalRepTupleData *oldtup); extern void logicalrep_write_truncate(StringInfo out, TransactionId xid, @@ -247,7 +248,8 @@ extern List *logicalrep_read_truncate(StringInfo in, extern void logicalrep_write_message(StringInfo out, TransactionId xid, XLogRecPtr lsn, bool transactional, const char *prefix, Size sz, const char *message); extern void logicalrep_write_rel(StringInfo out, TransactionId xid, - Relation rel, Bitmapset *columns); + Relation rel, Bitmapset *columns, + bool include_gencols); extern LogicalRepRelation *logicalrep_read_rel(StringInfo in); extern void logicalrep_write_typ(StringInfo out, TransactionId xid, Oid typoid); @@ -271,6 +273,7 @@ extern void logicalrep_read_stream_abort(StringInfo in, bool read_abort_info); extern const char *logicalrep_message_type(LogicalRepMsgType action); extern bool logicalrep_should_publish_column(Form_pg_attribute att, - Bitmapset *columns); + Bitmapset *columns, + bool include_gencols); #endif /* LOGICAL_PROTO_H */ |