pgsql: Preserve opclass parameters across REINDEX CONCURRENTLY

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Preserve opclass parameters across REINDEX CONCURRENTLY
Date: 2021-11-01 02:41:26
Message-ID: E1mhNGI-0003wH-TC@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Preserve opclass parameters across REINDEX CONCURRENTLY

The opclass parameter Datums from the old index are fetched in the same
way as for predicates and expressions, by grabbing them directly from
the system catalogs. They are then copied into the new IndexInfo that
will be used for the creation of the new copy.

This caused the new index to be rebuilt with default parameters rather
than the ones pre-defined by a user. The only way to get back a new
index with correct opclass parameters would be to recreate a new index
from scratch.

The issue has been introduced by 911e702.

Author: Michael Paquier
Reviewed-by: Zhihong Yu
Discussion: https://postgr.es/m/YX0CG/QpLXcPr8HJ(at)paquier(dot)xyz
Backpatch-through: 13

Branch
------
REL_14_STABLE

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

Modified Files
--------------
src/backend/catalog/index.c | 10 ++++++++++
src/test/regress/expected/create_index.out | 19 +++++++++++++++++++
src/test/regress/sql/create_index.sql | 9 +++++++++
3 files changed, 38 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2021-11-01 04:19:08 pgsql: Add TAP test for pg_receivewal with timeline switch
Previous Message Tom Lane 2021-10-31 23:14:12 pgsql: Don't try to read a multi-GB pg_stat_statements file in one call