Skip to content

Commit 304b6b1

Browse files
Add more tab completion support for ALTER DEFAULT PRIVILEGES in psql.
This adds tab completion of "GRANT" and "REVOKE [GRANT OPTION FOR]" for ALTER DEFAULT PRIVILEGES, and adds "WITH GRANT OPTION" for ALTER DEFAULT PRIVILEGES ... GRANT ... TO role. Author: Vignesh C, with cosmetic adjustments by me Reviewed-by: Shubham Khanna, Masahiko Sawada Discussion: https://postgr.es/m/CALDaNm1aEdJb-QJi%3DGWStkfj_%2BEDUK_VtDkn%2BTjQ2z7HyU0MBw%40mail.gmail.com
1 parent 3b08133 commit 304b6b1

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/bin/psql/tab-complete.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2147,7 +2147,7 @@ psql_completion(const char *text, int start, int end)
21472147

21482148
/* ALTER DEFAULT PRIVILEGES */
21492149
else if (Matches("ALTER", "DEFAULT", "PRIVILEGES"))
2150-
COMPLETE_WITH("FOR ROLE", "IN SCHEMA");
2150+
COMPLETE_WITH("FOR", "GRANT", "IN SCHEMA", "REVOKE");
21512151
/* ALTER DEFAULT PRIVILEGES FOR */
21522152
else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "FOR"))
21532153
COMPLETE_WITH("ROLE");
@@ -3949,9 +3949,18 @@ psql_completion(const char *text, int start, int end)
39493949
* privileges (can't grant roles)
39503950
*/
39513951
if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES"))
3952-
COMPLETE_WITH("SELECT", "INSERT", "UPDATE",
3953-
"DELETE", "TRUNCATE", "REFERENCES", "TRIGGER",
3954-
"CREATE", "EXECUTE", "USAGE", "MAINTAIN", "ALL");
3952+
{
3953+
if (TailMatches("GRANT") ||
3954+
TailMatches("REVOKE", "GRANT", "OPTION", "FOR"))
3955+
COMPLETE_WITH("SELECT", "INSERT", "UPDATE",
3956+
"DELETE", "TRUNCATE", "REFERENCES", "TRIGGER",
3957+
"CREATE", "EXECUTE", "USAGE", "MAINTAIN", "ALL");
3958+
else if (TailMatches("REVOKE"))
3959+
COMPLETE_WITH("SELECT", "INSERT", "UPDATE",
3960+
"DELETE", "TRUNCATE", "REFERENCES", "TRIGGER",
3961+
"CREATE", "EXECUTE", "USAGE", "MAINTAIN", "ALL",
3962+
"GRANT OPTION FOR");
3963+
}
39553964
else if (TailMatches("GRANT"))
39563965
COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles,
39573966
Privilege_options_of_grant_and_revoke);
@@ -4133,6 +4142,9 @@ psql_completion(const char *text, int start, int end)
41334142
else if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES") && TailMatches("TO|FROM"))
41344143
COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles,
41354144
Keywords_for_list_of_grant_roles);
4145+
/* Offer WITH GRANT OPTION after that */
4146+
else if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES") && TailMatches("TO", MatchAny))
4147+
COMPLETE_WITH("WITH GRANT OPTION");
41364148
/* Complete "GRANT/REVOKE ... ON * *" with TO/FROM */
41374149
else if (HeadMatches("GRANT") && TailMatches("ON", MatchAny, MatchAny))
41384150
COMPLETE_WITH("TO");

0 commit comments

Comments
 (0)