pgsql: Make index_set_state_flags() transactional
От | Michael Paquier |
---|---|
Тема | pgsql: Make index_set_state_flags() transactional |
Дата | |
Msg-id | E1kHgZa-0000hh-Rt@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Make index_set_state_flags() transactional 3c84046 is the original commit that introduced index_set_state_flags(), where the presence of SnapshotNow made necessary the use of an in-place update. SnapshotNow has been removed in 813fb03, so there is no actual reasons to not make this operation transactional. Note that while making the operation more robust, using a transactional operation in this routine was not strictly necessary as there was no use case for it yet. However, some future features are going to need a transactional behavior, like support for CREATE/DROP INDEX CONCURRENTLY with partitioned tables, where indexes in a partition tree need to have all their pg_index.indis* flags updated in the same transaction to make the operation stable to the end-user by keeping partition trees consistent, even with a failure mid-flight. REINDEX CONCURRENTLY uses already transactional updates when swapping the old and new indexes, making this change more consistent with the index-swapping logic. Author: Michael Paquier Reviewed-by: Anastasia Lubennikova Discussion: https://postgr.es/m/20200903080440.GA8559@paquier.xyz Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/83158f74d3ab8dd48aed92e84b6207562992d13d Modified Files -------------- src/backend/catalog/index.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-)
В списке pgsql-committers по дате отправления: