Skip to content

Commit dac4c3e

Browse files
committed
Fix CAST alias handling to avoid test failures
- Remove CastExpr from parseAlias (explicit AS aliases) - Only set alias on CastExpr in parseImplicitAlias when using :: operator syntax - Function-style CAST() aliases go through AliasedExpr instead ClickHouse's EXPLAIN AST doesn't show aliases on function-style CAST() but does show them on :: operator syntax casts.
1 parent da6c2c9 commit dac4c3e

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

parser/expression.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,17 @@ func (p *Parser) parseImplicitAlias(expr ast.Expression) ast.Expression {
195195
e.Alias = alias
196196
return e
197197
case *ast.CastExpr:
198-
e.Alias = alias
199-
return e
198+
// Only set alias on CastExpr if using :: operator syntax
199+
// Function-style CAST() aliases go to AliasedExpr
200+
if e.OperatorSyntax {
201+
e.Alias = alias
202+
return e
203+
}
204+
return &ast.AliasedExpr{
205+
Position: expr.Pos(),
206+
Expr: expr,
207+
Alias: alias,
208+
}
200209
case *ast.CaseExpr:
201210
e.Alias = alias
202211
return e
@@ -1555,9 +1564,6 @@ func (p *Parser) parseAlias(left ast.Expression) ast.Expression {
15551564
case *ast.Subquery:
15561565
e.Alias = alias
15571566
return e
1558-
case *ast.CastExpr:
1559-
e.Alias = alias
1560-
return e
15611567
case *ast.CaseExpr:
15621568
e.Alias = alias
15631569
return e

0 commit comments

Comments
 (0)