(pos Pos)
| 1052 | } |
| 1053 | |
| 1054 | func (p *Parser) parsePrivilegeCreate(pos Pos) (*PrivilegeClause, error) { |
| 1055 | keywords := []string{KeywordCreate} |
| 1056 | switch { |
| 1057 | case p.matchOneOfKeywords(KeywordDatabase, KeywordDictionary, KeywordTable, KeywordFunction, KeywordView, KeywordUser, KeywordRole, KeywordQuota): |
| 1058 | keyword := p.last().String |
| 1059 | _ = p.lexer.consumeToken() |
| 1060 | keywords = append(keywords, keyword) |
| 1061 | case p.tryConsumeKeywords(KeywordTemporary): |
| 1062 | if err := p.expectKeyword(KeywordTable); err != nil { |
| 1063 | return nil, err |
| 1064 | } |
| 1065 | keywords = append(keywords, KeywordTemporary, KeywordTable) |
| 1066 | case p.tryConsumeKeywords(KeywordRows): |
| 1067 | if err := p.expectKeyword(KeywordPolicy); err != nil { |
| 1068 | return nil, err |
| 1069 | } |
| 1070 | keywords = append(keywords, KeywordRows, KeywordPolicy) |
| 1071 | default: |
| 1072 | return nil, fmt.Errorf("expected DATABASE|DICTIONARY|TABLE|FUNCTION|VIEW|USER|ROLE|ROWS") |
| 1073 | } |
| 1074 | return &PrivilegeClause{ |
| 1075 | PrivilegePos: pos, |
| 1076 | Keywords: keywords, |
| 1077 | }, nil |
| 1078 | } |
| 1079 | |
| 1080 | func (p *Parser) parsePrivilegeDrop(pos Pos) (*PrivilegeClause, error) { |
| 1081 | keywords := []string{KeywordDrop} |
no test coverage detected