Re: Fix missing EvalPlanQual recheck for TID scans

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Sophie Alpert <pg@sophiebits.com>, David Rowley <dgrowleyml@gmail.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2025-09-15T06:27:37Z
Lists: pgsql-hackers
On Sunday, September 14, 2025, Chao Li <li.evan.chao@gmail.com> wrote:

>
> evantest=*# update t set b=30 where id = 1;
>
> evantest=*# update t set b = 30;  # block here
> ```
>
>   1 | 5 | 30    <=== only the old tuple is updated
>
>
Can’t test right now myself but I believe you’ll find this much more
illustrative if you don’t have both S1 and S2 set the same column to the
same value when doing their updates.  Also, include ctid in the select
outputs.  If the second update would have been a=10 your final output
should be 1,10,30 - I.e.  you’d find that both updates applied to id=1
after the second commit finished, and three tuples exist where id=1.

David J.

Commits

  1. Add missing EPQ recheck for TID Range Scan

  2. Add missing EPQ recheck for TID Scan

  3. Repair problems with EvalPlanQual where target table is scanned as

  4. Tid access method feature from Hiroshi Inoue, Inoue@tpf.co.jp