MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseAssignmentValues

Method parseAssignmentValues

parser/parser_table.go:1801–1837  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

1799}
1800
1801func (p *Parser) parseAssignmentValues(pos Pos) (*AssignmentValues, error) {
1802 if err := p.expectTokenKind(TokenKindLParen); err != nil {
1803 return nil, err
1804 }
1805
1806 var value Expr
1807 var err error
1808 values := make([]Expr, 0)
1809 for !p.lexer.isEOF() && p.tryConsumeTokenKind(TokenKindRParen) == nil {
1810 switch {
1811 case p.matchTokenKind(TokenKindLParen):
1812 value, err = p.parseAssignmentValues(p.Pos())
1813 case p.matchTokenKind(TokenKindLBrace):
1814 // placeholder with type, e.g. {a :Int32}, {b :DateTime(6)}
1815 value, err = p.parseTypedPlaceholder(p.Pos())
1816 default:
1817 value, err = p.parseExpr(p.Pos())
1818 }
1819 if err != nil {
1820 return nil, err
1821 }
1822 values = append(values, value)
1823 if p.tryConsumeTokenKind(TokenKindComma) == nil {
1824 break
1825 }
1826 }
1827 rightParenPos := p.Pos()
1828 if err := p.expectTokenKind(TokenKindRParen); err != nil {
1829 return nil, err
1830 }
1831
1832 return &AssignmentValues{
1833 LeftParenPos: pos,
1834 RightParenPos: rightParenPos,
1835 Values: values,
1836 }, nil
1837}
1838
1839func (p *Parser) parseInsertStmt(pos Pos) (*InsertStmt, error) {
1840 if err := p.expectKeyword(KeywordInsert); err != nil {

Callers 1

parseInsertStmtMethod · 0.95

Calls 7

expectTokenKindMethod · 0.95
tryConsumeTokenKindMethod · 0.95
matchTokenKindMethod · 0.95
PosMethod · 0.95
parseTypedPlaceholderMethod · 0.95
parseExprMethod · 0.95
isEOFMethod · 0.80

Tested by

no test coverage detected