(pos Pos, includeProjectionKeyword bool)
| 222 | } |
| 223 | |
| 224 | func (p *Parser) parseTableProjection(pos Pos, includeProjectionKeyword bool) (*TableProjection, error) { |
| 225 | if includeProjectionKeyword { |
| 226 | if err := p.expectKeyword(KeywordProjection); err != nil { |
| 227 | return nil, err |
| 228 | } |
| 229 | } |
| 230 | identifier, err := p.ParseNestedIdentifier(pos) |
| 231 | if err != nil { |
| 232 | return nil, err |
| 233 | } |
| 234 | selectExpr, err := p.parseProjectionSelect(p.Pos()) |
| 235 | if err != nil { |
| 236 | return nil, err |
| 237 | } |
| 238 | return &TableProjection{ |
| 239 | IncludeProjectionKeyword: includeProjectionKeyword, |
| 240 | ProjectionPos: pos, |
| 241 | Identifier: identifier, |
| 242 | Select: selectExpr, |
| 243 | }, nil |
| 244 | } |
| 245 | |
| 246 | func (p *Parser) parseAlterTableAddProjection(pos Pos) (*AlterTableAddProjection, error) { |
| 247 | if err := p.expectKeyword(KeywordProjection); err != nil { |
no test coverage detected