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 1381e924e09 Revise pr#27599 (#27624)
1381e924e09 is described below
commit 1381e924e09d880866c24c50400047bc0fcb707e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Aug 2 12:34:28 2023 +0800
Revise pr#27599 (#27624)
* Revise pr#27599
* Revise pr#27599
---
.../segment/from/impl/DeleteMultiTableConverter.java | 18 +++++++-----------
.../statement/delete/DeleteStatementConverter.java | 17 ++++++-----------
.../statement/select/SelectStatementConverter.java | 6 ++----
3 files changed, 15 insertions(+), 26 deletions(-)
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/from/impl/DeleteMultiTableConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/from/impl/DeleteMultiTableConverter.java
index 3089d88982d..8e7e5750999 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/from/impl/DeleteMultiTableConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/from/impl/DeleteMultiTableConverter.java
@@ -30,7 +30,6 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
-import java.util.ArrayList;
/**
* Delete multi table converter.
@@ -42,16 +41,13 @@ public final class DeleteMultiTableConverter implements
SQLSegmentConverter<Dele
if (null == segment) {
return Optional.empty();
}
- Collection<SqlNode> sqlNodeList = new LinkedList<>();
- SqlNode table = new
TableConverter().convert(segment.getRelationTable()).get();
- sqlNodeList.add(table);
- List<SimpleTableSegment> actualDeleteTables =
segment.getActualDeleteTables();
- List<String> names = new ArrayList<>();
- for (SimpleTableSegment each : actualDeleteTables) {
- String tableName = each.getTableName().getIdentifier().getValue();
- names.add(tableName);
+ Collection<SqlNode> sqlNodes = new LinkedList<>();
+ new
TableConverter().convert(segment.getRelationTable()).ifPresent(sqlNodes::add);
+ List<String> tableNames = new LinkedList<>();
+ for (SimpleTableSegment each : segment.getActualDeleteTables()) {
+ tableNames.add(each.getTableName().getIdentifier().getValue());
}
- sqlNodeList.add(new SqlIdentifier(names, SqlParserPos.ZERO));
- return Optional.of(new SqlNodeList(sqlNodeList, SqlParserPos.ZERO));
+ sqlNodes.add(new SqlIdentifier(tableNames, SqlParserPos.ZERO));
+ return Optional.of(new SqlNodeList(sqlNodes, SqlParserPos.ZERO));
}
}
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 b6666b26e3d..154bb26f6db 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
@@ -17,13 +17,12 @@
package
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.delete;
-import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlDelete;
+import org.apache.calcite.sql.SqlIdentifier;
+import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlNodeList;
import org.apache.calcite.sql.SqlOrderBy;
-import org.apache.calcite.sql.SqlIdentifier;
import org.apache.calcite.sql.parser.SqlParserPos;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.OrderBySegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.DeleteStatementHandler;
@@ -43,8 +42,7 @@ public final class DeleteStatementConverter implements
SQLStatementConverter<Del
@Override
public SqlNode convert(final DeleteStatement deleteStatement) {
SqlDelete sqlDelete = convertDelete(deleteStatement);
- Optional<OrderBySegment> orderByfetcher =
DeleteStatementHandler.getOrderBySegment(deleteStatement);
- SqlNodeList orderBy = orderByfetcher.flatMap(optional -> new
OrderByConverter().convert(optional)).orElse(SqlNodeList.EMPTY);
+ SqlNodeList orderBy =
DeleteStatementHandler.getOrderBySegment(deleteStatement).flatMap(optional ->
new OrderByConverter().convert(optional)).orElse(SqlNodeList.EMPTY);
Optional<LimitSegment> limit =
DeleteStatementHandler.getLimitSegment(deleteStatement);
if (limit.isPresent()) {
SqlNode offset = limit.get().getOffset().flatMap(optional -> new
PaginationValueSQLConverter().convert(optional)).orElse(null);
@@ -55,12 +53,9 @@ public final class DeleteStatementConverter implements
SQLStatementConverter<Del
}
private SqlDelete convertDelete(final DeleteStatement deleteStatement) {
- SqlNode targetTable = new
TableConverter().convert(deleteStatement.getTable()).get();
+ SqlNode deleteTable = new
TableConverter().convert(deleteStatement.getTable()).orElseThrow(IllegalStateException::new);
SqlNode condition = deleteStatement.getWhere().flatMap(optional -> new
WhereConverter().convert(optional)).orElse(null);
- if (deleteStatement.getTable().getAliasName().isPresent()) {
- SqlIdentifier alias = new
SqlIdentifier(deleteStatement.getTable().getAliasName().toString(),
SqlParserPos.ZERO);
- return new SqlDelete(SqlParserPos.ZERO, targetTable, condition,
null, alias);
- }
- return new SqlDelete(SqlParserPos.ZERO, targetTable, condition, null,
null);
+ SqlIdentifier alias =
deleteStatement.getTable().getAliasName().map(optional -> new
SqlIdentifier(optional, SqlParserPos.ZERO)).orElse(null);
+ return new SqlDelete(SqlParserPos.ZERO, deleteTable, condition, null,
alias);
}
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/select/SelectStatementConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/select/SelectStatementConverter.java
index e70f9a2d8b0..bab0b9feb32 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/select/SelectStatementConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/select/SelectStatementConverter.java
@@ -25,10 +25,8 @@ import org.apache.calcite.sql.SqlSelect;
import org.apache.calcite.sql.parser.SqlParserPos;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.combine.CombineSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.WindowSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.SelectStatementHandler;
-import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.window.WindowConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.from.TableConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.groupby.GroupByConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.groupby.HavingConverter;
@@ -37,6 +35,7 @@ import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.orderb
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.projection.DistinctConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.projection.ProjectionsConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.where.WhereConverter;
+import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.window.WindowConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.SQLStatementConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.type.CombineOperatorConverter;
@@ -69,8 +68,7 @@ public final class SelectStatementConverter implements
SQLStatementConverter<Sel
SqlNode where = selectStatement.getWhere().flatMap(optional -> new
WhereConverter().convert(optional)).orElse(null);
SqlNodeList groupBy = selectStatement.getGroupBy().flatMap(optional ->
new GroupByConverter().convert(optional)).orElse(null);
SqlNode having = selectStatement.getHaving().flatMap(optional -> new
HavingConverter().convert(optional)).orElse(null);
- Optional<WindowSegment> windowSegment =
SelectStatementHandler.getWindowSegment(selectStatement);
- SqlNodeList window = windowSegment.map(new
WindowConverter()::convert).map(Optional::get).orElse(SqlNodeList.EMPTY);
+ SqlNodeList window =
SelectStatementHandler.getWindowSegment(selectStatement).flatMap(new
WindowConverter()::convert).orElse(SqlNodeList.EMPTY);
return new SqlSelect(SqlParserPos.ZERO, distinct, projection, from,
where, groupBy, having, window, null, null, null, SqlNodeList.EMPTY);
}