diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2020-04-08 09:59:27 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2020-04-08 11:19:23 +0200 |
commit | 83fd4532a72179c370e318075a10e0e2aa832024 (patch) | |
tree | 9c3c582fe39c51278949eb4b5cd0cbcb0ddd685a /doc/src | |
parent | 1aac32df89eb19949050f6f27c268122833ad036 (diff) | |
download | postgresql-83fd4532a72179c370e318075a10e0e2aa832024.tar.gz postgresql-83fd4532a72179c370e318075a10e0e2aa832024.zip |
Allow publishing partition changes via ancestors
To control whether partition changes are replicated using their own
identity and schema or an ancestor's, add a new parameter that can be
set per publication named 'publish_via_partition_root'.
This allows replicating a partitioned table into a different partition
structure on the subscriber.
Author: Amit Langote <amitlangote09@gmail.com>
Reviewed-by: Rafia Sabih <rafia.pghackers@gmail.com>
Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Reviewed-by: Petr Jelinek <petr@2ndquadrant.com>
Discussion: https://www.postgresql.org/message-id/flat/CA+HiwqH=Y85vRK3mOdjEkqFK+E=ST=eQiHdpj43L=_eJMOOznQ@mail.gmail.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/catalogs.sgml | 10 | ||||
-rw-r--r-- | doc/src/sgml/logical-replication.sgml | 12 | ||||
-rw-r--r-- | doc/src/sgml/ref/create_publication.sgml | 20 |
3 files changed, 38 insertions, 4 deletions
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 0d61d98b115..386c6d7bd1b 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -5437,6 +5437,16 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry>If true, <command>TRUNCATE</command> operations are replicated for tables in the publication.</entry> </row> + + <row> + <entry><structfield>pubviaroot</structfield></entry> + <entry><type>bool</type></entry> + <entry></entry> + <entry>If true, operations on a leaf partition are replicated using the + identity and schema of its topmost partitioned ancestor mentioned in the + publication instead of its own. + </entry> + </row> </tbody> </tgroup> </table> diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml index c513621470a..eba331a72b5 100644 --- a/doc/src/sgml/logical-replication.sgml +++ b/doc/src/sgml/logical-replication.sgml @@ -411,10 +411,14 @@ <listitem> <para> When replicating between partitioned tables, the actual replication - originates from the leaf partitions on the publisher, so partitions on - the publisher must also exist on the subscriber as valid target tables. - (They could either be leaf partitions themselves, or they could be - further subpartitioned, or they could even be independent tables.) + originates, by default, from the leaf partitions on the publisher, so + partitions on the publisher must also exist on the subscriber as valid + target tables. (They could either be leaf partitions themselves, or they + could be further subpartitioned, or they could even be independent + tables.) Publications can also specify that changes are to be replicated + using the identity and schema of the partitioned root table instead of + that of the individual leaf partitions in which the changes actually + originate (see <xref linkend="sql-createpublication"/>). </para> </listitem> </itemizedlist> diff --git a/doc/src/sgml/ref/create_publication.sgml b/doc/src/sgml/ref/create_publication.sgml index 597cb28f339..2c52a8aada1 100644 --- a/doc/src/sgml/ref/create_publication.sgml +++ b/doc/src/sgml/ref/create_publication.sgml @@ -123,6 +123,26 @@ CREATE PUBLICATION <replaceable class="parameter">name</replaceable> </para> </listitem> </varlistentry> + + <varlistentry> + <term><literal>publish_via_partition_root</literal> (<type>boolean</type>)</term> + <listitem> + <para> + This parameter determines whether changes in a partitioned table (or + on its partitions) contained in the publication will be published + using the identity and schema of the partitioned table rather than + that of the individual partitions that are actually changed; the + latter is the default. Enablings this allows the changes to be + replicated into a non-partitioned table or a partitioned table + consisting of a different set of partitions. + </para> + + <para> + If this is enabled, <literal>TRUNCATE</literal> operations performed + directly on partitions are not replicated. + </para> + </listitem> + </varlistentry> </variablelist> </para> |