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

Method parserDropUserOrRole

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

Source from the content-addressed store, hash-verified

908}
909
910func (p *Parser) parserDropUserOrRole(pos Pos) (*DropUserOrRole, error) {
911 var target string
912 switch {
913 case p.matchOneOfKeywords(KeywordUser, KeywordRole):
914 target = p.last().String
915 _ = p.lexer.consumeToken()
916 default:
917 return nil, fmt.Errorf("expected USER|ROLE")
918 }
919
920 ifExists, err := p.tryParseIfExists()
921 if err != nil {
922 return nil, err
923 }
924
925 names := make([]*RoleName, 0)
926 name, err := p.parseRoleName(p.Pos())
927 if err != nil {
928 return nil, err
929 }
930 names = append(names, name)
931 for p.tryConsumeTokenKind(TokenKindComma) != nil {
932 name, err := p.parseRoleName(p.Pos())
933 if err != nil {
934 return nil, err
935 }
936 names = append(names, name)
937 }
938 statementEnd := names[len(names)-1].End()
939
940 onCluster, err := p.tryParseClusterClause(p.Pos())
941 if err != nil {
942 return nil, err
943 }
944 if onCluster != nil {
945 statementEnd = onCluster.End()
946 }
947
948 var from *Ident
949 if p.tryConsumeKeywords(KeywordFrom) {
950 from, err = p.parseIdent()
951 if err != nil {
952 return nil, err
953 }
954 }
955
956 modifier, err := p.tryParseModifier()
957 if err != nil {
958 return nil, err
959 }
960
961 return &DropUserOrRole{
962 DropPos: pos,
963 StatementEnd: statementEnd,
964 Target: target,
965 IfExists: ifExists,
966 Names: names,
967 From: from,

Callers 1

parseDDLMethod · 0.95

Calls 12

matchOneOfKeywordsMethod · 0.95
lastMethod · 0.95
tryParseIfExistsMethod · 0.95
parseRoleNameMethod · 0.95
PosMethod · 0.95
tryConsumeTokenKindMethod · 0.95
tryParseClusterClauseMethod · 0.95
tryConsumeKeywordsMethod · 0.95
parseIdentMethod · 0.95
tryParseModifierMethod · 0.95
consumeTokenMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected