@@ -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