Re: adding partitioned tables to publications
David Fetter <david@fetter.org>
From: David Fetter <david@fetter.org>
To: Amit Langote <amitlangote09@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-10-13T07:55:17Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix RELCACHE_FORCE_RELEASE issue
- 12fb189bfeaf 13.0 landed
-
Allow publishing partition changes via ancestors
- 83fd4532a721 13.0 landed
-
Add logical replication support to replicate into partitioned tables
- f1ac27bfda6c 13.0 landed
-
Refactor code to look up local replication tuple
- d8653f468789 13.0 landed
-
Some refactoring of logical/worker.c
- 97ee604d9bce 13.0 landed
-
Prepare to support non-tables in publications
- c314c147c056 13.0 landed
-
Support adding partitioned tables to publication
- 17b9e7f9fe23 13.0 landed
On Mon, Oct 07, 2019 at 09:55:23AM +0900, Amit Langote wrote: > One cannot currently add partitioned tables to a publication. > > create table p (a int, b int) partition by hash (a); > create table p1 partition of p for values with (modulus 3, remainder 0); > create table p2 partition of p for values with (modulus 3, remainder 1); > create table p3 partition of p for values with (modulus 3, remainder 2); > > create publication publish_p for table p; > ERROR: "p" is a partitioned table > DETAIL: Adding partitioned tables to publications is not supported. > HINT: You can add the table partitions individually. > > One can do this instead: > > create publication publish_p1 for table p1; > create publication publish_p2 for table p2; > create publication publish_p3 for table p3; > > but maybe that's too much code to maintain for users. > > I propose that we make this command: > > create publication publish_p for table p; > > automatically add all the partitions to the publication. Also, any > future partitions should also be automatically added to the > publication. So, publishing a partitioned table automatically > publishes all of its existing and future partitions. Attached patch > implements that. > > What doesn't change with this patch is that the partitions on the > subscription side still have to match one-to-one with the partitions > on the publication side, because the changes are still replicated as > being made to the individual partitions, not as the changes to the > root partitioned table. It might be useful to implement that > functionality on the publication side, because it allows users to > define the replication target any way they need to, but this patch > doesn't implement that. With this patch, is it possible to remove a partition manually from a subscription, or will it just get automatically re-added at some point? Best, David. -- David Fetter <david(at)fetter(dot)org> http://fetter.org/ Phone: +1 415 235 3778 Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate