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));