From f10fad887fee9177602c83b79ec7b2982ce92a66 Mon Sep 17 00:00:00 2001 From: Cong Hu Date: Mon, 21 Oct 2024 16:06:12 +0800 Subject: [PATCH] Fix LiteralExpressionSegment cast exception in sql parser. --- .../type/ClickHouseDMLStatementVisitor.java | 15 +++++++-------- .../visitor/statement/DorisStatementVisitor.java | 5 ++--- .../statement/type/HiveDMLStatementVisitor.java | 12 ++++++------ .../visitor/statement/MySQLStatementVisitor.java | 5 ++--- .../statement/OpenGaussStatementVisitor.java | 6 +++--- .../statement/PostgreSQLStatementVisitor.java | 6 +++--- .../statement/type/PrestoDMLStatementVisitor.java | 10 +++++----- .../statement/type/SQL92DMLStatementVisitor.java | 9 ++++----- .../statement/SQLServerStatementVisitor.java | 4 ++-- 9 files changed, 34 insertions(+), 38 deletions(-) diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java index bceb6cb16b807..8a4d77424b0ec 100644 --- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java +++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java @@ -29,6 +29,10 @@ import org.apache.shardingsphere.sql.parser.autogen.ClickHouseStatementParser.SelectClauseContext; import org.apache.shardingsphere.sql.parser.autogen.ClickHouseStatementParser.SubqueryContext; import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitor; +import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseDeleteStatement; +import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseInsertStatement; +import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseSelectStatement; +import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseUpdateStatement; import org.apache.shardingsphere.sql.parser.statement.core.enums.JoinType; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.ColumnAssignmentSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.InsertValuesSegment; @@ -39,7 +43,6 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.FunctionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.complex.CommonExpressionSegment; -import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.LiteralExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.ParameterMarkerExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubqueryExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubquerySegment; @@ -64,10 +67,6 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.collection.CollectionValue; import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue; import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.BooleanLiteralValue; -import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseDeleteStatement; -import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseInsertStatement; -import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseSelectStatement; -import org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseUpdateStatement; import java.util.Collection; import java.util.Collections; @@ -324,9 +323,9 @@ private ASTNode createProjection(final ClickHouseStatementParser.ProjectionConte result.setAlias(alias); return projection; } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; - ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ExpressionSegment column = (ExpressionSegment) projection; + ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), column.getText(), column) + : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), column.getText(), column); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java index c122e38fa2896..e36836f647673 100644 --- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java +++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java @@ -1811,10 +1811,9 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment || projection instanceof CollateExpression || projection instanceof NotExpression) { return createExpressionProjectionSegment(ctx, alias, projection); } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; ExpressionProjectionSegment result = null == alias - ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ? new ExpressionProjectionSegment(projection.getStartIndex(), projection.getStopIndex(), projection.getText(), projection) + : new ExpressionProjectionSegment(projection.getStartIndex(), ctx.alias().stop.getStopIndex(), projection.getText(), projection); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java index b819e12060867..d8c34ae311ce3 100644 --- a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java +++ b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java @@ -616,8 +616,8 @@ public ASTNode visitConvertFunction(final ConvertFunctionContext ctx) { public ASTNode visitPositionFunction(final PositionFunctionContext ctx) { calculateParameterCount(ctx.expr()); FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.POSITION().getText(), getOriginalText(ctx)); - result.getParameters().add((LiteralExpressionSegment) visit(ctx.expr(0))); - result.getParameters().add((LiteralExpressionSegment) visit(ctx.expr(1))); + result.getParameters().add((ExpressionSegment) visit(ctx.expr(0))); + result.getParameters().add((ExpressionSegment) visit(ctx.expr(1))); return result; } @@ -637,7 +637,7 @@ public ASTNode visitExtractFunction(final ExtractFunctionContext ctx) { calculateParameterCount(Collections.singleton(ctx.expr())); FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.EXTRACT().getText(), getOriginalText(ctx)); result.getParameters().add(new LiteralExpressionSegment(ctx.identifier().getStart().getStartIndex(), ctx.identifier().getStop().getStopIndex(), ctx.identifier().getText())); - result.getParameters().add((LiteralExpressionSegment) visit(ctx.expr())); + result.getParameters().add((ExpressionSegment) visit(ctx.expr())); return result; } @@ -1213,10 +1213,10 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment result.setAlias(alias); return result; } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; + ExpressionSegment column = (ExpressionSegment) projection; ExpressionProjectionSegment result = null == alias - ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), column.getText(), column) + : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), column.getText(), column); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java index 80c2d9f02542b..84872361352e4 100644 --- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java +++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java @@ -1786,10 +1786,9 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment || projection instanceof CollateExpression || projection instanceof NotExpression) { return createExpressionProjectionSegment(ctx, alias, projection); } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; ExpressionProjectionSegment result = null == alias - ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ? new ExpressionProjectionSegment(projection.getStartIndex(), projection.getStopIndex(), projection.getText(), projection) + : new ExpressionProjectionSegment(projection.getStartIndex(), ctx.alias().stop.getStopIndex(), projection.getText(), projection); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java index 50ab0bd798268..f7785529e07aa 100644 --- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java +++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java @@ -1391,7 +1391,7 @@ public ASTNode visitSelectLimitValue(final SelectLimitValueContext ctx) { if (astNode instanceof ParameterMarkerExpressionSegment) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } - return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); } @Override @@ -1400,7 +1400,7 @@ public ASTNode visitSelectOffsetValue(final SelectOffsetValueContext ctx) { if (astNode instanceof ParameterMarkerExpressionSegment) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } - return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); } @Override @@ -1409,7 +1409,7 @@ public ASTNode visitSelectFetchValue(final SelectFetchValueContext ctx) { if (astNode instanceof ParameterMarkerExpressionSegment) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } - return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); } private LimitSegment createLimitSegmentWhenLimitAndOffset(final SelectLimitContext ctx) { diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java index f352caef58820..908961e3fe014 100644 --- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java +++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java @@ -1361,7 +1361,7 @@ public ASTNode visitSelectLimitValue(final SelectLimitValueContext ctx) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), - (null == ((LiteralExpressionSegment) astNode).getLiterals()) ? null : Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + (null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText())); } @Override @@ -1371,7 +1371,7 @@ public ASTNode visitSelectOffsetValue(final SelectOffsetValueContext ctx) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), - (null == ((LiteralExpressionSegment) astNode).getLiterals()) ? null : Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + (null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText())); } @Override @@ -1381,7 +1381,7 @@ public ASTNode visitSelectFetchValue(final SelectFetchValueContext ctx) { return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex()); } return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), - (null == ((LiteralExpressionSegment) astNode).getLiterals()) ? null : Long.parseLong(((LiteralExpressionSegment) astNode).getLiterals().toString())); + (null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText())); } private LimitSegment createLimitSegmentWhenLimitAndOffset(final SelectLimitContext ctx) { diff --git a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java index 7a3496d93427e..db9274f69d82d 100644 --- a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java +++ b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java @@ -612,8 +612,8 @@ public ASTNode visitConvertFunction(final ConvertFunctionContext ctx) { public ASTNode visitPositionFunction(final PositionFunctionContext ctx) { calculateParameterCount(ctx.expr()); FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.POSITION().getText(), getOriginalText(ctx)); - result.getParameters().add((LiteralExpressionSegment) visit(ctx.expr(0))); - result.getParameters().add((LiteralExpressionSegment) visit(ctx.expr(1))); + result.getParameters().add((ExpressionSegment) visit(ctx.expr(0))); + result.getParameters().add((ExpressionSegment) visit(ctx.expr(1))); return result; } @@ -1172,10 +1172,10 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment result.setAlias(alias); return result; } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; + ExpressionSegment column = (ExpressionSegment) projection; ExpressionProjectionSegment result = null == alias - ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), column.getText(), column) + : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), column.getText(), column); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java index 827ce969a11e2..1f62c61dbac0c 100644 --- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java +++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java @@ -52,6 +52,7 @@ import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.TableReferencesContext; import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.UpdateContext; import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.WhereClauseContext; +import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.SQL92StatementVisitor; import org.apache.shardingsphere.sql.parser.statement.core.enums.JoinType; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.ColumnAssignmentSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.InsertValuesSegment; @@ -62,7 +63,6 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.FunctionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.complex.CommonExpressionSegment; -import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.LiteralExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.ParameterMarkerExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubqueryExpressionSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubquerySegment; @@ -91,7 +91,6 @@ import org.apache.shardingsphere.sql.parser.statement.sql92.dml.SQL92InsertStatement; import org.apache.shardingsphere.sql.parser.statement.sql92.dml.SQL92SelectStatement; import org.apache.shardingsphere.sql.parser.statement.sql92.dml.SQL92UpdateStatement; -import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.SQL92StatementVisitor; import java.util.Collection; import java.util.Collections; @@ -349,9 +348,9 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment result.setAlias(alias); return projection; } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; - ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) - : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); + ExpressionSegment column = (ExpressionSegment) projection; + ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), column.getText(), column) + : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), column.getText(), column); result.setAlias(alias); return result; } diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java index 13fcbd5bde0b6..b622446c36007 100644 --- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java +++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java @@ -1545,8 +1545,8 @@ private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment result.setAlias(alias); return projection; } - LiteralExpressionSegment column = (LiteralExpressionSegment) projection; - ExpressionProjectionSegment result = new ExpressionProjectionSegment(getStartIndexWithAlias(column, alias), getStopIndexWithAlias(column, alias), String.valueOf(column.getLiterals()), column); + ExpressionSegment column = (ExpressionSegment) projection; + ExpressionProjectionSegment result = new ExpressionProjectionSegment(getStartIndexWithAlias(column, alias), getStopIndexWithAlias(column, alias), column.getText(), column); result.setAlias(alias); return result; }