pgsql: Avoid testing tuple visibility without buffer lock.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Avoid testing tuple visibility without buffer lock.
Дата
Msg-id E1byRyY-0008Tt-79@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid testing tuple visibility without buffer lock.

INSERT ... ON CONFLICT (specifically ExecCheckHeapTupleVisible) contains
another example of this unsafe coding practice.  It is much harder to get
a failure out of it than the case fixed in commit 6292c2339, because in
most scenarios any hint bits that could be set would have already been set
earlier in the command.  However, Konstantin Knizhnik reported a failure
with a custom transaction manager, and it's clearly possible to get a
failure via a race condition in async-commit mode.

For lack of a reproducible example, no regression test case in this
commit.

I did some testing with Asserts added to tqual.c's functions, and can say
that running "make check-world" exposed these two bugs and no others.
The Asserts are messy enough that I've not added them to the code for now.

Report: <57EE93C8.8080504@postgrespro.ru>
Related-Discussion: <CAO3NbwOycQjt2Oqy2VW-eLTq2M5uGMyHnGm=RNga4mjqcYD7gQ@mail.gmail.com>

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/beac79369411f62615d465953b9e6da1296758dc

Modified Files
--------------
src/backend/executor/nodeModifyTable.c | 6 ++++++
1 file changed, 6 insertions(+)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Don't throw serialization errors for self-conflicts in INSERT ON
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Avoid testing tuple visibility without buffer lock.