Thanks to visit codestin.com
Credit goes to github.com

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)