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 c920a84f98f Revise pr#28289 (#28354)
c920a84f98f is described below
commit c920a84f98fecbe943279f50fb36783b770a4dbe
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Sep 4 17:59:49 2023 +0800
Revise pr#28289 (#28354)
---
.../converter/segment/expression/impl/ColumnConverter.java | 10 +++-------
.../segment/expression/impl/RowExpressionConverter.java | 4 ++--
.../segment/projection/impl/ShorthandProjectionConverter.java | 6 ++----
.../segment/projection/impl/SubqueryProjectionConverter.java | 10 +++++-----
.../src/test/resources/converter/select-sub-query.xml | 2 +-
5 files changed, 13 insertions(+), 19 deletions(-)
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/ColumnConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/ColumnConverter.java
index f7f9b4b429e..0668a96ac8b 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/ColumnConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/ColumnConverter.java
@@ -36,17 +36,13 @@ public final class ColumnConverter implements
SQLSegmentConverter<ColumnSegment,
@Override
public Optional<SqlNode> convert(final ColumnSegment segment) {
List<String> names = new ArrayList<>();
- if (segment.getOwner().isPresent()) {
- addOwnerNames(names, segment.getOwner().get());
- }
+ segment.getOwner().ifPresent(optional -> addOwnerNames(names,
optional));
names.add(segment.getIdentifier().getValue());
return Optional.of(new SqlIdentifier(names, SqlParserPos.ZERO));
}
private void addOwnerNames(final List<String> names, final OwnerSegment
owner) {
- if (null != owner) {
- addOwnerNames(names, owner.getOwner().orElse(null));
- names.add(owner.getIdentifier().getValue());
- }
+ owner.getOwner().ifPresent(optional -> addOwnerNames(names, optional));
+ names.add(owner.getIdentifier().getValue());
}
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/RowExpressionConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/RowExpressionConverter.java
index f5431b0a3c0..928b68b7420 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/RowExpressionConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/expression/impl/RowExpressionConverter.java
@@ -38,8 +38,8 @@ public final class RowExpressionConverter implements
SQLSegmentConverter<RowExpr
public Optional<SqlNode> convert(final RowExpression segment) {
List<SqlNode> sqlNodes = new ArrayList<>();
ExpressionConverter expressionConverter = new ExpressionConverter();
- for (ExpressionSegment expressionSegment : segment.getItems()) {
- sqlNodes.add(expressionConverter.convert(expressionSegment).get());
+ for (ExpressionSegment each : segment.getItems()) {
+ expressionConverter.convert(each).ifPresent(sqlNodes::add);
}
return
Optional.of(SqlStdOperatorTable.ROW.createCall(SqlParserPos.ZERO, sqlNodes));
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/ShorthandProjectionConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/ShorthandProjectionConverter.java
index b80d845b8e3..6a0c1e8fe75 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/ShorthandProjectionConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/ShorthandProjectionConverter.java
@@ -50,9 +50,7 @@ public final class ShorthandProjectionConverter implements
SQLSegmentConverter<S
}
private void addOwnerNames(final List<String> names, final OwnerSegment
owner) {
- if (null != owner) {
- addOwnerNames(names, owner.getOwner().orElse(null));
- names.add(owner.getIdentifier().getValue());
- }
+ owner.getOwner().ifPresent(optional -> addOwnerNames(names, optional));
+ names.add(owner.getIdentifier().getValue());
}
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/SubqueryProjectionConverter.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/SubqueryProjectionConverter.java
index e7cd09880cf..653749ce6f7 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/SubqueryProjectionConverter.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/segment/projection/impl/SubqueryProjectionConverter.java
@@ -23,9 +23,9 @@ 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.enums.SubqueryType;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.SubqueryProjectionSegment;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.segment.SQLSegmentConverter;
import
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.select.SelectStatementConverter;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.SubqueryProjectionSegment;
import java.util.ArrayList;
import java.util.Collection;
@@ -45,17 +45,17 @@ public final class SubqueryProjectionConverter implements
SQLSegmentConverter<Su
}
SqlNode sqlNode = new
SelectStatementConverter().convert(segment.getSubquery().getSelect());
if (segment.getAliasName().isPresent()) {
- sqlNode = convertToSQLStatement(sqlNode,
segment.getAliasName().get()).get();
+ sqlNode = convertWithAlias(sqlNode, segment.getAliasName().get());
}
- return
segment.getSubquery().getSubqueryType().equals(SubqueryType.EXISTS_SUBQUERY)
+ return SubqueryType.EXISTS_SUBQUERY ==
segment.getSubquery().getSubqueryType()
? Optional.of(new SqlBasicCall(SqlStdOperatorTable.EXISTS,
Collections.singletonList(sqlNode), SqlParserPos.ZERO))
: Optional.of(sqlNode);
}
- private Optional<SqlNode> convertToSQLStatement(final SqlNode sqlNode,
final String alias) {
+ private SqlNode convertWithAlias(final SqlNode sqlNode, final String
alias) {
Collection<SqlNode> sqlNodes = new LinkedList<>();
sqlNodes.add(sqlNode);
sqlNodes.add(new SqlIdentifier(alias, SqlParserPos.ZERO));
- return Optional.of(new SqlBasicCall(SqlStdOperatorTable.AS, new
ArrayList<>(sqlNodes), SqlParserPos.ZERO));
+ return new SqlBasicCall(SqlStdOperatorTable.AS, new
ArrayList<>(sqlNodes), SqlParserPos.ZERO);
}
}
diff --git
a/test/it/optimizer/src/test/resources/converter/select-sub-query.xml
b/test/it/optimizer/src/test/resources/converter/select-sub-query.xml
index 8042876c366..7ee7d0489b1 100644
--- a/test/it/optimizer/src/test/resources/converter/select-sub-query.xml
+++ b/test/it/optimizer/src/test/resources/converter/select-sub-query.xml
@@ -19,4 +19,4 @@
<sql-node-converter-test-cases>
<test-cases sql-case-id="select_with_exists_sub_query_with_project"
expected-sql="SELECT EXISTS (SELECT 1 FROM `t_order`)" db-types="MySQL" />
<test-cases sql-case-id="select_with_exists_sub_query_with_project"
expected-sql="SELECT EXISTS (SELECT 1 FROM "t_order")"
db-types="PostgreSQL,openGauss" />
-</sql-node-converter-test-cases>
\ No newline at end of file
+</sql-node-converter-test-cases>