From c407d5426b877b41be87f9e679e321bb2c42e47d Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Mon, 17 Feb 2025 17:55:23 +0100 Subject: [PATCH] Add tab completion for ALTER USER/ROLE RESET Currently tab completion for ALTER USER RESET shows a list of all configuration parameters that may be set on a role, irrespectively of which parameters are actually set. This patch improves tab completion to offer only parameters that are set. Author: Robins Tharakan Reviewed-By: Tomas Vondra Discussion: https://postgr.es/m/CAEP4nAzqiT6VbVC5r3nq5byLTnPzjniVGzEMpYcnAHQyNzEuaw%40mail.gmail.com --- src/bin/psql/tab-complete.in.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c index 18fecd32807..eb8bc128720 100644 --- a/src/bin/psql/tab-complete.in.c +++ b/src/bin/psql/tab-complete.in.c @@ -1077,6 +1077,11 @@ Keywords_for_list_of_owner_roles, "PUBLIC" " FROM pg_catalog.pg_user_mappings "\ " WHERE usename LIKE '%s'" +#define Query_for_list_of_user_vars \ +" SELECT pg_catalog.split_part(pg_catalog.unnest(rolconfig),'=',1) "\ +" FROM pg_catalog.pg_roles "\ +" WHERE rolname LIKE '%s'" + #define Query_for_list_of_access_methods \ " SELECT amname "\ " FROM pg_catalog.pg_am "\ @@ -2487,6 +2492,10 @@ match_previous_words(int pattern_id, "RENAME TO", "REPLICATION", "RESET", "SET", "SUPERUSER", "VALID UNTIL", "WITH"); + /* ALTER USER,ROLE RESET */ + else if (Matches("ALTER", "USER|ROLE", MatchAny, "RESET")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_user_vars, "ALL"); + /* ALTER USER,ROLE WITH */ else if (Matches("ALTER", "USER|ROLE", MatchAny, "WITH")) /* Similar to the above, but don't complete "WITH" again. */ -- 2.30.2