MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseGrantPrivilegeStmt

Method parseGrantPrivilegeStmt

parser/parse_system.go:1312–1370  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

1310}
1311
1312func (p *Parser) parseGrantPrivilegeStmt(pos Pos) (*GrantPrivilegeStmt, error) {
1313 if err := p.expectKeyword(KeywordGrant); err != nil {
1314 return nil, err
1315 }
1316 onCluster, err := p.tryParseClusterClause(p.Pos())
1317 if err != nil {
1318 return nil, err
1319 }
1320 var privileges []*PrivilegeClause
1321 privilege, err := p.parsePrivilegeClause(p.Pos())
1322 if err != nil {
1323 return nil, err
1324 }
1325 privileges = append(privileges, privilege)
1326 for p.tryConsumeTokenKind(TokenKindComma) != nil {
1327 privilege, err := p.parsePrivilegeClause(p.Pos())
1328 if err != nil {
1329 return nil, err
1330 }
1331 privileges = append(privileges, privilege)
1332 }
1333 statementEnd := privileges[len(privileges)-1].End()
1334
1335 if err := p.expectKeyword(KeywordOn); err != nil {
1336 return nil, err
1337 }
1338 on, err := p.parseGrantSource(p.Pos())
1339 if err != nil {
1340 return nil, err
1341 }
1342
1343 if err := p.expectKeyword(KeywordTo); err != nil {
1344 return nil, err
1345 }
1346 toRoles, err := p.parsePrivilegeRoles(p.Pos())
1347 if err != nil {
1348 return nil, err
1349 }
1350 if len(toRoles) != 0 {
1351 statementEnd = toRoles[len(toRoles)-1].NameEnd
1352 }
1353 options, err := p.parseGrantOptions(p.Pos())
1354 if err != nil {
1355 return nil, err
1356 }
1357 if len(options) != 0 {
1358 statementEnd = p.End()
1359 }
1360
1361 return &GrantPrivilegeStmt{
1362 GrantPos: pos,
1363 StatementEnd: statementEnd,
1364 OnCluster: onCluster,
1365 Privileges: privileges,
1366 On: on,
1367 To: toRoles,
1368 WithOptions: options,
1369 }, nil

Callers 1

parseStmtMethod · 0.95

Calls 10

expectKeywordMethod · 0.95
tryParseClusterClauseMethod · 0.95
PosMethod · 0.95
parsePrivilegeClauseMethod · 0.95
tryConsumeTokenKindMethod · 0.95
parseGrantSourceMethod · 0.95
parsePrivilegeRolesMethod · 0.95
parseGrantOptionsMethod · 0.95
EndMethod · 0.95
EndMethod · 0.65

Tested by

no test coverage detected