(pos Pos)
| 6 | ) |
| 7 | |
| 8 | func (p *Parser) parseAlterTable(pos Pos) (*AlterTable, error) { |
| 9 | alterTable := &AlterTable{ |
| 10 | AlterPos: pos, |
| 11 | AlterExprs: make([]AlterTableClause, 0), |
| 12 | } |
| 13 | if err := p.expectKeyword(KeywordTable); err != nil { |
| 14 | return nil, err |
| 15 | } |
| 16 | |
| 17 | tableIdentifier, err := p.parseTableIdentifier(p.Pos()) |
| 18 | if err != nil { |
| 19 | return nil, err |
| 20 | } |
| 21 | alterTable.TableIdentifier = tableIdentifier |
| 22 | onCluster, err := p.tryParseClusterClause(p.Pos()) |
| 23 | if err != nil { |
| 24 | return nil, err |
| 25 | } |
| 26 | alterTable.OnCluster = onCluster |
| 27 | |
| 28 | for !p.lexer.isEOF() { |
| 29 | var alter AlterTableClause |
| 30 | switch { |
| 31 | case p.matchKeyword(KeywordAdd): |
| 32 | alter, err = p.parseAlterTableAdd(p.Pos()) |
| 33 | case p.matchKeyword(KeywordDrop): |
| 34 | alter, err = p.parseAlterTableDrop(p.Pos()) |
| 35 | case p.matchKeyword(KeywordAttach): |
| 36 | alter, err = p.parseAlterTableAttachPartition(p.Pos()) |
| 37 | case p.matchKeyword(KeywordDetach): |
| 38 | _ = p.lexer.consumeToken() |
| 39 | alter, err = p.parseAlterTableDetachPartition(p.Pos()) |
| 40 | case p.matchKeyword(KeywordFreeze): |
| 41 | alter, err = p.parseAlterTableFreezePartition(p.Pos()) |
| 42 | case p.matchKeyword(KeywordRemove): |
| 43 | alter, err = p.parseAlterTableRemoveTTL(p.Pos()) |
| 44 | case p.matchKeyword(KeywordRename): |
| 45 | alter, err = p.parseAlterTableRenameColumn(p.Pos()) |
| 46 | case p.matchKeyword(KeywordClear): |
| 47 | alter, err = p.parseAlterTableClear(p.Pos()) |
| 48 | case p.matchKeyword(KeywordModify): |
| 49 | alter, err = p.parseAlterTableModify(p.Pos()) |
| 50 | case p.matchKeyword(KeywordReplace): |
| 51 | alter, err = p.parseAlterTableReplacePartition(p.Pos()) |
| 52 | case p.matchKeyword(KeywordMaterialize): |
| 53 | alter, err = p.parseAlterTableMaterialize(p.Pos()) |
| 54 | case p.matchKeyword(KeywordReset): |
| 55 | alter, err = p.parseAlterTableReset(p.Pos()) |
| 56 | case p.matchKeyword(KeywordDelete): |
| 57 | alter, err = p.parseAlterTableDelete(p.Pos()) |
| 58 | case p.matchKeyword(KeywordUpdate): |
| 59 | alter, err = p.parseAlterTableUpdate(p.Pos()) |
| 60 | default: |
| 61 | return nil, errors.New("expected token: ADD|DROP|ATTACH|DETACH|FREEZE|REMOVE|CLEAR|MODIFY|REPLACE|MATERIALIZE|RESET|DELETE|UPDATE") |
| 62 | } |
| 63 | if err != nil { |
| 64 | return nil, err |
| 65 | } |
no test coverage detected