(pos Pos)
| 1182 | } |
| 1183 | |
| 1184 | func (p *Parser) parsePrivilegeClause(pos Pos) (*PrivilegeClause, error) { |
| 1185 | if p.matchTokenKind(TokenKindIdent) { |
| 1186 | if p.last().String == "dictGet" { |
| 1187 | _ = p.lexer.consumeToken() |
| 1188 | return &PrivilegeClause{ |
| 1189 | PrivilegePos: pos, |
| 1190 | Keywords: []string{"dictGet"}, |
| 1191 | }, nil |
| 1192 | } |
| 1193 | } |
| 1194 | switch { |
| 1195 | case p.matchOneOfKeywords(KeywordSelect, KeywordInsert): |
| 1196 | return p.parsePrivilegeSelectOrInsert(pos) |
| 1197 | case p.tryConsumeKeywords(KeywordAlter): |
| 1198 | return p.parsePrivilegeAlter(pos) |
| 1199 | case p.tryConsumeKeywords(KeywordCreate): |
| 1200 | return p.parsePrivilegeCreate(pos) |
| 1201 | case p.tryConsumeKeywords(KeywordDrop): |
| 1202 | return p.parsePrivilegeDrop(pos) |
| 1203 | case p.tryConsumeKeywords(KeywordShow): |
| 1204 | return p.parsePrivilegeShow(pos) |
| 1205 | case p.matchKeyword(KeywordAll), p.matchTokenKind(KeywordNone): |
| 1206 | _ = p.lexer.consumeToken() |
| 1207 | return &PrivilegeClause{ |
| 1208 | PrivilegePos: pos, |
| 1209 | Keywords: []string{KeywordAll}, |
| 1210 | }, nil |
| 1211 | case p.tryConsumeKeywords(KeywordKill): |
| 1212 | if err := p.expectKeyword(KeywordQuery); err != nil { |
| 1213 | return nil, err |
| 1214 | } |
| 1215 | return &PrivilegeClause{ |
| 1216 | PrivilegePos: pos, |
| 1217 | Keywords: []string{KeywordKill, KeywordQuery}, |
| 1218 | }, nil |
| 1219 | case p.tryConsumeKeywords(KeywordSystem): |
| 1220 | return p.parsePrivilegeSystem(pos) |
| 1221 | case p.tryConsumeKeywords(KeywordAdmin): |
| 1222 | if err := p.expectKeyword(KeywordOption); err != nil { |
| 1223 | return nil, err |
| 1224 | } |
| 1225 | return &PrivilegeClause{ |
| 1226 | PrivilegePos: pos, |
| 1227 | Keywords: []string{KeywordAdmin, KeywordOption}, |
| 1228 | }, nil |
| 1229 | case p.matchOneOfKeywords(KeywordOptimize, KeywordTruncate): |
| 1230 | keyword := p.last().String |
| 1231 | _ = p.lexer.consumeToken() |
| 1232 | return &PrivilegeClause{ |
| 1233 | PrivilegePos: pos, |
| 1234 | Keywords: []string{keyword}, |
| 1235 | }, nil |
| 1236 | case p.tryConsumeKeywords(KeywordRole): |
| 1237 | if err := p.expectKeyword(KeywordAdmin); err != nil { |
| 1238 | return nil, err |
| 1239 | } |
| 1240 | return &PrivilegeClause{ |
| 1241 | PrivilegePos: pos, |
no test coverage detected