Re: bogus: logical replication rows/cols combinations
От | Tomas Vondra |
---|---|
Тема | Re: bogus: logical replication rows/cols combinations |
Дата | |
Msg-id | 5a85b8b7-fc1c-364b-5c62-0bb3e1e25824@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: bogus: logical replication rows/cols combinations (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: bogus: logical replication rows/cols combinations
Re: bogus: logical replication rows/cols combinations |
Список | pgsql-hackers |
On 4/28/22 05:17, Amit Kapila wrote: > On Thu, Apr 28, 2022 at 3:26 AM Tomas Vondra > <tomas.vondra@enterprisedb.com> wrote: >> >> so I've been looking at tweaking the code so that the behavior matches >> Alvaro's expectations. It passes check-world but I'm not claiming it's >> nowhere near commitable - the purpose is mostly to give better idea of >> how invasive the change is etc. >> > > I was just skimming through the patch and didn't find anything related > to initial sync handling. I feel the behavior should be same for > initial sync and replication. > Yeah, sorry for not mentioning that - my goal was to explore and try getting the behavior in regular replication right first, before attempting to do the same thing in tablesync. 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) And that seems to work fine. Similarly to regular replication we have to use both the "total" column list (union of per-publication lists) and per-publication (row filter + column list), but that's expected. 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. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Вложения
В списке pgsql-hackers по дате отправления: