Re: BUG #17689: Two UPDATE operators in common table expressions (CTE) perform not as expected

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Marko Tiikkaja <marko(at)joh(dot)to>, eugene(dot)pliskin(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17689: Two UPDATE operators in common table expressions (CTE) perform not as expected
Date: 2022-11-18 18:53:14
Message-ID: 2251431.1668797594@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> writes:
> On 2022-Nov-18, Marko Tiikkaja wrote:
>> This is a documented limitation:
>>> Trying to update the same row twice in a single statement is not
>>> supported.

> I wonder if we should try to detect the case, and raise an error instead
> of it resulting in undefined behavior.

My recollection is that that is really fallout from an ancient and
intentional executor behavior, that we have to ignore multiple updates
in order to not get into infinite loops. See comment about the
"Halloween problem" in nodeLockRows.c. (I'm pretty sure there were once
more comments about that, somewhere closer to ExecUpdate/ExecDelete ---
this all dates back to Berkeley.)

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2022-11-18 19:21:05 BUG #17690: Nonresponsive client on replica can halt replication indefinitely
Previous Message Alvaro Herrera 2022-11-18 17:05:57 Re: BUG #17689: Two UPDATE operators in common table expressions (CTE) perform not as expected