Re: Needless additional partition check in INSERT?

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Needless additional partition check in INSERT?
Дата
Msg-id 20180614142328.u73j7niupgjjhxrm@alvherre.pgsql
обсуждение исходный текст
Ответ на Re: Needless additional partition check in INSERT?  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Список pgsql-hackers
On 2018-Jun-14, Amit Langote wrote:

> On 2018/06/09 3:41, Alvaro Herrera wrote:
> > BTW, while working on this, I was a bit disturbed by the
> > execReplication.c changes (namely: if the partitioning is not identical
> > on both sides, things are likely to blow up pretty badly), but that's a
> > separate topic.
> 
> Hmm, yes.  If the partition of a given name on subscription side doesn't
> have the same partition constraint as on the publication side,
> subscription worker simply fails, which is the right thing to do anyway.
> 
> ERROR:  new row for relation "p1" violates partition constraint
> DETAIL:  Failing row contains (1, 1).
> LOG:  background worker "logical replication worker" (PID 25739) exited
> with exit code 1
> 
> Maybe, it's a user error to set up logical replication that way.

To me, the ideal would be that re-routing occurs if the partition
constraint fails.  The fact that the partition constraint is now
separate from the rest of the tuple constraints makes this easy to
implement, I think.

> > I didn't see any tests of logical replication with
> > partitioned tables ... Is the current understanding that we don't
> > promise those things to work terribly well together?
> 
> As far as the documentation is concerned, there is this note on
> 
> 31.4. Restrictions (Chapter 31. Logical Replication)
> https://www.postgresql.org/docs/devel/static/logical-replication-restrictions.html
> 
>   Replication is only possible from base tables to base tables. That is,
>   the tables on the publication and on the subscription side must be
>   normal tables, not views, materialized views, partition root tables, or
>   foreign tables. In the case of partitions, you can therefore replicate a
>   partition hierarchy one-to-one, but you cannot currently replicate to a
>   differently partitioned setup. Attempts to replicate tables other than
>   base tables will result in an error.

Ah, okay, so this is already documented not to work.  I guess it's a
reasonable addition for the next release.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Alexander Korotkov
Дата:
Сообщение: Re: Locking B-tree leafs immediately in exclusive mode
Следующее
От: Tom Lane
Дата:
Сообщение: Re: why partition pruning doesn't work?