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

Method parseOptionalClauses

parser/parse_system.go:815–880  ·  view source on GitHub ↗
(createUser *CreateUser)

Source from the content-addressed store, hash-verified

813}
814
815func (p *Parser) parseOptionalClauses(createUser *CreateUser) error {
816 continueParsing := true
817 for continueParsing {
818 switch {
819 case p.matchOneOfKeywords(KeywordNot, KeywordIdentified):
820 auth, err := p.parseAuthenticationClause(p.Pos())
821 if err != nil {
822 return err
823 }
824 createUser.Authentication = auth
825 createUser.StatementEnd = auth.End()
826
827 case p.matchKeyword(KeywordValid):
828 _ = p.lexer.consumeToken() // consume VALID keyword
829 if err := p.expectKeyword(KeywordUntil); err != nil {
830 return err
831 }
832 validUntil, err := p.parseString(p.Pos())
833 if err != nil {
834 return err
835 }
836 createUser.ValidUntil = validUntil
837 createUser.StatementEnd = validUntil.End()
838
839 case p.matchKeyword(KeywordHost):
840 hosts, err := p.parseHostClauses()
841 if err != nil {
842 return err
843 }
844 createUser.Hosts = hosts
845 createUser.StatementEnd = hosts[len(hosts)-1].End()
846
847 case p.matchKeyword(KeywordDefault):
848 parsed, err := p.parseDefaultClause(createUser)
849 if err != nil {
850 return err
851 }
852 if !parsed {
853 continueParsing = false
854 }
855
856 case p.matchKeyword(KeywordGrantees):
857 grantees, err := p.parseGranteesClause(p.Pos())
858 if err != nil {
859 return err
860 }
861 createUser.Grantees = grantees
862 createUser.StatementEnd = grantees.End()
863
864 case p.matchKeyword(KeywordSettings):
865 _ = p.lexer.consumeToken() // consume SETTINGS keyword
866 settings, err := p.parseRoleSettings(p.Pos())
867 if err != nil {
868 return err
869 }
870 createUser.Settings = settings
871 if len(settings) > 0 {
872 createUser.StatementEnd = settings[len(settings)-1].End()

Callers 1

parseCreateUserMethod · 0.95

Calls 12

matchOneOfKeywordsMethod · 0.95
PosMethod · 0.95
matchKeywordMethod · 0.95
expectKeywordMethod · 0.95
parseStringMethod · 0.95
parseHostClausesMethod · 0.95
parseDefaultClauseMethod · 0.95
parseGranteesClauseMethod · 0.95
parseRoleSettingsMethod · 0.95
consumeTokenMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected