@@ -1024,11 +1024,28 @@ psql_completion(char *text, int start, int end)
1024
1024
"ENCRYPTED" , "INHERIT" , "LOGIN" , "NOCREATEDB" , "NOCREATEROLE" ,
1025
1025
"NOCREATEUSER" , "NOINHERIT" , "NOLOGIN" , "NOREPLICATION" ,
1026
1026
"NOSUPERUSER" , "RENAME TO" , "REPLICATION" , "RESET" , "SET" ,
1027
- "SUPERUSER" , "UNENCRYPTED" , "VALID UNTIL" , NULL };
1027
+ "SUPERUSER" , "UNENCRYPTED" , "VALID UNTIL" , "WITH" , NULL };
1028
1028
1029
1029
COMPLETE_WITH_LIST (list_ALTERUSER );
1030
1030
}
1031
1031
1032
+ /* ALTER USER,ROLE <name> WITH */
1033
+ else if ((pg_strcasecmp (prev4_wd , "ALTER" ) == 0 &&
1034
+ (pg_strcasecmp (prev3_wd , "USER" ) == 0 ||
1035
+ pg_strcasecmp (prev3_wd , "ROLE" ) == 0 ) &&
1036
+ pg_strcasecmp (prev_wd , "WITH" ) == 0 ))
1037
+ {
1038
+ /* Similar to the above, but don't complete "WITH" again. */
1039
+ static const char * const list_ALTERUSER_WITH [] =
1040
+ {"CONNECTION LIMIT" , "CREATEDB" , "CREATEROLE" , "CREATEUSER" ,
1041
+ "ENCRYPTED" , "INHERIT" , "LOGIN" , "NOCREATEDB" , "NOCREATEROLE" ,
1042
+ "NOCREATEUSER" , "NOINHERIT" , "NOLOGIN" , "NOREPLICATION" ,
1043
+ "NOSUPERUSER" , "RENAME TO" , "REPLICATION" , "RESET" , "SET" ,
1044
+ "SUPERUSER" , "UNENCRYPTED" , "VALID UNTIL" , NULL };
1045
+
1046
+ COMPLETE_WITH_LIST (list_ALTERUSER_WITH );
1047
+ }
1048
+
1032
1049
/* complete ALTER USER,ROLE <name> ENCRYPTED,UNENCRYPTED with PASSWORD */
1033
1050
else if (pg_strcasecmp (prev4_wd , "ALTER" ) == 0 &&
1034
1051
(pg_strcasecmp (prev3_wd , "ROLE" ) == 0 || pg_strcasecmp (prev3_wd , "USER" ) == 0 ) &&
@@ -1947,7 +1964,7 @@ psql_completion(char *text, int start, int end)
1947
1964
prev2_wd [0 ] != '\0' )
1948
1965
COMPLETE_WITH_CONST ("PROCEDURE" );
1949
1966
1950
- /* CREATE ROLE,USER,GROUP */
1967
+ /* CREATE ROLE,USER,GROUP <name> */
1951
1968
else if (pg_strcasecmp (prev3_wd , "CREATE" ) == 0 &&
1952
1969
!(pg_strcasecmp (prev2_wd , "USER" ) == 0 && pg_strcasecmp (prev_wd , "MAPPING" ) == 0 ) &&
1953
1970
(pg_strcasecmp (prev2_wd , "ROLE" ) == 0 ||
@@ -1958,11 +1975,29 @@ psql_completion(char *text, int start, int end)
1958
1975
"ENCRYPTED" , "IN" , "INHERIT" , "LOGIN" , "NOCREATEDB" ,
1959
1976
"NOCREATEROLE" , "NOCREATEUSER" , "NOINHERIT" , "NOLOGIN" ,
1960
1977
"NOREPLICATION" , "NOSUPERUSER" , "REPLICATION" , "ROLE" ,
1961
- "SUPERUSER" , "SYSID" , "UNENCRYPTED" , "VALID UNTIL" , NULL };
1978
+ "SUPERUSER" , "SYSID" , "UNENCRYPTED" , "VALID UNTIL" , "WITH" , NULL };
1962
1979
1963
1980
COMPLETE_WITH_LIST (list_CREATEROLE );
1964
1981
}
1965
1982
1983
+ /* CREATE ROLE,USER,GROUP <name> WITH */
1984
+ else if ((pg_strcasecmp (prev4_wd , "CREATE" ) == 0 &&
1985
+ (pg_strcasecmp (prev3_wd , "ROLE" ) == 0 ||
1986
+ pg_strcasecmp (prev3_wd , "GROUP" ) == 0 ||
1987
+ pg_strcasecmp (prev3_wd , "USER" ) == 0 ) &&
1988
+ pg_strcasecmp (prev_wd , "WITH" ) == 0 ))
1989
+ {
1990
+ /* Similar to the above, but don't complete "WITH" again. */
1991
+ static const char * const list_CREATEROLE_WITH [] =
1992
+ {"ADMIN" , "CONNECTION LIMIT" , "CREATEDB" , "CREATEROLE" , "CREATEUSER" ,
1993
+ "ENCRYPTED" , "IN" , "INHERIT" , "LOGIN" , "NOCREATEDB" ,
1994
+ "NOCREATEROLE" , "NOCREATEUSER" , "NOINHERIT" , "NOLOGIN" ,
1995
+ "NOREPLICATION" , "NOSUPERUSER" , "REPLICATION" , "ROLE" ,
1996
+ "SUPERUSER" , "SYSID" , "UNENCRYPTED" , "VALID UNTIL" , NULL };
1997
+
1998
+ COMPLETE_WITH_LIST (list_CREATEROLE_WITH );
1999
+ }
2000
+
1966
2001
/*
1967
2002
* complete CREATE ROLE,USER,GROUP <name> ENCRYPTED,UNENCRYPTED with
1968
2003
* PASSWORD
0 commit comments