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

tuichenchuxin 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 aeaa2e7cf4e Revise pr#28319 (#28352)
aeaa2e7cf4e is described below

commit aeaa2e7cf4e9458ef098c7caec2236952be763aa
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Sep 4 15:53:43 2023 +0800

    Revise pr#28319 (#28352)
---
 .../segment/expression/impl/FunctionConverter.java         | 10 ++--------
 .../segment/expression/impl/WindowFunctionConverter.java   |  9 ++++++---
 .../mysql/visitor/statement/MySQLStatementVisitor.java     | 14 ++++++--------
 3 files changed, 14 insertions(+), 19 deletions(-)

diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/FunctionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/FunctionConverter.java
index 0c509775852..3cb9c041603 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/FunctionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/FunctionConverter.java
@@ -34,6 +34,7 @@ import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSeg
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
@@ -68,14 +69,7 @@ public class FunctionConverter implements 
SQLSegmentConverter<FunctionSegment, S
         List<SqlNode> result = new LinkedList<>();
         ExpressionConverter expressionConverter = new ExpressionConverter();
         for (ExpressionSegment each : sqlSegments) {
-            if (expressionConverter.convert(each).isPresent()) {
-                SqlNode sqlNode = expressionConverter.convert(each).get();
-                if (sqlNode instanceof SqlNodeList) {
-                    result.addAll(((SqlNodeList) sqlNode).getList());
-                } else {
-                    result.add(expressionConverter.convert(each).get());
-                }
-            }
+            expressionConverter.convert(each).ifPresent(optional -> 
result.addAll(optional instanceof SqlNodeList ? ((SqlNodeList) 
optional).getList() : Collections.singleton(optional)));
         }
         return result;
     }
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/WindowFunctionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/WindowFunctionConverter.java
index 18f59c3f096..9cb96482071 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/WindowFunctionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/WindowFunctionConverter.java
@@ -17,14 +17,14 @@
 
 package 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.impl;
 
+import org.apache.calcite.sql.SqlBasicCall;
 import org.apache.calcite.sql.SqlIdentifier;
+import org.apache.calcite.sql.SqlLiteral;
 import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlNodeList;
 import org.apache.calcite.sql.SqlOperator;
 import org.apache.calcite.sql.SqlSyntax;
-import org.apache.calcite.sql.SqlBasicCall;
 import org.apache.calcite.sql.SqlWindow;
-import org.apache.calcite.sql.SqlNodeList;
-import org.apache.calcite.sql.SqlLiteral;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import org.apache.calcite.sql.validate.SqlNameMatchers;
@@ -37,6 +37,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * Window function converter.
+ */
 public final class WindowFunctionConverter extends FunctionConverter {
     
     @Override
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 9402d1e9020..f495ec032c8 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
@@ -176,8 +176,8 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpres
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ListExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.MatchAgainstExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.NotExpression;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ValuesExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.UnaryOperationExpression;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ValuesExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
@@ -238,7 +238,6 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.stream.Collectors;
-import java.util.Arrays;
 
 /**
  * Statement visitor for MySQL.
@@ -1184,12 +1183,11 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
             return visit(ctx.variable());
         }
         if (null != ctx.RETURNING()) {
-            ListExpression list = new 
ListExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
-            list.getItems()
-                    .addAll(Arrays.asList(new 
LiteralExpressionSegment(ctx.path().start.getStartIndex(), 
ctx.path().stop.getStopIndex(), ctx.path().getText()),
-                            new 
LiteralExpressionSegment(ctx.RETURNING().getSymbol().getStartIndex(), 
ctx.RETURNING().getSymbol().getStopIndex(), 
ctx.RETURNING().getSymbol().getText()),
-                            (ExpressionSegment) visit(ctx.dataType())));
-            return list;
+            ListExpression result = new 
ListExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
+            result.getItems().add(new 
LiteralExpressionSegment(ctx.path().start.getStartIndex(), 
ctx.path().stop.getStopIndex(), ctx.path().getText()));
+            result.getItems().add(new 
LiteralExpressionSegment(ctx.RETURNING().getSymbol().getStartIndex(), 
ctx.RETURNING().getSymbol().getStopIndex(), 
ctx.RETURNING().getSymbol().getText()));
+            result.getItems().add((ExpressionSegment) visit(ctx.dataType()));
+            return result;
         }
         if (null != ctx.LBE_()) {
             return visit(ctx.expr(0));

Reply via email to