Re: Re: BUG #18750: Inappropriate update when it is blocked in RC

From: Pantelis Theodosiou <ypercube(at)gmail(dot)com>
To: yrshen(at)stu(dot)xidian(dot)edu(dot)cn
Cc: Greg Sabino Mullane <htamfids(at)gmail(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: Re: BUG #18750: Inappropriate update when it is blocked in RC
Date: 2024-12-25 12:46:16
Message-ID: CAE3TBxxaH_3t9mW8Znc9Cm5=MFWw7ojZvO2OQKEEaM4MYAiiaA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wed, Dec 25, 2024 at 7:58 AM <yrshen(at)stu(dot)xidian(dot)edu(dot)cn> wrote:

>
> Thank you very much for your explanation. So, under the READ COMMITTED of PostgreSQL, the UPDATE statement of Tx2 will only re-evaluate and update the initial row (null, 1), which it initially wanted to update, if the (null, 1) is then changed to (1, 3) by Tx1. Therefore, the expected result of the case is [(1,3), (1,2)] according to the rule of PostgreSQL instead of [(1, 2), (1, 2)], am I right?
>

Tx2 initially wanted to update the (1,1) row (WHERE a IS NOT NULL), which
was then changed to (1,3) by Tx1. This is the row that Tx2 UPDATE statement
will re-evaluate and update to (1,2).
The initially (null,1) row which is then changed to (1,3) by Tx1 is not
touched by Tx2.

The expected result of the case is [(1,3), (1,2)] , that is correct.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tomas Vondra 2024-12-25 15:43:53 Re: Corrupt index lead to skipped autovacuum
Previous Message yrshen 2024-12-25 05:57:58 Re: Re: BUG #18750: Inappropriate update when it is blocked in RC