Tab completion for GRANT MAINTAIN

Started by Ken Katoover 2 years ago4 messages
#1Ken Kato
katouknl@oss.nttdata.com
1 attachment(s)

Hi hackers,

I found that GRANT MAINTAIN is not tab-completed with ON, so here is a
patch.

Best wishes,

--
Ken Kato
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION

Attachments:

grant_maintain_tab_completion_v1.patchtext/x-diff; charset=us-ascii; name=grant_maintain_tab_completion_v1.patchDownload
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 5825b2a195..bd04244969 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3902,7 +3902,7 @@ psql_completion(const char *text, int start, int end)
 	else if (TailMatches("GRANT|REVOKE", MatchAny) ||
 			 TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny))
 	{
-		if (TailMatches("SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|ALL"))
+		if (TailMatches("SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
 			COMPLETE_WITH("ON");
 		else if (TailMatches("GRANT", MatchAny))
 			COMPLETE_WITH("TO");
#2Jim Jones
jim.jones@uni-muenster.de
In reply to: Ken Kato (#1)
Re: Tab completion for GRANT MAINTAIN

On 18.04.23 11:08, Ken Kato wrote:

Hi hackers,

I found that GRANT MAINTAIN is not tab-completed with ON, so here is a
patch.

Hi,

the patch applies cleanly and now GRANT MAINTAIN tab-completes with ON.
For the sake of completeness I tested a whole statement:

postgres=# GRANT M<tab>

=> postgres=# GRANT MAINTAIN

postgres=# GRANT MAINTAIN <tab>

=> postgres=# GRANT MAINTAIN ON

postgres=# GRANT MAINTAIN ON t <tab>

=> postgres=# GRANT MAINTAIN ON t TO

postgres=# GRANT MAINTAIN ON t TO <tab><tab>

=>

CURRENT_ROLE pg_monitor                   pg_use_reserved_connections
CURRENT_USER                 pg_read_all_data pg_write_all_data
pg_checkpoint                pg_read_all_settings pg_write_server_files
pg_create_subscription       pg_read_all_stats postgres
pg_database_owner            pg_read_server_files         PUBLIC
pg_execute_server_program    pg_signal_backend SESSION_USER
pg_maintain                  pg_stat_scan_tables

I've marked the CF entry as "ready for committer"

Best, Jim

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jim Jones (#2)
Re: Tab completion for GRANT MAINTAIN

Jim Jones <jim.jones@uni-muenster.de> writes:

On 18.04.23 11:08, Ken Kato wrote:

I found that GRANT MAINTAIN is not tab-completed with ON, so here is a
patch.

I've marked the CF entry as "ready for committer"

Yup, clearly an oversight. Pushed.

(One could wish that it didn't take touching three or so places in
tab-complete.c to add a privilege, especially when a naive hacker might
think he was done after touching Privilege_options_of_grant_and_revoke.
I didn't see any easy way to improve that situation though.)

regards, tom lane

#4Nathan Bossart
nathandbossart@gmail.com
In reply to: Tom Lane (#3)
Re: Tab completion for GRANT MAINTAIN

On Wed, Apr 19, 2023 at 10:54:05AM -0400, Tom Lane wrote:

(One could wish that it didn't take touching three or so places in
tab-complete.c to add a privilege, especially when a naive hacker might
think he was done after touching Privilege_options_of_grant_and_revoke.
I didn't see any easy way to improve that situation though.)

Sorry, I think this was my fault. Thanks for fixing.

--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com