From 24ec874da257cf617359cce253ff4f8ad33166d7 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 22 Dec 2017 11:41:15 -0300 Subject: [PATCH] some fixes per Jesper --- doc/src/sgml/ref/create_index.sgml | 28 +++++++++++++++++----------- doc/src/sgml/ref/reindex.sgml | 5 +++++ src/backend/catalog/index.c | 2 +- src/bin/psql/tab-complete.c | 7 ++----- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index b7b0506d6d..5137fe6383 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -557,17 +557,23 @@ Indexes: When CREATE INDEX is invoked on a partitioned - table, the default behavior is to recurse to all partitions to - ensure they all have a matching indexes. Each partition is first - checked to determine whether equivalent index already exists, - and if so, that index will become attached as a partition index to - the index being created, which will be its parent index. If no - matching index exists, a new index will be created and automatically - attached. If ONLY is specified, no recursion - is done. Note, however, that any partition that is created in the - future using CREATE TABLE .. PARTITION OF will - automatically contain the index regardless of whether this option - was specified. + table, the default behavior is to recurse to all partitions to ensure + they all have matching indexes. + Each partition is first checked to determine whether an equivalent + index already exists, and if so, that index will become attached as a + partition index to the index being created, which will become its + parent index. + If no matching index exists, a new index will be created and + automatically attached; the name of the new index in each partition + will be determined as if no index name had been specified in the + command. + If the ONLY option is specified, no recursion + is done, and the index is marked invalid + (ALTER INDEX ... ATTACH PARTITION turns the index + valid, once all partitions acquire the index.) Note, however, that + any partition that is created in the future using + CREATE TABLE ... PARTITION OF will automatically + contain the index regardless of whether this option was specified. diff --git a/doc/src/sgml/ref/reindex.sgml b/doc/src/sgml/ref/reindex.sgml index 79f6931c6a..1c21fafb80 100644 --- a/doc/src/sgml/ref/reindex.sgml +++ b/doc/src/sgml/ref/reindex.sgml @@ -231,6 +231,11 @@ REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } + + Reindexing partitioned tables or partitioned indexes is not supported. + Each individual partition can be reindexed separately instead. + + diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index a62fe158ce..eee16dde25 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -629,7 +629,7 @@ UpdateIndexRelation(Oid indexoid, values[Anum_pg_index_indexrelid - 1] = ObjectIdGetDatum(indexoid); values[Anum_pg_index_indrelid - 1] = ObjectIdGetDatum(heapoid); - values[Anum_pg_index_indparentidx - 1 ] = ObjectIdGetDatum(parentIndexOid); + values[Anum_pg_index_indparentidx - 1] = ObjectIdGetDatum(parentIndexOid); values[Anum_pg_index_indnatts - 1] = Int16GetDatum(indexInfo->ii_NumIndexAttrs); values[Anum_pg_index_indisunique - 1] = BoolGetDatum(indexInfo->ii_Unique); values[Anum_pg_index_indisprimary - 1] = BoolGetDatum(primary); diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 6af773f1bf..159ce4129e 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1695,14 +1695,11 @@ psql_completion(const char *text, int start, int end) /* ALTER INDEX */ else if (Matches3("ALTER", "INDEX", MatchAny)) COMPLETE_WITH_LIST7("ALTER COLUMN", "OWNER TO", "RENAME TO", "SET", - "RESET", "ATTACH PARTITION", "DETACH PARTITION"); - else if (Matches4("ALTER", "INDEX", MatchAny, "ATTACH|DETACH")) + "RESET", "ATTACH PARTITION"); + else if (Matches4("ALTER", "INDEX", MatchAny, "ATTACH")) COMPLETE_WITH_CONST("PARTITION"); else if (Matches5("ALTER", "INDEX", MatchAny, "ATTACH", "PARTITION")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); - /* can be improved to show only indexes that are already attached */ - else if (Matches5("ALTER", "INDEX", MatchAny, "DETACH", "PARTITION")) - COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); /* ALTER INDEX ALTER COLUMN */ else if (Matches6("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny)) COMPLETE_WITH_CONST("SET STATISTICS"); -- 2.11.0