(pos Pos)
| 1370 | } |
| 1371 | |
| 1372 | func (p *Parser) parseAlterRole(pos Pos) (*AlterRole, error) { |
| 1373 | if err := p.expectKeyword(KeywordRole); err != nil { |
| 1374 | return nil, err |
| 1375 | } |
| 1376 | |
| 1377 | ifExists, err := p.tryParseIfExists() |
| 1378 | if err != nil { |
| 1379 | return nil, err |
| 1380 | } |
| 1381 | |
| 1382 | roleRenamePairs := make([]*RoleRenamePair, 0) |
| 1383 | roleRenamePair, err := p.parseRoleRenamePair(p.Pos()) |
| 1384 | if err != nil { |
| 1385 | return nil, err |
| 1386 | } |
| 1387 | roleRenamePairs = append(roleRenamePairs, roleRenamePair) |
| 1388 | for p.tryConsumeTokenKind(TokenKindComma) != nil { |
| 1389 | roleRenamePair, err := p.parseRoleRenamePair(p.Pos()) |
| 1390 | if err != nil { |
| 1391 | return nil, err |
| 1392 | } |
| 1393 | roleRenamePairs = append(roleRenamePairs, roleRenamePair) |
| 1394 | } |
| 1395 | statementEnd := roleRenamePairs[len(roleRenamePairs)-1].End() |
| 1396 | |
| 1397 | settings, err := p.tryParseRoleSettings(p.Pos()) |
| 1398 | if err != nil { |
| 1399 | return nil, err |
| 1400 | } |
| 1401 | if settings != nil { |
| 1402 | statementEnd = settings[len(settings)-1].End() |
| 1403 | } |
| 1404 | |
| 1405 | return &AlterRole{ |
| 1406 | AlterPos: pos, |
| 1407 | StatementEnd: statementEnd, |
| 1408 | IfExists: ifExists, |
| 1409 | RoleRenamePairs: roleRenamePairs, |
| 1410 | Settings: settings, |
| 1411 | }, nil |
| 1412 | } |
| 1413 | |
| 1414 | func (p *Parser) parseRoleRenamePair(_ Pos) (*RoleRenamePair, error) { |
| 1415 | roleName, err := p.parseRoleName(p.Pos()) |
no test coverage detected