Re: bogus: logical replication rows/cols combinations
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Tomas Vondra <tomas.vondra@enterprisedb.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-04-30T09:28:47Z
Lists: pgsql-hackers
Attachments
- 0001-Change-some-comments.patch (text/x-diff)
On 2022-Apr-28, Tomas Vondra wrote: > Attached is a patch doing the same thing in tablesync. The overall idea > is to generate copy statement with CASE expressions, applying filters to > individual columns. For Alvaro's example, this generates something like > > SELECT > (CASE WHEN (a < 0) OR (a > 0) THEN a ELSE NULL END) AS a, > (CASE WHEN (a > 0) THEN b ELSE NULL END) AS b, > (CASE WHEN (a < 0) THEN c ELSE NULL END) AS c > FROM uno WHERE (a < 0) OR (a > 0) I've been reading the tablesync.c code you propose and the idea seems correct. (I was distracted by wondering if a different data structure would be more appropriate, because what's there looks slightly uncomfortable to work with. But after playing around I can't find anything that feels better in an obvious way.) (I confess I'm a bit bothered by the fact that there are now three different data structures in our code called PublicationInfo). I propose some comment changes in the attached patch, and my interpretation (untested) of the idea of optimizing for a single publication. (In there I also rename logicalrep_relmap_free_entry because it's confusing. That should be a separate patch but I didn't split it before posting, apologies.) > There's a couple options how we might optimize this for common cases. > For example if there's just a single publication, there's no need to > generate the CASE expressions - the WHERE filter will do the trick. Right. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
Commits
-
Prohibit combining publications with different column lists.
- fd0b9dcebda7 15.0 landed
-
Extend pg_publication_tables to display column list and row filter.
- 0ff20288e1cb 15.0 landed
-
Remove dynamic_shared_memory_type=none
- bcbd940806a2 12.0 cited