(pos Pos, orReplace bool)
| 121 | } |
| 122 | |
| 123 | func (p *Parser) parseCreateDictionary(pos Pos, orReplace bool) (*CreateDictionary, error) { |
| 124 | if err := p.expectKeyword(KeywordDictionary); err != nil { |
| 125 | return nil, err |
| 126 | } |
| 127 | |
| 128 | createDict := &CreateDictionary{ |
| 129 | CreatePos: pos, |
| 130 | OrReplace: orReplace, |
| 131 | } |
| 132 | |
| 133 | // parse IF NOT EXISTS clause if exists |
| 134 | var err error |
| 135 | createDict.IfNotExists, err = p.tryParseIfNotExists() |
| 136 | if err != nil { |
| 137 | return nil, err |
| 138 | } |
| 139 | |
| 140 | // parse dictionary name |
| 141 | name, err := p.parseTableIdentifier(p.Pos()) |
| 142 | if err != nil { |
| 143 | return nil, err |
| 144 | } |
| 145 | createDict.Name = name |
| 146 | |
| 147 | // try parse UUID clause if exists |
| 148 | uuid, err := p.tryParseUUID() |
| 149 | if err != nil { |
| 150 | return nil, err |
| 151 | } |
| 152 | createDict.UUID = uuid |
| 153 | |
| 154 | // parse ON CLUSTER clause if exists |
| 155 | onCluster, err := p.tryParseClusterClause(p.Pos()) |
| 156 | if err != nil { |
| 157 | return nil, err |
| 158 | } |
| 159 | createDict.OnCluster = onCluster |
| 160 | |
| 161 | // parse dictionary schema clause (required) |
| 162 | schema, err := p.parseDictionarySchemaClause(p.Pos()) |
| 163 | if err != nil { |
| 164 | return nil, err |
| 165 | } |
| 166 | createDict.Schema = schema |
| 167 | |
| 168 | // parse dictionary engine clause (required) |
| 169 | engine, err := p.parseDictionaryEngineClause(p.Pos()) |
| 170 | if err != nil { |
| 171 | return nil, err |
| 172 | } |
| 173 | createDict.Engine = engine |
| 174 | createDict.StatementEnd = engine.End() |
| 175 | |
| 176 | // parse COMMENT clause if exists |
| 177 | comment, err := p.tryParseComment() |
| 178 | if err != nil { |
| 179 | return nil, err |
| 180 | } |
no test coverage detected