Re: When creating index, why pointing to old version of tuple

From: Tender Wang <tndrwang(at)gmail(dot)com>
To: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: When creating index, why pointing to old version of tuple
Date: 2025-08-01 06:58:22
Message-ID: CAHewXNmP75-q7=sfg4Xan=Qf9UVRgQ5U9WZVmHTk67aWCm4+Bw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> 于2025年8月1日周五 14:47写道:

> > If the index points to the newest version of the tuple, how do old
> transactions read the old version of the tuple using an index scan for old
> transactions?
>
> Say there is a long transaction x1, it is on-going.
>
> And transaction x2 started later than x1 started, and x2 created an index.
> Should x1 be visible to the new index?
>
> My understanding is, the old transaction x1 cannot use the new index to
> scan for the old version of the tuple. If you read my example, in the
> index, the key is the new age value (99), while the old age value is 4,
> thus using the old value will not hit the index entry.
>

Yeah, in your case, the index is non-visible for x1. Your saying is
correct. But what if the table already has an index?
--
Thanks,
Tender Wang

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Chao Li 2025-08-01 07:03:45 Re: When creating index, why pointing to old version of tuple
Previous Message Chao Li 2025-08-01 06:56:33 Trivial patch to fix a typo