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

Method parseSettingsExpr

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

Source from the content-addressed store, hash-verified

1264}
1265
1266func (p *Parser) parseSettingsExpr(pos Pos) (*SettingExpr, error) {
1267 ident, err := p.parseIdent()
1268 if err != nil {
1269 return nil, err
1270 }
1271
1272 if err := p.expectTokenKind(TokenKindSingleEQ); err != nil {
1273 return nil, err
1274 }
1275
1276 var expr Expr
1277 switch {
1278 case p.matchTokenKind(TokenKindInt):
1279 number, err := p.parseNumber(p.Pos())
1280 if err != nil {
1281 return nil, err
1282 }
1283 expr = number
1284 case p.matchTokenKind(TokenKindString):
1285 str, err := p.parseString(p.Pos())
1286 expr = str
1287 if err != nil {
1288 return nil, err
1289 }
1290 case p.matchTokenKind(TokenKindLBrace):
1291 m, err := p.parseMapLiteral(p.Pos())
1292 if err != nil {
1293 return nil, err
1294 }
1295 expr = m
1296 case p.matchKeyword(KeywordTrue), p.matchKeyword(KeywordFalse):
1297 // Handle TRUE/FALSE keywords as boolean literals
1298 lastToken := p.last()
1299 _ = p.lexer.consumeToken()
1300 expr = &BoolLiteral{
1301 LiteralPos: lastToken.Pos,
1302 LiteralEnd: lastToken.End,
1303 Literal: lastToken.String,
1304 }
1305 default:
1306 return nil, fmt.Errorf("unexpected token: %q, expected <number>, <bool> or <string>", p.last().String)
1307 }
1308
1309 return &SettingExpr{
1310 SettingsPos: pos,
1311 Name: ident,
1312 Expr: expr,
1313 }, nil
1314}
1315
1316func (p *Parser) parseDestinationClause(pos Pos) (*DestinationClause, error) {
1317 if err := p.expectKeyword(KeywordTo); err != nil {

Callers 2

parseSettingsListMethod · 0.95

Calls 10

parseIdentMethod · 0.95
expectTokenKindMethod · 0.95
matchTokenKindMethod · 0.95
parseNumberMethod · 0.95
PosMethod · 0.95
parseStringMethod · 0.95
parseMapLiteralMethod · 0.95
matchKeywordMethod · 0.95
lastMethod · 0.95
consumeTokenMethod · 0.80

Tested by

no test coverage detected