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

chengzhang 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 84f2120881a Minor refactor for sql node convert logic (#28673)
84f2120881a is described below

commit 84f2120881a92d84ac9864865e9a82c85a97633b
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Sun Oct 8 15:29:05 2023 +0800

    Minor refactor for sql node convert logic (#28673)
---
 .../dialect/mysql}/SQLExtensionOperatorTable.java    |  3 +--
 .../impl/BinaryOperationExpressionConverter.java     |  1 +
 .../expression/impl/CollateExpressionConverter.java  |  3 ++-
 .../expression/impl/MatchExpressionConverter.java    |  1 +
 .../expression/impl/NotExpressionConverter.java      |  1 +
 .../impl/UnaryOperationExpressionConverter.java      |  1 +
 .../converter/segment/with/WithConverter.java        |  2 +-
 .../statement/delete/DeleteStatementConverter.java   |  7 +------
 .../statement/explain/ExplainStatementConverter.java | 20 +++++++++++---------
 9 files changed, 20 insertions(+), 19 deletions(-)

diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/SQLExtensionOperatorTable.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/function/dialect/mysql/SQLExtensionOperatorTable.java
similarity index 95%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/SQLExtensionOperatorTable.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/function/dialect/mysql/SQLExtensionOperatorTable.java
index 946b4058c36..4facb08895a 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/SQLExtensionOperatorTable.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/function/dialect/mysql/SQLExtensionOperatorTable.java
@@ -15,14 +15,13 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.impl;
+package 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.calcite.sql.SqlBinaryOperator;
 import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.sql.SqlPrefixOperator;
-import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.MySQLMatchAgainstFunction;
 
 /**
  * SQL extension operator table.
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
index 729913874f2..82e296c97c8 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
@@ -26,6 +26,7 @@ import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.SQLExtensionOperatorTable;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/CollateExpressionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/CollateExpressionConverter.java
index 630a5f3c4a2..24857f425e8 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/CollateExpressionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/CollateExpressionConverter.java
@@ -22,6 +22,7 @@ import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.SqlNodeList;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CollateExpression;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.SQLExtensionOperatorTable;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
@@ -37,7 +38,7 @@ public final class CollateExpressionConverter implements 
SQLSegmentConverter<Col
     @Override
     public Optional<SqlNode> convert(final CollateExpression segment) {
         List<SqlNode> sqlNodes = new LinkedList<>();
-        sqlNodes.add(new 
ExpressionConverter().convert(segment.getExpr().get()).orElse(SqlNodeList.EMPTY));
+        sqlNodes.add(segment.getExpr().flatMap(optional -> new 
ExpressionConverter().convert(optional)).orElse(SqlNodeList.EMPTY));
         sqlNodes.add(new 
ExpressionConverter().convert(segment.getCollateName()).orElse(SqlNodeList.EMPTY));
         return Optional.of(new SqlBasicCall(SQLExtensionOperatorTable.COLLATE, 
sqlNodes, SqlParserPos.ZERO));
     }
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/MatchExpressionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/MatchExpressionConverter.java
index e633ad288f0..9c359c7c370 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/MatchExpressionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/MatchExpressionConverter.java
@@ -24,6 +24,7 @@ import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.MatchAgainstExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.SQLExtensionOperatorTable;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/NotExpressionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/NotExpressionConverter.java
index b8b1f24d914..85fdef1aab4 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/NotExpressionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/NotExpressionConverter.java
@@ -22,6 +22,7 @@ import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.NotExpression;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.SQLExtensionOperatorTable;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/UnaryOperationExpressionConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/UnaryOperationExpressionConverter.java
index cc95a87b6bd..98ad1691926 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/UnaryOperationExpressionConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/UnaryOperationExpressionConverter.java
@@ -24,6 +24,7 @@ import org.apache.calcite.sql.SqlOperator;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.UnaryOperationExpression;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.function.dialect.mysql.SQLExtensionOperatorTable;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.expression.ExpressionConverter;
 
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/with/WithConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/with/WithConverter.java
index 326ef647bbb..3e75875e93c 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/with/WithConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/with/WithConverter.java
@@ -44,7 +44,7 @@ public final class WithConverter {
      * @param query SqlNode
      * @return SqlNodeList
      */
-    public Optional<SqlNodeList> convert(final WithSegment withSegment, final 
SqlNode query) {
+    public Optional<SqlNode> convert(final WithSegment withSegment, final 
SqlNode query) {
         SqlIdentifier name = new 
SqlIdentifier(withSegment.getCommonTableExpressions().iterator().next().getIdentifier().getValue(),
 SqlParserPos.ZERO);
         SqlNode selectSubquery = new 
SelectStatementConverter().convert(withSegment.getCommonTableExpressions().iterator().next().getSubquery().getSelect());
         ExpressionConverter converter = new ExpressionConverter();
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/delete/DeleteStatementConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/delete/DeleteStatementConverter.java
index a60ed85ce22..98440e09ca2 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/delete/DeleteStatementConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/delete/DeleteStatementConverter.java
@@ -24,7 +24,6 @@ import org.apache.calcite.sql.SqlNodeList;
 import org.apache.calcite.sql.SqlOrderBy;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.WithSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.DeleteStatementHandler;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.from.TableConverter;
@@ -59,10 +58,6 @@ public final class DeleteStatementConverter implements 
SQLStatementConverter<Del
         SqlNode condition = deleteStatement.getWhere().flatMap(optional -> new 
WhereConverter().convert(optional)).orElse(null);
         SqlIdentifier alias = 
deleteStatement.getTable().getAliasName().map(optional -> new 
SqlIdentifier(optional, SqlParserPos.ZERO)).orElse(null);
         SqlDelete sqlDelete = new SqlDelete(SqlParserPos.ZERO, deleteTable, 
condition, null, alias);
-        Optional<WithSegment> with = 
DeleteStatementHandler.getWithSegment(deleteStatement);
-        if (with.isPresent()) {
-            return new 
WithConverter().convert(DeleteStatementHandler.getWithSegment(deleteStatement).get(),
 sqlDelete).get();
-        }
-        return sqlDelete;
+        return 
DeleteStatementHandler.getWithSegment(deleteStatement).flatMap(optional -> new 
WithConverter().convert(optional, sqlDelete)).orElse(sqlDelete);
     }
 }
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
index d97953c46ae..d7d09758214 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
@@ -17,10 +17,10 @@
 
 package 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.explain;
 
-import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.SqlExplain;
-import org.apache.calcite.sql.SqlExplainLevel;
 import org.apache.calcite.sql.SqlExplainFormat;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ExplainStatement;
@@ -34,6 +34,8 @@ import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.inse
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.select.SelectStatementConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.update.UpdateStatementConverter;
 
+import java.util.Optional;
+
 /**
  * Explain statement converter.
  */
@@ -46,19 +48,19 @@ public final class ExplainStatementConverter implements 
SQLStatementConverter<Ex
     }
     
     private SqlNode convertSQLStatement(final ExplainStatement 
explainStatement) {
-        return 
explainStatement.getStatement().map(this::convertSqlNode).orElseThrow(IllegalStateException::new);
+        return 
explainStatement.getStatement().flatMap(this::convertSqlNode).orElseThrow(IllegalStateException::new);
     }
     
-    private SqlNode convertSqlNode(final SQLStatement sqlStatement) {
+    private Optional<SqlNode> convertSqlNode(final SQLStatement sqlStatement) {
         if (sqlStatement instanceof SelectStatement) {
-            return new SelectStatementConverter().convert((SelectStatement) 
sqlStatement);
+            return Optional.of(new 
SelectStatementConverter().convert((SelectStatement) sqlStatement));
         } else if (sqlStatement instanceof DeleteStatement) {
-            return new DeleteStatementConverter().convert((DeleteStatement) 
sqlStatement);
+            return Optional.of(new 
DeleteStatementConverter().convert((DeleteStatement) sqlStatement));
         } else if (sqlStatement instanceof UpdateStatement) {
-            return new UpdateStatementConverter().convert((UpdateStatement) 
sqlStatement);
+            return Optional.of(new 
UpdateStatementConverter().convert((UpdateStatement) sqlStatement));
         } else if (sqlStatement instanceof InsertStatement) {
-            return new InsertStatementConverter().convert((InsertStatement) 
sqlStatement);
+            return Optional.of(new 
InsertStatementConverter().convert((InsertStatement) sqlStatement));
         }
-        return null;
+        return Optional.empty();
     }
 }

Reply via email to