Re: [HACKERS] Restrict concurrent update/delete with UPDATE of partition key

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: amul sul <sulamul@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Pavan Deolasee <pavan.deolasee@gmail.com>, Stephen Frost <sfrost@snowman.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2018-04-07T03:38:46Z
Lists: pgsql-hackers
Hi Tom, All,

On 2018-04-06 14:19:02 +0530, amul sul wrote:
> Thanks for the reminder -- fixed in the attached version.

Tom, this seems to be the best approach for fixing the visibility issues
around this. I've spent a good chunk of time looking at corruption
issues like the ones you feared (see [1]) and I'm not particularly
concerned.  I'm currently planning to go ahead with this, do you want to
"veto" that (informally, not formally)?

I'll go through this again tomorrow morning.

[1] https://postgr.es/m/20180405014439.fbezvbjrmcw64vjc@alap3.anarazel.de


> v9:
>  Its the rebase version of Andres Freund patch v8[1] with the
>  following additional changes:
>  3. Argument changing_part of heap_delete renamed to ChangingPart to be
>     consistent with ExecDelete

FWIW, I'd left it as it was before because the two functions have a bit
different coding style, and the capitalization seemed more fitting in
the surrounding context.

> +test: partition-key-update-1
> +test: partition-key-update-2
> +test: partition-key-update-3

Can you give these more descriptive names please (or further combine them)?

Greetings,

Andres Freund


Commits

  1. Raise error when affecting tuple moved into different partition.

  2. Handle INSERT .. ON CONFLICT with partitioned tables

  3. Change the way we mark tuples as frozen.