syntax: TRUNCATE TEMPORARY? TABLE (IF EXISTS)? tableIdentifier clusterClause?;
(pos Pos)
| 1669 | |
| 1670 | // syntax: TRUNCATE TEMPORARY? TABLE (IF EXISTS)? tableIdentifier clusterClause?; |
| 1671 | func (p *Parser) parseTruncateTable(pos Pos) (*TruncateTable, error) { |
| 1672 | if err := p.expectKeyword(KeywordTruncate); err != nil { |
| 1673 | return nil, err |
| 1674 | } |
| 1675 | |
| 1676 | isTemporary := p.tryConsumeKeywords(KeywordTemporary) |
| 1677 | |
| 1678 | if err := p.expectKeyword(KeywordTable); err != nil { |
| 1679 | return nil, err |
| 1680 | } |
| 1681 | |
| 1682 | ifExists, err := p.tryParseIfExists() |
| 1683 | if err != nil { |
| 1684 | return nil, err |
| 1685 | } |
| 1686 | |
| 1687 | tableName, err := p.parseTableIdentifier(p.Pos()) |
| 1688 | if err != nil { |
| 1689 | return nil, err |
| 1690 | } |
| 1691 | |
| 1692 | onCluster, err := p.tryParseClusterClause(p.Pos()) |
| 1693 | if err != nil { |
| 1694 | return nil, err |
| 1695 | } |
| 1696 | |
| 1697 | truncateTable := &TruncateTable{ |
| 1698 | TruncatePos: pos, |
| 1699 | IsTemporary: isTemporary, |
| 1700 | IfExists: ifExists, |
| 1701 | Name: tableName, |
| 1702 | OnCluster: onCluster, |
| 1703 | StatementEnd: tableName.End(), |
| 1704 | } |
| 1705 | |
| 1706 | if onCluster != nil { |
| 1707 | truncateTable.StatementEnd = onCluster.End() |
| 1708 | } |
| 1709 | |
| 1710 | return truncateTable, nil |
| 1711 | } |
| 1712 | |
| 1713 | func (p *Parser) parseDeleteClause(pos Pos) (*DeleteClause, error) { |
| 1714 | if err := p.expectKeyword(KeywordDelete); err != nil { |
no test coverage detected