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
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 |