pgsql: Fix updates of indisvalid for partitioned indexes

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Fix updates of indisvalid for partitioned indexes
Дата
Msg-id E1qK7Nr-000FaL-9X@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix updates of indisvalid for partitioned indexes

indisvalid is switched to true for partitioned indexes when all its
partitions have valid indexes when attaching a new partition, up to the
top-most parent if all its leaves are themselves valid when dealing with
multiple layers of partitions.

The copy of the tuple from pg_index used to switch indisvalid to true
came from the relation cache, which is incorrect.  Particularly, in the
case reported by Shruthi Gowda, executing a series of commands in a
single transaction would cause the validation of partitioned indexes to
use an incorrect version of a pg_index tuple, as indexes are reloaded
after an invalidation request with RelationReloadIndexInfo(), a much
faster version than a full index cache rebuild.  In this case, the
limited information updated in the cache leads to an incorrect version
of the tuple used.  One of the symptoms reported was the following
error, with a replica identity update, for instance:
"ERROR: attempted to update invisible tuple"

This is incorrect since 8b08f7d, so backpatch all the way down.

Reported-by: Shruthi Gowda
Author: Michael Paquier
Reviewed-by: Shruthi Gowda, Dilip Kumar
Discussion: https://postgr.es/m/CAASxf_PBcxax0wW-3gErUyftZ0XrCs3Lrpuhq4-Z3Fak1DoW7Q@mail.gmail.com
Backpatch-through: 11

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/954cc2139c035e5806a7acd3e662e1144ef3b74b

Modified Files
--------------
src/backend/commands/tablecmds.c       | 15 +++++---
src/test/regress/expected/indexing.out | 63 ++++++++++++++++++++++++++++++++++
src/test/regress/sql/indexing.sql      | 43 +++++++++++++++++++++++
3 files changed, 117 insertions(+), 4 deletions(-)


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

Предыдущее
От: Thomas Munro
Дата:
Сообщение: pgsql: Remove wal_sync_method=fsync_writethrough on Windows.
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Add indisreplident to fields refreshed by RelationReloadIndexInf