]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Preserve pg_attribute.attstattarget across REINDEX CONCURRENTLY
authorMichael Paquier <michael@paquier.xyz>
Wed, 10 Feb 2021 04:09:12 +0000 (13:09 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 10 Feb 2021 04:09:12 +0000 (13:09 +0900)
commit85edb1f2615d48bdc2420b00c55286eef3a3244c
treeceef87f0f2c394b3f60a0e6926f2aa59aed16c00
parent1b9eb7cde7e9cdacd62d206b75ab66bfe6a9a0a4
Preserve pg_attribute.attstattarget across REINDEX CONCURRENTLY

For an index, attstattarget can be updated using ALTER INDEX SET
STATISTICS.  This data was lost on the new index after REINDEX
CONCURRENTLY.

The update of this field is done when the old and new indexes are
swapped to make the fix back-patchable.  Another approach we could look
after in the long-term is to change index_create() to pass the wanted
values of attstattarget when creating the new relation, but, as this
would cause an ABI breakage this can be done only on HEAD.

Reported-by: Ronan Dunklau
Author: Michael Paquier
Reviewed-by: Ronan Dunklau, Tomas Vondra
Discussion: https://postgr.es/m/16628084.uLZWGnKmhe@laptop-ronand
Backpatch-through: 12
src/backend/catalog/index.c
src/backend/utils/cache/lsyscache.c
src/include/utils/lsyscache.h
src/test/regress/expected/create_index.out
src/test/regress/sql/create_index.sql