(pos Pos)
| 244 | } |
| 245 | |
| 246 | func (p *Parser) parseAlterTableAddProjection(pos Pos) (*AlterTableAddProjection, error) { |
| 247 | if err := p.expectKeyword(KeywordProjection); err != nil { |
| 248 | return nil, err |
| 249 | } |
| 250 | |
| 251 | ifNotExists, err := p.tryParseIfNotExists() |
| 252 | if err != nil { |
| 253 | return nil, err |
| 254 | } |
| 255 | tableProjection, err := p.parseTableProjection(p.Pos(), false) |
| 256 | if err != nil { |
| 257 | return nil, err |
| 258 | } |
| 259 | statementEnd := tableProjection.End() |
| 260 | after, err := p.tryParseAfterClause() |
| 261 | if err != nil { |
| 262 | return nil, err |
| 263 | } |
| 264 | if after != nil { |
| 265 | statementEnd = after.End() |
| 266 | } |
| 267 | return &AlterTableAddProjection{ |
| 268 | AddPos: pos, |
| 269 | StatementEnd: statementEnd, |
| 270 | IfNotExists: ifNotExists, |
| 271 | TableProjection: tableProjection, |
| 272 | After: after, |
| 273 | }, nil |
| 274 | } |
| 275 | |
| 276 | func (p *Parser) parseTableIndex(pos Pos) (*TableIndex, error) { |
| 277 | name, err := p.ParseNestedIdentifier(p.Pos()) |
no test coverage detected