Re: ON CONFLICT DO UPDATE for partitioned tables
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Pavan Deolasee <pavan.deolasee@gmail.com>, Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>, Andres Freund <andres@anarazel.de>, Pg Hackers <pgsql-hackers@postgresql.org>, Peter Geoghegan <pg@bowt.ie>
Date: 2018-04-19T19:40:17Z
Lists: pgsql-hackers
Alvaro Herrera wrote: > Amit Langote wrote: > > > Yeah, I too have wondered in the past what it would take to make > > equalTupDescs() return true for parent and partitions. Maybe we can make > > it work by looking a bit harder than I did then. > > How about simply relaxing the tdtypeid test from equalTupleDescs? I > haven't looked deeply but I think just checking whether or not both are > RECORDOID might be sufficient, for typecache purposes. After looking at the code, I'm a bit nervous about doing this, because I don't fully understand what is going on in typcache, and what is the HeapTupleHeaderGetTypeId macro really doing. I'm afraid that if we confuse a table's tupdesc with one of its partition's , something entirely random might end up happening. Maybe this is completely off-base, but if so I'd like to have to proof. So I'm thinking of reverting that patch instead per your patch. While composing this we got emails from Robert and Peter G suggesting the same too, so consider it done. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Remove quick path in ExecInitPartitionInfo for equal tupdescs
- 79b2e52615fa 11.0 landed
-
Ignore whole-rows in INSERT/CONFLICT with partitioned tables
- 158b7bc6d779 11.0 landed
-
Handle INSERT .. ON CONFLICT with partitioned tables
- 555ee77a9668 11.0 landed
-
Remove unnecessary members from ModifyTableState and ExecInsert
- ee0a1fc84eb2 11.0 landed