]> granicus.if.org Git - postgresql/commitdiff
psql: Add completion support for DROP INDEX CONCURRENTLY
authorPeter Eisentraut <peter_e@gmx.net>
Sun, 17 Jan 2016 01:46:14 +0000 (20:46 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Sun, 17 Jan 2016 01:46:14 +0000 (20:46 -0500)
based on patch by Kyotaro Horiguchi

src/bin/psql/tab-complete.c

index 878d4f0701039c3df833ebb54d050f6af2d8e333..c3c77bd58765371aeebf8d0540c5be3dc415d3b8 100644 (file)
@@ -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");