Add TABLESPACE option to REINDEX
Michael Paquier <michael@paquier.xyz>
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/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/ref/reindex.sgml | modified | +38 −0 |
| src/backend/catalog/index.c | modified | +44 −3 |
| src/backend/commands/indexcmds.c | modified | +111 −0 |
| src/bin/psql/tab-complete.c | modified | +3 −1 |
| src/include/catalog/index.h | modified | +3 −0 |
| src/test/regress/input/tablespace.source | modified | +123 −0 |
| src/test/regress/output/tablespace.source | modified | +183 −0 |
Documentation touched
Discussion
- Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly 173 messages · 2018-12-24 → 2021-04-21