Re: HOT chain validation in verify_heapam()
От | Himanshu Upadhyaya |
---|---|
Тема | Re: HOT chain validation in verify_heapam() |
Дата | |
Msg-id | CAPF61jArDKa3QHhunH=wR__qAghy5gOAJoFyvXuTSwhcj5gG9A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: HOT chain validation in verify_heapam() (Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com>) |
Ответы |
Re: HOT chain validation in verify_heapam()
|
Список | pgsql-hackers |
Hi Hackers,
On Sun, Jan 22, 2023 at 8:48 PM Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com> wrote:
The test if (pred_in_progress || TransactionIdDidCommit(curr_xmin))
seems wrong to me. Shouldn't it be &&? Has this code been tested at
all? It doesn't seem to have a test case. Some of these other errors
don't, either. Maybe there's some that we can't easily test in an
automated way, but we should test what we can. I guess maybe casual
testing wouldn't reveal the problem here because of the recheck, but
it's worrying to find logic that doesn't look right with no
corresponding comments or test cases.This is totally my Mistake, apologies for that. I will fix this in my next patch. Regarding the missing test cases, I need one in-progress transaction for these test cases to be included in 004_verify_heapam.pl but I don't find a clear way to have an in-progress transaction(as per the design of 004_verify_heapam.pl ) that I can use in the test cases. I will be doing more research on a solution to add these missing test cases.
I am trying to add test cases related to in-progress transactions in
004_verify_heapam.pl but I am not able to find a proper way to achieve this.
We have a logic where we manually corrupt each tuple.
Please refer to the code just after the below comment in 004_verify_heapam.pl
"# Corrupt the tuples, one type of corruption per tuple. Some types of
# corruption cause verify_heapam to skip to the next tuple without
# performing any remaining checks, so we can't exercise the system properly if
# we focus all our corruption on a single tuple."
# corruption cause verify_heapam to skip to the next tuple without
# performing any remaining checks, so we can't exercise the system properly if
# we focus all our corruption on a single tuple."
Before this we stop the node by "$node->stop;" and then only we progress to
manual corruption. This will abort all running/in-progress transactions.
So, if we create an in-progress transaction and comment "$node->stop;"
then somehow all the code that we have for manual corruption does not work.
I think it is required to stop the server and then only proceed for manual corruption?
If this is the case then please suggest if there is a way to get an in-progress transaction
that we can use for manual corruption.
-- В списке pgsql-hackers по дате отправления: