Re: ON CONFLICT DO UPDATE for partitioned tables
Amit Langote <langote_amit_f8@lab.ntt.co.jp>
From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
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-19T01:51:02Z
Lists: pgsql-hackers
On 2018/04/18 22:40, Alvaro Herrera wrote: > Amit Langote wrote: >> On 2018/04/18 0:04, Alvaro Herrera wrote: >>> Amit Langote wrote: >>> >>>> I just confirmed my hunch that this wouldn't somehow do the right thing >>>> when the OID system column is involved. Like this case: >>> >>> This looks too big a patch to pursue now. I'm inclined to just remove >>> the equalTupdesc changes. >> >> OK. Here is the patch that removes equalTupdesc optimization. > > Hmm. If we modify (during pg12, of course -- not now) partition tables > that are created identical to their parent table so that they share the > pg_type row, this would become useful. Unless there a reason why that > change is completely unworkable, I'd just leave it there. (I claim that > it works like that only because it used to work like that, not because > it's impossible to make work the other way.) 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. Although, just leaving it there now would mean we're adding a few cycles needlessly in the PG 11 code. Why not add that optimization when we surely know it can work? Thanks, Amit
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