(createUser *CreateUser)
| 813 | } |
| 814 | |
| 815 | func (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() |
no test coverage detected