Re: HOT chain validation in verify_heapam()
От | Himanshu Upadhyaya |
---|---|
Тема | Re: HOT chain validation in verify_heapam() |
Дата | |
Msg-id | CAPF61jCP+6hPvrackYWYgBw10cQQGfVbJnUFXAFYaoodw7fAqQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: HOT chain validation in verify_heapam() (Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com>) |
Список | pgsql-hackers |
On Wed, Nov 16, 2022 at 12:41 PM Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com> wrote:
> + }
> +
> + /* Loop over offsets and validate the data in the predecessor array. */
> + for (OffsetNumber currentoffnum = FirstOffsetNumber; currentoffnum <= maxoff;
> + currentoffnum = OffsetNumberNext(currentoffnum))
> + {
> + HeapTupleHeader pred_htup;
> + HeapTupleHeader curr_htup;
> + TransactionId pred_xmin;
> + TransactionId curr_xmin;
> + ItemId pred_lp;
> + ItemId curr_lp;
> +
> + ctx.offnum = predecessor[currentoffnum];
> + ctx.attnum = -1;
> +
> + if (ctx.offnum == 0)
> + {
> + /*
> + * Either the root of the chain or an xmin-aborted tuple from
> + * an abandoned portion of the HOT chain.
> + */
Hm - couldn't we check that the tuple could conceivably be at the root of a
chain? I.e. isn't HEAP_HOT_UPDATED? Or alternatively has an aborted xmin?I don't see a way to check if tuple is at the root of HOT chain because predecessor array will always be having either xmin from non-abandoned transaction or it will be zero. We can't differentiate root or tuple inserted via abandoned transaction.
I was wrong here. I think this can be done and will be doing these changes in my next patch.
В списке pgsql-hackers по дате отправления: