This is an automated email from the ASF dual-hosted git repository.

zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 09765ff4afd Fix LiteralExpressionSegment cast exception in sql parser. 
(#33332)
09765ff4afd is described below

commit 09765ff4afd50955656a02587007edad57d3f5e4
Author: Cong Hu <[email protected]>
AuthorDate: Mon Oct 28 11:51:41 2024 +0800

    Fix LiteralExpressionSegment cast exception in sql parser. (#33332)
---
 .../statement/type/ClickHouseDMLStatementVisitor.java     | 15 +++++++--------
 .../doris/visitor/statement/DorisStatementVisitor.java    |  5 ++---
 .../visitor/statement/type/HiveDMLStatementVisitor.java   | 12 ++++++------
 .../mysql/visitor/statement/MySQLStatementVisitor.java    |  5 ++---
 .../visitor/statement/OpenGaussStatementVisitor.java      |  6 +++---
 .../visitor/statement/PostgreSQLStatementVisitor.java     |  6 +++---
 .../visitor/statement/type/PrestoDMLStatementVisitor.java | 10 +++++-----
 .../visitor/statement/type/SQL92DMLStatementVisitor.java  |  9 ++++-----
 .../visitor/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 bceb6cb16b8..93a02615e76 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.In
 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.Bina
 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.segment.generic.table
 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 @@ public final class ClickHouseDMLStatementVisitor extends 
ClickHouseStatementVisi
             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(), String.valueOf(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 c122e38fa28..5bbb10f0ae5 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 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
                 || 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(), String.valueOf(projection.getText()), projection)
+                : new ExpressionProjectionSegment(projection.getStartIndex(), 
ctx.alias().stop.getStopIndex(), String.valueOf(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 b819e120608..2669445282f 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 final class HiveDMLStatementVisitor extends 
HiveStatementVisitor implemen
     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 final class HiveDMLStatementVisitor extends 
HiveStatementVisitor implemen
         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 @@ public final class HiveDMLStatementVisitor extends 
HiveStatementVisitor implemen
             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(), String.valueOf(column.getText()), column)
+                : new ExpressionProjectionSegment(column.getStartIndex(), 
ctx.alias().stop.getStopIndex(), String.valueOf(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 80c2d9f0254..56dfda80574 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 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
                 || 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(), String.valueOf(projection.getText()), projection)
+                : new ExpressionProjectionSegment(projection.getStartIndex(), 
ctx.alias().stop.getStopIndex(), String.valueOf(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 50ab0bd7982..f7785529e07 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 abstract class OpenGaussStatementVisitor extends 
OpenGaussStatementBaseVi
         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 abstract class OpenGaussStatementVisitor extends 
OpenGaussStatementBaseVi
         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 abstract class OpenGaussStatementVisitor extends 
OpenGaussStatementBaseVi
         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 f352caef588..908961e3fe0 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 abstract class PostgreSQLStatementVisitor extends 
PostgreSQLStatementPars
             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 abstract class PostgreSQLStatementVisitor extends 
PostgreSQLStatementPars
             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 abstract class PostgreSQLStatementVisitor extends 
PostgreSQLStatementPars
             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 7a3496d9342..bf57f4c3a1d 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 final class PrestoDMLStatementVisitor extends 
PrestoStatementVisitor impl
     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 @@ public final class PrestoDMLStatementVisitor extends 
PrestoStatementVisitor impl
             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(), String.valueOf(column.getText()), column)
+                : new ExpressionProjectionSegment(column.getStartIndex(), 
ctx.alias().stop.getStopIndex(), String.valueOf(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 827ce969a11..c31ac519f30 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.TableRe
 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.Bina
 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.SQL92DeleteState
 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 @@ public final class SQL92DMLStatementVisitor extends 
SQL92StatementVisitor implem
             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(), 
String.valueOf(column.getText()), column)
+                : new ExpressionProjectionSegment(column.getStartIndex(), 
ctx.alias().stop.getStopIndex(), String.valueOf(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 13fcbd5bde0..2cba00ca6a4 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 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
             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), String.valueOf(column.getText()), column);
         result.setAlias(alias);
         return result;
     }

Reply via email to