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