pgsql: Add TABLESPACE option to REINDEX - Mailing list pgsql-committers

From Michael Paquier
Subject pgsql: Add TABLESPACE option to REINDEX
Date
Msg-id [email protected]
Whole thread Raw
List pgsql-committers
Add TABLESPACE option to REINDEX

This patch adds the possibility to move indexes to a new tablespace
while rebuilding them.  Both the concurrent and the non-concurrent cases
are supported, and the following set of restrictions apply:
- When using TABLESPACE with a REINDEX command that targets a
partitioned table or index, all the indexes of the leaf partitions are
moved to the new tablespace.  The tablespace references of the non-leaf,
partitioned tables in pg_class.reltablespace are not changed. This
requires an extra ALTER TABLE SET TABLESPACE.
- Any index on a toast table rebuilt as part of a parent table is kept
in its original tablespace.
- The operation is forbidden on system catalogs, including trying to
directly move a toast relation with REINDEX.  This results in an error
if doing REINDEX on a single object.  REINDEX SCHEMA, DATABASE and
SYSTEM skip system relations when TABLESPACE is used.

Author: Alexey Kondratov, Michael Paquier, Justin Pryzby
Reviewed-by: Álvaro Herrera, Michael Paquier
Discussion: https://postgr.es/m/[email protected]

Branch
------
master

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

Modified Files
--------------
doc/src/sgml/ref/reindex.sgml             |  38 +++++++
src/backend/catalog/index.c               |  47 +++++++-
src/backend/commands/indexcmds.c          | 111 ++++++++++++++++++
src/bin/psql/tab-complete.c               |   4 +-
src/include/catalog/index.h               |   3 +
src/test/regress/input/tablespace.source  | 123 ++++++++++++++++++++
src/test/regress/output/tablespace.source | 183 ++++++++++++++++++++++++++++++
7 files changed, 505 insertions(+), 4 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Avoid crash when rolling back within a prepared statement.
Next
From: Michael Paquier
Date:
Subject: pgsql: Clarify comment in tablesync.c