Fix incorrect tab-completion for GRANT and REVOKE
authorFujii Masao <[email protected]>
Thu, 1 Oct 2015 14:39:02 +0000 (23:39 +0900)
committerFujii Masao <[email protected]>
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.