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

Поиск
Список
Период
Сортировка
От Chao Li
Тема Re: When creating index, why pointing to old version of tuple
Дата
Msg-id CAEoWx2=XhC+MGqm9pyLng0er8M4+LtwHGydy7DcK3Fxzu2-jcg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: When creating index, why pointing to old version of tuple  (Tender Wang <tndrwang@gmail.com>)
Ответы When creating index, why pointing to old version of tuple
Список pgsql-hackers

> But what if the table already has an index? 

I have tested that, if I create the index first, then update the tuple, the index entry will only point to the new version of data. That's why my question was specifically about creating the index after updating the tuple.


Chao Li (Evan)
------------------------------
HighGo Software Inc.
https://www.highgo.com/


Tender Wang <tndrwang@gmail.com> 于2025年8月1日周五 14:58写道:


Chao Li <li.evan.chao@gmail.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

В списке pgsql-hackers по дате отправления: