aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2016-01-16 20:46:14 -0500
committerPeter Eisentraut <peter_e@gmx.net>2016-01-16 20:46:14 -0500
commit4189e3d659abb48d159a6c3faabaa7e99498ca3e (patch)
tree0a4e994331d12e621335b7a5755be7fadccc5dec
parentcf7dfbf2d6c5892747cd6fca399350d86c16f00f (diff)
downloadpostgresql-4189e3d659abb48d159a6c3faabaa7e99498ca3e.tar.gz
postgresql-4189e3d659abb48d159a6c3faabaa7e99498ca3e.zip
psql: Add completion support for DROP INDEX CONCURRENTLY
based on patch by Kyotaro Horiguchi
-rw-r--r--src/bin/psql/tab-complete.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 878d4f07010..c3c77bd5876 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -2009,8 +2009,8 @@ psql_completion(const char *text, int start, int end)
else if (TailMatches3("INDEX|CONCURRENTLY", MatchAny, "ON") ||
TailMatches2("INDEX|CONCURRENTLY", "ON"))
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL);
- /* Complete ... INDEX CONCURRENTLY with "ON" and existing indexes */
- else if (TailMatches2("INDEX", "CONCURRENTLY"))
+ /* Complete CREATE|UNIQUE INDEX CONCURRENTLY with "ON" and existing indexes */
+ else if (TailMatches3("CREATE|UNIQUE", "INDEX", "CONCURRENTLY"))
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
" UNION SELECT 'ON'");
/* Complete CREATE|UNIQUE INDEX [CONCURRENTLY] <sth> with "ON" */
@@ -2247,7 +2247,7 @@ psql_completion(const char *text, int start, int end)
/* DROP */
/* Complete DROP object with CASCADE / RESTRICT */
else if (Matches3("DROP",
- "COLLATION|CONVERSION|DOMAIN|EXTENSION|INDEX|LANGUAGE|SCHEMA|SEQUENCE|SERVER|TABLE|TYPE|VIEW",
+ "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|SCHEMA|SEQUENCE|SERVER|TABLE|TYPE|VIEW",
MatchAny) ||
(Matches4("DROP", "AGGREGATE|FUNCTION", MatchAny, MatchAny) &&
ends_with(prev_wd, ')')) ||
@@ -2265,6 +2265,17 @@ psql_completion(const char *text, int start, int end)
else if (Matches2("DROP", "FOREIGN"))
COMPLETE_WITH_LIST2("DATA WRAPPER", "TABLE");
+ /* DROP INDEX */
+ else if (Matches2("DROP", "INDEX"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches3("DROP", "INDEX", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);
+ else if (Matches3("DROP", "INDEX", MatchAny))
+ COMPLETE_WITH_LIST2("CASCADE", "RESTRICT");
+ else if (Matches4("DROP", "INDEX", "CONCURRENTLY", MatchAny))
+ COMPLETE_WITH_LIST2("CASCADE", "RESTRICT");
+
/* DROP MATERIALIZED VIEW */
else if (Matches2("DROP", "MATERIALIZED"))
COMPLETE_WITH_CONST("VIEW");