Re: support for MERGE

From: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: "Andres Freund" <andres(at)anarazel(dot)de>
Cc: "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Simon Riggs" <simon(dot)riggs(at)enterprisedb(dot)com>, "Tomas Vondra" <tomas(dot)vondra(at)enterprisedb(dot)com>, "Zhihong Yu" <zyu(at)yugabyte(dot)com>, "Daniel Westermann" <dwe(at)dbi-services(dot)com>, "Amit Langote" <amitlangote09(at)gmail(dot)com>, "Justin Pryzby" <pryzby(at)telsasoft(dot)com>, "Japin Li" <japinli(at)hotmail(dot)com>, "Erik Rijkers" <er(at)xs4all(dot)nl>, "Jaime Casanova" <jcasanov(at)systemguards(dot)com(dot)ec>
Subject: Re: support for MERGE
Date: 2022-03-07 20:04:01
Message-ID: 2fcf717a-c542-466a-9031-d2c18206e5c2@www.fastmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Mar 7, 2022, at 4:59 PM, Álvaro Herrera wrote:
> I attach v13 here. This version includes a 0002 that's does the split of nodeModifyTable.c routines, then 0003 implements MERGE on top of that. 0001 is as before.

In 0002, I've opted to have two separate structs. One is the ModifyTableContext, as before, but I've removed 'tupleid' and 'oldtuple' (the specification of the tuple to delete/update) because it makes ExecCrossPartitionUpdate cleaner if we pass them separately. The second struct is UpdateContext, which is used inside ExecUpdate as output data from its subroutines. This is also for the benefit of cross-partition updates.

I'm pretty happy with how this turned out; even without considering MERGE, it seems to me that ExecUpdate benefits from being shorter.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2022-03-07 20:05:03 Re: Time to drop plpython2?
Previous Message Mark Dilger 2022-03-07 20:03:55 Re: role self-revocation