@@ -1000,6 +1000,15 @@ static const SchemaQuery Query_for_trigger_of_table = {
1000
1000
"SELECT datname FROM pg_catalog.pg_database "\
1001
1001
" WHERE datname LIKE '%s'"
1002
1002
1003
+ #define Query_for_list_of_database_vars \
1004
+ "SELECT conf FROM ("\
1005
+ " SELECT setdatabase, pg_catalog.split_part(unnest(setconfig),'=',1) conf"\
1006
+ " FROM pg_db_role_setting "\
1007
+ " ) s, pg_database d "\
1008
+ " WHERE s.setdatabase = d.oid "\
1009
+ " AND conf LIKE '%s'"\
1010
+ " AND d.datname LIKE '%s'"
1011
+
1003
1012
#define Query_for_list_of_tablespaces \
1004
1013
"SELECT spcname FROM pg_catalog.pg_tablespace "\
1005
1014
" WHERE spcname LIKE '%s'"
@@ -1068,6 +1077,11 @@ Keywords_for_list_of_owner_roles, "PUBLIC"
1068
1077
" FROM pg_catalog.pg_user_mappings "\
1069
1078
" WHERE usename LIKE '%s'"
1070
1079
1080
+ #define Query_for_list_of_user_vars \
1081
+ " SELECT pg_catalog.split_part(pg_catalog.unnest(rolconfig),'=',1) "\
1082
+ " FROM pg_catalog.pg_roles "\
1083
+ " WHERE rolname LIKE '%s'"
1084
+
1071
1085
#define Query_for_list_of_access_methods \
1072
1086
" SELECT amname "\
1073
1087
" FROM pg_catalog.pg_am "\
@@ -2320,6 +2334,13 @@ match_previous_words(int pattern_id,
2320
2334
"IS_TEMPLATE" , "ALLOW_CONNECTIONS" ,
2321
2335
"CONNECTION LIMIT" );
2322
2336
2337
+ /* ALTER DATABASE <name> RESET */
2338
+ else if (Matches ("ALTER" , "DATABASE" , MatchAny , "RESET" ))
2339
+ {
2340
+ set_completion_reference (prev2_wd );
2341
+ COMPLETE_WITH_QUERY_PLUS (Query_for_list_of_database_vars , "ALL" );
2342
+ }
2343
+
2323
2344
/* ALTER DATABASE <name> SET TABLESPACE */
2324
2345
else if (Matches ("ALTER" , "DATABASE" , MatchAny , "SET" , "TABLESPACE" ))
2325
2346
COMPLETE_WITH_QUERY (Query_for_list_of_tablespaces );
@@ -2471,6 +2492,10 @@ match_previous_words(int pattern_id,
2471
2492
"RENAME TO" , "REPLICATION" , "RESET" , "SET" , "SUPERUSER" ,
2472
2493
"VALID UNTIL" , "WITH" );
2473
2494
2495
+ /* ALTER USER,ROLE <name> RESET */
2496
+ else if (Matches ("ALTER" , "USER|ROLE" , MatchAny , "RESET" ))
2497
+ COMPLETE_WITH_QUERY_PLUS (Query_for_list_of_user_vars , "ALL" );
2498
+
2474
2499
/* ALTER USER,ROLE <name> WITH */
2475
2500
else if (Matches ("ALTER" , "USER|ROLE" , MatchAny , "WITH" ))
2476
2501
/* Similar to the above, but don't complete "WITH" again. */
@@ -4906,7 +4931,9 @@ match_previous_words(int pattern_id,
4906
4931
4907
4932
/* SET, RESET, SHOW */
4908
4933
/* Complete with a variable name */
4909
- else if (TailMatches ("SET|RESET" ) && !TailMatches ("UPDATE" , MatchAny , "SET" ))
4934
+ else if (TailMatches ("SET|RESET" ) &&
4935
+ !TailMatches ("UPDATE" , MatchAny , "SET" ) &&
4936
+ !TailMatches ("ALTER" , "DATABASE" , MatchAny , "RESET" ))
4910
4937
COMPLETE_WITH_QUERY_VERBATIM_PLUS (Query_for_list_of_set_vars ,
4911
4938
"CONSTRAINTS" ,
4912
4939
"TRANSACTION" ,
0 commit comments