Tab completion for ALTER .. ALL IN TABLESPACE

Update the tab completion for the changes made in
3c4cf08087, which rework 'MOVE ALL' to be
'ALTER .. ALL IN TABLESPACE'.

Fujii Masao

Back-patch to 9.4, as the original change was.
This commit is contained in:
Stephen Frost 2014-09-07 08:04:35 -04:00
parent 465b52e74c
commit b2de2a1172
1 changed files with 39 additions and 27 deletions

View File

@ -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 <name> */
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 <name> */
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 <name> */
@ -1749,12 +1783,12 @@ psql_completion(const char *text, int start, int end)
COMPLETE_WITH_CONST("IDENTITY");
}
/* ALTER TABLESPACE <foo> with RENAME TO, OWNER TO, SET, RESET, MOVE */
/* ALTER TABLESPACE <foo> 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 <foo> 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};