From b2de2a1172d52b9a9596d4366e758749cc586f2b Mon Sep 17 00:00:00 2001 From: Stephen Frost Date: Sun, 7 Sep 2014 08:04:35 -0400 Subject: [PATCH] Tab completion for ALTER .. ALL IN TABLESPACE Update the tab completion for the changes made in 3c4cf080879b386d4ed1814667aca025caafe608, which rework 'MOVE ALL' to be 'ALTER .. ALL IN TABLESPACE'. Fujii Masao Back-patch to 9.4, as the original change was. --- src/bin/psql/tab-complete.c | 66 ++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 74d35bca60..7577c4bf76 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -953,6 +953,13 @@ psql_completion(const char *text, int start, int end) /* ALTER */ + /* ALTER TABLE */ + else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && + pg_strcasecmp(prev_wd, "TABLE") == 0) + { + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, + "UNION SELECT 'ALL IN TABLESPACE'"); + } /* * complete with what you can alter (TABLE, GROUP, USER, ...) unless we're * in ALTER TABLE sth ALTER @@ -970,6 +977,25 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_LIST(list_ALTER); } + /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx */ + else if (pg_strcasecmp(prev4_wd, "ALL") == 0 && + pg_strcasecmp(prev3_wd, "IN") == 0 && + pg_strcasecmp(prev2_wd, "TABLESPACE") == 0) + { + static const char *const list_ALTERALLINTSPC[] = + {"SET TABLESPACE", "OWNED BY", NULL}; + + COMPLETE_WITH_LIST(list_ALTERALLINTSPC); + } + /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx OWNED BY */ + else if (pg_strcasecmp(prev6_wd, "ALL") == 0 && + pg_strcasecmp(prev5_wd, "IN") == 0 && + pg_strcasecmp(prev4_wd, "TABLESPACE") == 0 && + pg_strcasecmp(prev2_wd, "OWNED") == 0 && + pg_strcasecmp(prev4_wd, "BY") == 0) + { + COMPLETE_WITH_QUERY(Query_for_list_of_roles); + } /* ALTER AGGREGATE,FUNCTION */ else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && (pg_strcasecmp(prev2_wd, "AGGREGATE") == 0 || @@ -1106,6 +1132,13 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_LIST(list_ALTER_FOREIGN_TABLE); } + /* ALTER INDEX */ + else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && + pg_strcasecmp(prev_wd, "INDEX") == 0) + { + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, + "UNION SELECT 'ALL IN TABLESPACE'"); + } /* ALTER INDEX */ else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && pg_strcasecmp(prev2_wd, "INDEX") == 0) @@ -1169,7 +1202,8 @@ psql_completion(const char *text, int start, int end) pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && pg_strcasecmp(prev_wd, "VIEW") == 0) { - COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, + "UNION SELECT 'ALL IN TABLESPACE'"); } /* ALTER USER,ROLE */ @@ -1749,12 +1783,12 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_CONST("IDENTITY"); } - /* ALTER TABLESPACE with RENAME TO, OWNER TO, SET, RESET, MOVE */ + /* ALTER TABLESPACE with RENAME TO, OWNER TO, SET, RESET */ else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && pg_strcasecmp(prev2_wd, "TABLESPACE") == 0) { static const char *const list_ALTERTSPC[] = - {"RENAME TO", "OWNER TO", "SET", "RESET", "MOVE", NULL}; + {"RENAME TO", "OWNER TO", "SET", "RESET", NULL}; COMPLETE_WITH_LIST(list_ALTERTSPC); } @@ -1776,27 +1810,6 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_LIST(list_TABLESPACEOPTIONS); } - /* ALTER TABLESPACE MOVE ALL|TABLES|INDEXES|MATERIALIZED VIEWS */ - else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && - pg_strcasecmp(prev3_wd, "TABLESPACE") == 0 && - pg_strcasecmp(prev_wd, "MOVE") == 0) - { - static const char *const list_TABLESPACEMOVETARGETS[] = - {"ALL", "TABLES", "INDEXES", "MATERIALIZED VIEWS", NULL}; - - COMPLETE_WITH_LIST(list_TABLESPACEMOVETARGETS); - } - else if ((pg_strcasecmp(prev4_wd, "TABLESPACE") == 0 && - pg_strcasecmp(prev2_wd, "MOVE") == 0) || - (pg_strcasecmp(prev5_wd, "TABLESPACE") == 0 && - pg_strcasecmp(prev3_wd, "MOVE") == 0 && - pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0)) - { - static const char *const list_TABLESPACEMOVEOPTIONS[] = - {"OWNED BY", "TO", NULL}; - - COMPLETE_WITH_LIST(list_TABLESPACEMOVEOPTIONS); - } /* ALTER TEXT SEARCH */ else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && @@ -2798,9 +2811,8 @@ psql_completion(const char *text, int start, int end) * but we may as well tab-complete both: perhaps some users prefer one * variant or the other. */ - else if ((pg_strcasecmp(prev3_wd, "FETCH") == 0 || - pg_strcasecmp(prev3_wd, "MOVE") == 0) && - pg_strcasecmp(prev_wd, "TO") != 0) + else if (pg_strcasecmp(prev3_wd, "FETCH") == 0 || + pg_strcasecmp(prev3_wd, "MOVE") == 0) { static const char *const list_FROMIN[] = {"FROM", "IN", NULL};