diff options
| author | Michael Paquier <michael@paquier.xyz> | 2021-02-04 14:34:20 +0900 | 
|---|---|---|
| committer | Michael Paquier <michael@paquier.xyz> | 2021-02-04 14:34:20 +0900 | 
| commit | c5b286047cd698021e57a527215b48865fd4ad4e (patch) | |
| tree | f6be35e4e5f3375949226731d3ce682398bd6c39 /src/bin/psql/tab-complete.c | |
| parent | 9624321ec502f4e4f4722290b358694049447f95 (diff) | |
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
Diffstat (limited to 'src/bin/psql/tab-complete.c')
| -rw-r--r-- | src/bin/psql/tab-complete.c | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 17f72650388..a75647b1cc5 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3641,7 +3641,9 @@ psql_completion(const char *text, int start, int end)  		 * one word, so the above test is correct.  		 */  		if (ends_with(prev_wd, '(') || ends_with(prev_wd, ',')) -			COMPLETE_WITH("CONCURRENTLY", "VERBOSE"); +			COMPLETE_WITH("CONCURRENTLY", "TABLESPACE", "VERBOSE"); +		else if (TailMatches("TABLESPACE")) +			COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);  	}  /* SECURITY LABEL */ | 
