Various fixes to REFRESH MATERIALIZED VIEW tab completion.
authorKevin Grittner <kgrittn@postgresql.org>
Tue, 26 Jan 2016 14:45:08 +0000 (08:45 -0600)
committerKevin Grittner <kgrittn@postgresql.org>
Tue, 26 Jan 2016 14:45:08 +0000 (08:45 -0600)
Masahiko Sawada, Fujii Masao, Kevin Grittner

src/bin/psql/tab-complete.c

index ff6f7d1b6be67b0f6805a812203c707c710f2112..008f3cbf46ed25da57ac05a8f7228d541a0c9244 100644 (file)
@@ -899,7 +899,7 @@ static const pgsql_thing_t words_after_create[] = {
        {"GROUP", Query_for_list_of_roles},
        {"LANGUAGE", Query_for_list_of_languages},
        {"INDEX", NULL, &Query_for_list_of_indexes},
-       {"MATERIALIZED VIEW", NULL, NULL},
+       {"MATERIALIZED VIEW", NULL, &Query_for_list_of_matviews},
        {"OPERATOR", NULL, NULL},       /* Querying for this is probably not such a
                                                                 * good idea. */
        {"OWNED", NULL, NULL, THING_NO_CREATE},         /* for DROP OWNED BY ... */
@@ -1264,7 +1264,8 @@ psql_completion(const char *text, int start, int end)
                "DELETE FROM", "DISCARD", "DO", "DROP", "END", "EXECUTE", "EXPLAIN",
                "FETCH", "GRANT", "IMPORT", "INSERT", "LISTEN", "LOAD", "LOCK",
                "MOVE", "NOTIFY", "PREPARE",
-               "REASSIGN", "REFRESH", "REINDEX", "RELEASE", "RESET", "REVOKE", "ROLLBACK",
+               "REASSIGN", "REFRESH MATERIALIZED VIEW", "REINDEX", "RELEASE",
+               "RESET", "REVOKE", "ROLLBACK",
                "SAVEPOINT", "SECURITY LABEL", "SELECT", "SET", "SHOW", "START",
                "TABLE", "TRUNCATE", "UNLISTEN", "UPDATE", "VACUUM", "VALUES", "WITH",
                NULL
@@ -2653,13 +2654,15 @@ psql_completion(const char *text, int start, int end)
        else if (Matches4("REFRESH", "MATERIALIZED", "VIEW", MatchAny))
                COMPLETE_WITH_CONST("WITH");
        else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny))
-               COMPLETE_WITH_CONST("WITH DATA");
+               COMPLETE_WITH_CONST("WITH");
        else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH"))
                COMPLETE_WITH_LIST2("NO DATA", "DATA");
        else if (Matches6("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH"))
-               COMPLETE_WITH_CONST("DATA");
+               COMPLETE_WITH_LIST2("NO DATA", "DATA");
        else if (Matches6("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH", "NO"))
                COMPLETE_WITH_CONST("DATA");
+       else if (Matches7("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH", "NO"))
+               COMPLETE_WITH_CONST("DATA");
 
 /* REINDEX */
        else if (Matches1("REINDEX"))