From 7ff8f79d4295042e09efdc8a0c16ccd660968cf5 Mon Sep 17 00:00:00 2001 From: Shi Yu Date: Wed, 28 Sep 2022 17:59:17 +0800 Subject: [PATCH v2 2/2] Fix tab completion for GRANT/REVOKE The result of tab completion for GRANT contains GRANT, but there's no such a privilege. Fix it in this patch. --- src/bin/psql/tab-complete.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 71cfe8aec1..dbd34e4987 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3749,9 +3749,29 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH("SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER", "EXECUTE", "USAGE", "ALL"); - else + else if (TailMatches("REVOKE", "GRANT")) + COMPLETE_WITH("OPTION FOR"); + else if (TailMatches("GRANT") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + "SELECT", + "INSERT", + "UPDATE", + "DELETE", + "TRUNCATE", + "REFERENCES", + "TRIGGER", + "CREATE", + "CONNECT", + "TEMPORARY", + "EXECUTE", + "USAGE", + "SET", + "ALTER SYSTEM", + "ALL"); + else if (TailMatches("REVOKE")) COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, - "GRANT", + "GRANT OPTION FOR", "SELECT", "INSERT", "UPDATE", @@ -3769,8 +3789,6 @@ psql_completion(const char *text, int start, int end) "ALL"); } - else if (TailMatches("REVOKE", "GRANT")) - COMPLETE_WITH("OPTION FOR"); else if (TailMatches("REVOKE", "GRANT", "OPTION")) COMPLETE_WITH("FOR"); -- 2.31.1