]> granicus.if.org Git - postgresql/commitdiff
Fix incorrect tab-completion for GRANT and REVOKE
authorFujii Masao <fujii@postgresql.org>
Thu, 1 Oct 2015 14:39:02 +0000 (23:39 +0900)
committerFujii Masao <fujii@postgresql.org>
Thu, 1 Oct 2015 14:39:02 +0000 (23:39 +0900)
Previously "GRANT * ON * TO " was tab-completed to add an extra "TO",
rather than with a list of roles. This is the bug that commit 2f88807
introduced unexpectedly. This commit fixes that incorrect tab-completion.

Thomas Munro, reviewed by Jeff Janes.

src/bin/psql/tab-complete.c

index 0cb34640eded0f1e317890bc1ac7371f64571367..4294ffd0520ebc4ca7bedfe6c74b28532b070ab9 100644 (file)
@@ -3227,15 +3227,6 @@ psql_completion(const char *text, int start, int end)
                        COMPLETE_WITH_CONST("FROM");
        }
 
-       /* Complete "GRANT/REVOKE * ON * *" with TO/FROM */
-       else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 &&
-                        pg_strcasecmp(prev3_wd, "ON") == 0)
-               COMPLETE_WITH_CONST("TO");
-
-       else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 &&
-                        pg_strcasecmp(prev3_wd, "ON") == 0)
-               COMPLETE_WITH_CONST("FROM");
-
        /* Complete "GRANT/REVOKE * ON ALL * IN SCHEMA *" with TO/FROM */
        else if ((pg_strcasecmp(prev8_wd, "GRANT") == 0 ||
                          pg_strcasecmp(prev8_wd, "REVOKE") == 0) &&
@@ -3295,6 +3286,15 @@ psql_completion(const char *text, int start, int end)
                          pg_strcasecmp(prev_wd, "FROM") == 0))
                COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
 
+       /* Complete "GRANT/REVOKE * ON * *" with TO/FROM */
+       else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 &&
+                        pg_strcasecmp(prev3_wd, "ON") == 0)
+               COMPLETE_WITH_CONST("TO");
+
+       else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 &&
+                        pg_strcasecmp(prev3_wd, "ON") == 0)
+               COMPLETE_WITH_CONST("FROM");
+
        /*
         * Complete "GRANT/REVOKE * TO/FROM" with username, PUBLIC,
         * CURRENT_USER, or SESSION_USER.