Faulty HEAP_XMAX_LOCK_ONLY & HEAP_KEYS_UPDATED hintbit combination

Поиск
Список
Период
Сортировка
От Julien Rouhaud
Тема Faulty HEAP_XMAX_LOCK_ONLY & HEAP_KEYS_UPDATED hintbit combination
Дата
Msg-id 20210124061758.GA11756@nol
обсуждение исходный текст
Ответы Re: Faulty HEAP_XMAX_LOCK_ONLY & HEAP_KEYS_UPDATED hintbit combination  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Re: Faulty HEAP_XMAX_LOCK_ONLY & HEAP_KEYS_UPDATED hintbit combination  (Mahendra Singh Thalor <mahi6run@gmail.com>)
Re: Faulty HEAP_XMAX_LOCK_ONLY & HEAP_KEYS_UPDATED hintbit combination  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Список pgsql-hackers
Hi,

While working on pg14 compatibility for an extension relying on an apparently
uncommon combination of FOR UPDATE and stored function calls, I hit some new
Asserts introduced in 866e24d47db (Extend amcheck to check heap pages):

+    /*
+     * Do not allow tuples with invalid combinations of hint bits to be placed
+     * on a page.  These combinations are detected as corruption by the
+     * contrib/amcheck logic, so if you disable one or both of these
+     * assertions, make corresponding changes there.
+     */
+    Assert(!((tuple->t_data->t_infomask & HEAP_XMAX_LOCK_ONLY) &&
+             (tuple->t_data->t_infomask2 & HEAP_KEYS_UPDATED)));


I attach a simple self contained script to reproduce the problem, the last
UPDATE triggering the Assert.

I'm not really familiar with this part of the code, so it's not exactly clear
to me if some logic is missing in compute_new_xmax_infomask() /
heap_prepare_insert(), or if this should actually be an allowed combination of
hint bit.

Вложения

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

Предыдущее
От: Dilip Kumar
Дата:
Сообщение: Re: Is Recovery actually paused?
Следующее
От: Bharath Rupireddy
Дата:
Сообщение: Re: Is Recovery actually paused?