pgsql: Rework logic and simplify syntax of REINDEX DATABASE/SYSTEM

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Rework logic and simplify syntax of REINDEX DATABASE/SYSTEM
Date: 2022-07-19 02:46:33
Message-ID: E1oDdFo-000CoN-Oy@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Rework logic and simplify syntax of REINDEX DATABASE/SYSTEM

Per discussion, this commit includes a couple of changes to these two
flavors of REINDEX:
* The grammar is changed to make the name of the object optional, hence
one can rebuild all the indexes of the wanted area by specifying only
"REINDEX DATABASE;" or "REINDEX SYSTEM;". Previously, the object name
was mandatory and had to match the name of the database on which the
command is issued.
* REINDEX DATABASE is changed to ignore catalogs, making this task only
possible with REINDEX SYSTEM. This is a historical change, but there
was no way to work only on the indexes of a database without touching
the catalogs. We have discussed more approaches here, like the addition
of an option to skip the catalogs without changing the original
behavior, but concluded that what we have here is for the best.

This builds on top of the TAP tests introduced in 5fb5b6c, showing the
change in behavior for REINDEX SYSTEM. reindexdb is updated so as we do
not issue an extra REINDEX SYSTEM when working on a database in the
non-concurrent case, something that was confusing when --concurrently
got introduced, so this simplifies the code.

Author: Simon Riggs
Reviewed-by: Ashutosh Bapat, Bernd Helmle, Álvaro Herrera, Cary Huang,
Michael Paquier
Discussion: https://postgr.es/m/CANbhV-H=NH6Om4-X6cRjDWfH_Mu1usqwkuYVp-hwdB_PSHWRfg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2cbc3c17a5c11d13c0ac92fe7557c56408f8f3d0

Modified Files
--------------
doc/src/sgml/ref/reindex.sgml | 12 +++++++-----
src/backend/commands/indexcmds.c | 21 ++++++++++++++++-----
src/backend/parser/gram.y | 25 ++++++++++++++++++++++++-
src/bin/scripts/reindexdb.c | 12 ------------
src/bin/scripts/t/090_reindexdb.pl | 18 ++++--------------
5 files changed, 51 insertions(+), 37 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Pavel Stehule 2022-07-19 03:26:58 Re: pgsql: Default to hidden visibility for extension libraries where possi
Previous Message Michael Paquier 2022-07-19 01:55:37 pgsql: Add more tests for REINDEX DATABASE/SYSTEM with relfilenode chan