]> granicus.if.org Git - postgresql/commitdiff
psql: Improve completion of FDW DDL commands
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 23 Jan 2016 11:57:42 +0000 (06:57 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 23 Jan 2016 11:57:42 +0000 (06:57 -0500)
Add
- ALTER FOREIGN DATA WRAPPER -> RENAME TO
- ALTER SERVER -> RENAME TO
- ALTER SERVER ... VERSION ... -> OPTIONS
- CREATE FOREIGN DATA WRAPPER -> OPTIONS
- CREATE SERVER -> OPTIONS
- CREATE|ALTER USER MAPPING -> OPTIONS

From: Andreas Karlsson <andreas@proxel.se>

src/bin/psql/tab-complete.c

index f09e65c58ddf3eacf34690dcd1d3c1c7ecee29ef..ff6f7d1b6be67b0f6805a812203c707c710f2112 100644 (file)
@@ -1417,7 +1417,7 @@ psql_completion(const char *text, int start, int end)
 
        /* ALTER FOREIGN DATA WRAPPER <name> */
        else if (Matches5("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny))
-               COMPLETE_WITH_LIST4("HANDLER", "VALIDATOR", "OPTIONS", "OWNER TO");
+               COMPLETE_WITH_LIST5("HANDLER", "VALIDATOR", "OPTIONS", "OWNER TO", "RENAME TO");
 
        /* ALTER FOREIGN TABLE <name> */
        else if (Matches4("ALTER", "FOREIGN", "TABLE", MatchAny))
@@ -1544,7 +1544,10 @@ psql_completion(const char *text, int start, int end)
                COMPLETE_WITH_LIST3("MINVALUE", "MAXVALUE", "CYCLE");
        /* ALTER SERVER <name> */
        else if (Matches3("ALTER", "SERVER", MatchAny))
-               COMPLETE_WITH_LIST3("VERSION", "OPTIONS", "OWNER TO");
+               COMPLETE_WITH_LIST4("VERSION", "OPTIONS", "OWNER TO", "RENAME TO");
+       /* ALTER SERVER <name> VERSION <version>*/
+       else if (Matches5("ALTER", "SERVER", MatchAny, "VERSION", MatchAny))
+               COMPLETE_WITH_CONST("OPTIONS");
        /* ALTER SYSTEM SET, RESET, RESET ALL */
        else if (Matches2("ALTER", "SYSTEM"))
                COMPLETE_WITH_LIST2("SET", "RESET");
@@ -2000,7 +2003,7 @@ psql_completion(const char *text, int start, int end)
 
        /* CREATE FOREIGN DATA WRAPPER */
        else if (Matches5("CREATE", "FOREIGN", "DATA", "WRAPPER", MatchAny))
-               COMPLETE_WITH_LIST2("HANDLER", "VALIDATOR");
+               COMPLETE_WITH_LIST3("HANDLER", "VALIDATOR", "OPTIONS");
 
        /* CREATE INDEX --- is allowed inside CREATE SCHEMA, so use TailMatches */
        /* First off we complete CREATE UNIQUE with "INDEX" */
@@ -2379,6 +2382,10 @@ psql_completion(const char *text, int start, int end)
        else if (TailMatches3("FOREIGN", "DATA", "WRAPPER") &&
                         !TailMatches4("CREATE", MatchAny, MatchAny, MatchAny))
                COMPLETE_WITH_QUERY(Query_for_list_of_fdws);
+       /* applies in CREATE SERVER */
+       else if (TailMatches4("FOREIGN", "DATA", "WRAPPER", MatchAny) &&
+                        HeadMatches2("CREATE", "SERVER"))
+               COMPLETE_WITH_CONST("OPTIONS");
 
 /* FOREIGN TABLE */
        else if (TailMatches2("FOREIGN", "TABLE") &&
@@ -2823,6 +2830,8 @@ psql_completion(const char *text, int start, int end)
                COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings);
        else if (Matches5("CREATE|ALTER|DROP", "USER", "MAPPING", "FOR", MatchAny))
                COMPLETE_WITH_CONST("SERVER");
+       else if (Matches7("CREATE|ALTER", "USER", "MAPPING", "FOR", MatchAny, "SERVER", MatchAny))
+               COMPLETE_WITH_CONST("OPTIONS");
 
 /*
  * VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]