@@ -2109,7 +2109,9 @@ impl<'a> Parser<'a> {
21092109 let mut connection_limit = None ;
21102110 let mut valid_until = None ;
21112111 let mut in_role = vec ! [ ] ;
2112- let mut roles = vec ! [ ] ;
2112+ let mut in_group = vec ! [ ] ;
2113+ let mut role = vec ! [ ] ;
2114+ let mut user = vec ! [ ] ;
21132115 let mut admin = vec ! [ ] ;
21142116
21152117 while let Some ( keyword) = self . parse_one_of_keywords ( & optional_keywords) {
@@ -2209,22 +2211,37 @@ impl<'a> Parser<'a> {
22092211 }
22102212 }
22112213 Keyword :: IN => {
2212- if self . parse_keyword ( Keyword :: ROLE ) || self . parse_keyword ( Keyword :: GROUP ) {
2214+ if self . parse_keyword ( Keyword :: ROLE ) {
22132215 if !in_role. is_empty ( ) {
2214- parser_err ! ( "Found multiple IN ROLE or IN GROUP " )
2216+ parser_err ! ( "Found multiple IN ROLE" )
22152217 } else {
22162218 in_role = self . parse_comma_separated ( Parser :: parse_identifier) ?;
22172219 Ok ( ( ) )
22182220 }
2221+ } else if self . parse_keyword ( Keyword :: GROUP ) {
2222+ if !in_group. is_empty ( ) {
2223+ parser_err ! ( "Found multiple IN GROUP" )
2224+ } else {
2225+ in_group = self . parse_comma_separated ( Parser :: parse_identifier) ?;
2226+ Ok ( ( ) )
2227+ }
22192228 } else {
22202229 self . expected ( "ROLE or GROUP after IN" , self . peek_token ( ) )
22212230 }
22222231 }
2223- Keyword :: ROLE | Keyword :: USER => {
2224- if !roles. is_empty ( ) {
2225- parser_err ! ( "Found multiple ROLE or USER" )
2232+ Keyword :: ROLE => {
2233+ if !role. is_empty ( ) {
2234+ parser_err ! ( "Found multiple ROLE" )
2235+ } else {
2236+ role = self . parse_comma_separated ( Parser :: parse_identifier) ?;
2237+ Ok ( ( ) )
2238+ }
2239+ }
2240+ Keyword :: USER => {
2241+ if !user. is_empty ( ) {
2242+ parser_err ! ( "Found multiple USER" )
22262243 } else {
2227- roles = self . parse_comma_separated ( Parser :: parse_identifier) ?;
2244+ user = self . parse_comma_separated ( Parser :: parse_identifier) ?;
22282245 Ok ( ( ) )
22292246 }
22302247 }
@@ -2254,7 +2271,9 @@ impl<'a> Parser<'a> {
22542271 connection_limit,
22552272 valid_until,
22562273 in_role,
2257- role : roles,
2274+ in_group,
2275+ role,
2276+ user,
22582277 admin,
22592278 authorization_owner,
22602279 } )
0 commit comments