pgsql: Preserve pg_attribute.attstattarget across REINDEX CONCURRENTLY

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Preserve pg_attribute.attstattarget across REINDEX CONCURRENTLY
Date: 2021-02-10 04:10:04
Message-ID: E1l9gpI-0005LO-Ef@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/bd12080980297dbc8ae926a3bd5b2ef9cc47932b

Modified Files
--------------
src/backend/catalog/index.c | 56 ++++++++++++++++++++++++++++++
src/backend/utils/cache/lsyscache.c | 27 ++++++++++++++
src/include/utils/lsyscache.h | 1 +
src/test/regress/expected/create_index.out | 15 ++++++++
src/test/regress/sql/create_index.sql | 8 +++++
5 files changed, 107 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2021-02-10 06:29:13 pgsql: Simplify code related to compilation of SSL and OpenSSL
Previous Message Amit Kapila 2021-02-10 01:55:36 pgsql: Make pg_replication_origin_drop safe against concurrent drops.