mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
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
This commit is contained in:
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Reference in New Issue
Block a user