You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/05/03 09:33:16 UTC
[shardingsphere] branch master updated: Refactor JoinTableSegment (#17297)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 5d29110ea5b Refactor JoinTableSegment (#17297)
5d29110ea5b is described below
commit 5d29110ea5b9d3e82294451aacfbc0bdd8685cbd
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue May 3 17:33:09 2022 +0800
Refactor JoinTableSegment (#17297)
---
.../refresher/type/AlterSchemaStatementSchemaRefresher.java | 4 ++--
.../visitor/statement/impl/MySQLStatementSQLVisitor.java | 6 +-----
.../visitor/statement/impl/OpenGaussStatementSQLVisitor.java | 12 ++++++------
.../visitor/statement/impl/OracleDMLStatementSQLVisitor.java | 7 ++-----
.../statement/impl/PostgreSQLStatementSQLVisitor.java | 8 ++++----
.../visitor/statement/impl/SQL92DMLStatementSQLVisitor.java | 8 ++------
.../visitor/statement/impl/SQLServerStatementSQLVisitor.java | 6 +-----
.../sql/common/segment/generic/table/JoinTableSegment.java | 5 +++--
.../parameterized/asserts/segment/table/TableAssert.java | 3 +--
9 files changed, 22 insertions(+), 37 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
index 1ddfb0a6dd6..34bb833e25f 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
@@ -55,14 +55,14 @@ public final class AlterSchemaStatementSchemaRefresher implements MetaDataRefres
// TODO Maybe need to refresh tables for SingleTableRule
}
- private void removeSchemaMetaData(final ShardingSphereMetaData metaData, final FederationDatabaseMetaData database,
+ private void removeSchemaMetaData(final ShardingSphereMetaData metaData, final FederationDatabaseMetaData database,
final Map<String, OptimizerPlannerContext> optimizerPlanners, final String schemaName) {
metaData.getSchemas().remove(schemaName);
database.remove(schemaName);
optimizerPlanners.put(database.getName(), OptimizerPlannerContextFactory.create(database));
}
- private void putSchemaMetaData(final ShardingSphereMetaData metaData, final FederationDatabaseMetaData database,
+ private void putSchemaMetaData(final ShardingSphereMetaData metaData, final FederationDatabaseMetaData database,
final Map<String, OptimizerPlannerContext> optimizerPlanners, final String schemaName, final String renameSchemaName) {
metaData.getSchemas().put(renameSchemaName, metaData.getSchemaByName(schemaName));
database.getSchemaMetadata(schemaName).ifPresent(optional -> database.put(renameSchemaName, optional));
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java
index 09048a43902..32a75d656c0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java
@@ -1554,11 +1554,7 @@ public abstract class MySQLStatementSQLVisitor extends MySQLStatementBaseVisitor
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
- List<ColumnSegment> columnSegments = new LinkedList<>();
- for (ColumnNameContext each : ctx.columnNames().columnName()) {
- columnSegments.add((ColumnSegment) visit(each));
- }
- joinTableSource.setUsing(columnSegments);
+ joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return joinTableSource;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
index ae26de21478..8ea07794484 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
@@ -30,9 +30,11 @@ import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementBaseVisito
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AExprContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AexprConstContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AliasClauseContext;
+import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AnyNameContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AscDescContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AssignmentContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AttrNameContext;
+import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AttrsContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.BExprContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CExprContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ColIdContext;
@@ -100,8 +102,6 @@ import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.Val
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.WhereClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.WhereOrCurrentClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.WindowClauseContext;
-import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AnyNameContext;
-import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AttrsContext;
import org.apache.shardingsphere.sql.parser.sql.common.constant.AggregationType;
import org.apache.shardingsphere.sql.parser.sql.common.constant.OrderDirection;
import org.apache.shardingsphere.sql.parser.sql.common.constant.ParameterMarkerType;
@@ -177,6 +177,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.OpenGaussSelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.OpenGaussUpdateStatement;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -999,7 +1000,7 @@ public abstract class OpenGaussStatementSQLVisitor extends OpenGaussStatementBas
result = new SubqueryProjectionSegment(existsSubqueryExpression.getSubquery(), text);
}
}
- if (result instanceof AliasAvailable && null != ctx.identifier()) {
+ if (null != ctx.identifier()) {
((AliasAvailable) result).setAlias(new AliasSegment(ctx.identifier().start.getStartIndex(), ctx.identifier().stop.getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
}
return result;
@@ -1085,13 +1086,12 @@ public abstract class OpenGaussStatementSQLVisitor extends OpenGaussStatementBas
}
private List<ColumnSegment> generateUsingColumn(final NameListContext ctx) {
- List<ColumnSegment> result = new LinkedList<>();
+ List<ColumnSegment> result = new ArrayList<>();
if (null != ctx.nameList()) {
result.addAll(generateUsingColumn(ctx.nameList()));
}
if (null != ctx.name()) {
- ColumnSegment column = new ColumnSegment(ctx.name().start.getStartIndex(), ctx.name().stop.getStopIndex(), new IdentifierValue(ctx.name().getText()));
- result.add(column);
+ result.add(new ColumnSegment(ctx.name().start.getStartIndex(), ctx.name().stop.getStopIndex(), new IdentifierValue(ctx.name().getText())));
}
return result;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java
index 2bda32a4a35..8ae7f19001b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java
@@ -155,6 +155,7 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
/**
* DML Statement SQL visitor for Oracle.
@@ -807,11 +808,7 @@ public final class OracleDMLStatementSQLVisitor extends OracleStatementSQLVisito
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
- List<ColumnSegment> columnSegments = new LinkedList<>();
- for (ColumnNameContext cname : ctx.columnNames().columnName()) {
- columnSegments.add((ColumnSegment) visit(cname));
- }
- joinTableSource.setUsing(columnSegments);
+ joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return joinTableSource;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
index a674eb52c25..d6e24482b2a 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
@@ -174,6 +174,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLSelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLUpdateStatement;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -964,7 +965,7 @@ public abstract class PostgreSQLStatementSQLVisitor extends PostgreSQLStatementP
result = new SubqueryProjectionSegment(existsSubqueryExpression.getSubquery(), text);
}
}
- if (result instanceof AliasAvailable && null != ctx.identifier()) {
+ if (null != ctx.identifier()) {
((AliasAvailable) result).setAlias(new AliasSegment(ctx.identifier().start.getStartIndex(), ctx.identifier().stop.getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
}
return result;
@@ -1050,13 +1051,12 @@ public abstract class PostgreSQLStatementSQLVisitor extends PostgreSQLStatementP
}
private List<ColumnSegment> generateUsingColumn(final NameListContext ctx) {
- List<ColumnSegment> result = new LinkedList<>();
+ List<ColumnSegment> result = new ArrayList<>();
if (null != ctx.nameList()) {
result.addAll(generateUsingColumn(ctx.nameList()));
}
if (null != ctx.name()) {
- ColumnSegment column = new ColumnSegment(ctx.name().start.getStartIndex(), ctx.name().stop.getStopIndex(), new IdentifierValue(ctx.name().getText()));
- result.add(column);
+ result.add(new ColumnSegment(ctx.name().start.getStartIndex(), ctx.name().stop.getStopIndex(), new IdentifierValue(ctx.name().getText())));
}
return result;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java
index 0d7193e245d..fc62ba35838 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java
@@ -26,7 +26,6 @@ import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AliasCo
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AssignmentContext;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AssignmentValueContext;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AssignmentValuesContext;
-import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.ColumnNameContext;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.ColumnNamesContext;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.DeleteContext;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.DuplicateSpecificationContext;
@@ -100,6 +99,7 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
/**
* DML Statement SQL visitor for SQL92.
@@ -451,11 +451,7 @@ public final class SQL92DMLStatementSQLVisitor extends SQL92StatementSQLVisitor
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
- List<ColumnSegment> columnSegments = new LinkedList<>();
- for (ColumnNameContext cname : ctx.columnNames().columnName()) {
- columnSegments.add((ColumnSegment) visit(cname));
- }
- joinTableSource.setUsing(columnSegments);
+ joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return joinTableSource;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java
index 84873e56f9f..7f4cb5a7c76 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java
@@ -1206,11 +1206,7 @@ public abstract class SQLServerStatementSQLVisitor extends SQLServerStatementBas
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
- List<ColumnSegment> columnSegments = new LinkedList<>();
- for (ColumnNameContext cname : ctx.columnNames().columnName()) {
- columnSegments.add((ColumnSegment) visit(cname));
- }
- joinTableSource.setUsing(columnSegments);
+ joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return joinTableSource;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/JoinTableSegment.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/JoinTableSegment.java
index 8d396912c8a..83873ff6703 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/JoinTableSegment.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/JoinTableSegment.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Column
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -42,10 +43,10 @@ public final class JoinTableSegment implements TableSegment {
private TableSegment right;
- private List<ColumnSegment> using;
-
private ExpressionSegment condition;
+ private List<ColumnSegment> using = Collections.emptyList();
+
@Override
public Optional<String> getAlias() {
return null == alias ? Optional.empty() : Optional.ofNullable(alias.getIdentifier().getValue());
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/table/TableAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/table/TableAssert.java
index 82bc783be08..bce6074bc1e 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/table/TableAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/table/TableAssert.java
@@ -112,8 +112,7 @@ public final class TableAssert {
assertIs(assertContext, actual.getLeft(), expected.getLeft());
assertIs(assertContext, actual.getRight(), expected.getRight());
ExpressionAssert.assertExpression(assertContext, actual.getCondition(), expected.getOnCondition());
- assertThat(assertContext.getText("Column size assertion error: "),
- actual.getUsing() != null ? actual.getUsing().size() : 0, is(expected.getUsingColumns().size()));
+ assertThat(assertContext.getText("Column size assertion error: "), actual.getUsing().size(), is(expected.getUsingColumns().size()));
int count = 0;
for (ExpectedColumn each : expected.getUsingColumns()) {
ColumnAssert.assertIs(assertContext, actual.getUsing().get(count), each);