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/11/20 12:45:40 UTC
[shardingsphere] branch master updated: Refactor DropShardingTableRuleStatement (#22294)
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 651de01caef Refactor DropShardingTableRuleStatement (#22294)
651de01caef is described below
commit 651de01caef76f97b40ef97b8b9ab55b79e2b4ee
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Nov 20 20:45:34 2022 +0800
Refactor DropShardingTableRuleStatement (#22294)
---
.../DropShardingTableRuleStatementUpdaterTest.java | 19 +++++------
.../core/ShardingDistSQLStatementVisitor.java | 39 +++++++++-------------
.../parser/segment/AbstractTableRuleSegment.java | 5 ++-
.../statement/DropShardingTableRuleStatement.java | 9 ++---
4 files changed, 29 insertions(+), 43 deletions(-)
diff --git a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
index 9904bbba55f..c7f5caf1131 100644
--- a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
+++ b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
@@ -57,30 +57,30 @@ public final class DropShardingTableRuleStatementUpdaterTest {
@Test(expected = MissingRequiredRuleException.class)
public void assertCheckSQLStatementWithoutCurrentRule() throws RuleDefinitionViolationException {
- updater.checkSQLStatement(database, new DropShardingTableRuleStatement(Collections.emptyList()), null);
+ updater.checkSQLStatement(database, new DropShardingTableRuleStatement(false, Collections.emptyList(), false), null);
}
@Test(expected = MissingRequiredRuleException.class)
public void assertCheckSQLStatementWithoutExistedTableRule() throws RuleDefinitionViolationException {
- updater.checkSQLStatement(database, createSQLStatement("t_order"), new ShardingRuleConfiguration());
+ updater.checkSQLStatement(database, createSQLStatement("t_order", false), new ShardingRuleConfiguration());
}
@Test
public void assertCheckSQLStatementWithIfExists() throws RuleDefinitionViolationException {
- DropShardingTableRuleStatement statement = new DropShardingTableRuleStatement(true, Collections.singleton(new TableNameSegment(0, 3, new IdentifierValue("t_order_if_exists"))));
+ DropShardingTableRuleStatement statement = new DropShardingTableRuleStatement(true, Collections.singleton(new TableNameSegment(0, 3, new IdentifierValue("t_order_if_exists"))), false);
updater.checkSQLStatement(database, statement, null);
updater.checkSQLStatement(database, statement, new ShardingRuleConfiguration());
}
@Test(expected = RuleInUsedException.class)
public void assertCheckSQLStatementWithBindingTableRule() throws RuleDefinitionViolationException {
- updater.checkSQLStatement(database, createSQLStatement("t_order_item"), createCurrentRuleConfiguration());
+ updater.checkSQLStatement(database, createSQLStatement("t_order_item", false), createCurrentRuleConfiguration());
}
@Test
public void assertUpdate() {
ShardingRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration();
- updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"), currentRuleConfig);
+ updater.updateCurrentRuleConfiguration(createSQLStatement("t_order", false), currentRuleConfig);
assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
}
@@ -88,7 +88,7 @@ public final class DropShardingTableRuleStatementUpdaterTest {
@Test
public void assertUpdateWithDifferentCase() {
ShardingRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration();
- updater.updateCurrentRuleConfiguration(createSQLStatement("T_ORDER"), currentRuleConfig);
+ updater.updateCurrentRuleConfiguration(createSQLStatement("T_ORDER", false), currentRuleConfig);
assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
}
@@ -96,16 +96,15 @@ public final class DropShardingTableRuleStatementUpdaterTest {
@Test
public void assertDropRuleAndUnusedAlgorithm() {
ShardingRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration();
- DropShardingTableRuleStatement sqlStatement = createSQLStatement("t_order");
- sqlStatement.setDropUnusedAlgorithms(true);
+ DropShardingTableRuleStatement sqlStatement = createSQLStatement("t_order", true);
updater.updateCurrentRuleConfiguration(sqlStatement, currentRuleConfig);
assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(2));
}
- private DropShardingTableRuleStatement createSQLStatement(final String tableName) {
- return new DropShardingTableRuleStatement(Collections.singleton(new TableNameSegment(0, 3, new IdentifierValue(tableName))));
+ private DropShardingTableRuleStatement createSQLStatement(final String tableName, final boolean dropUnusedAlgorithms) {
+ return new DropShardingTableRuleStatement(false, Collections.singleton(new TableNameSegment(0, 3, new IdentifierValue(tableName))), dropUnusedAlgorithms);
}
private ShardingRuleConfiguration createCurrentRuleConfiguration() {
diff --git a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index c1a5a66a53d..436f9d37b22 100644
--- a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++ b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -144,12 +144,9 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
@Override
public ASTNode visitCreateShardingTableRule(final CreateShardingTableRuleContext ctx) {
- List<AbstractTableRuleSegment> tableRuleSegments = ctx.shardingTableRuleDefinition().stream().map(each -> (AbstractTableRuleSegment) visit(each))
- .filter(Objects::nonNull).collect(Collectors.toList());
- if (tableRuleSegments.isEmpty()) {
- return new EmptyTableRuleSegment();
- }
- return new CreateShardingTableRuleStatement(tableRuleSegments);
+ Collection<AbstractTableRuleSegment> tableRuleSegments = ctx.shardingTableRuleDefinition().stream()
+ .map(each -> (AbstractTableRuleSegment) visit(each)).filter(Objects::nonNull).collect(Collectors.toList());
+ return tableRuleSegments.isEmpty() ? new EmptyTableRuleSegment() : new CreateShardingTableRuleStatement(tableRuleSegments);
}
@Override
@@ -158,7 +155,8 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
}
private Collection<TableReferenceRuleSegment> createTableReferenceRuleSegment(final List<TableReferenceRuleDefinitionContext> contexts) {
- return contexts.stream().map(each -> each.tableName().stream().map(this::getIdentifierValue).collect(Collectors.joining(","))).map(TableReferenceRuleSegment::new).collect(Collectors.toList());
+ return contexts.stream().map(each -> each.tableName().stream()
+ .map(this::getIdentifierValue).collect(Collectors.joining(","))).map(TableReferenceRuleSegment::new).collect(Collectors.toList());
}
@Override
@@ -168,14 +166,14 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
@Override
public ASTNode visitAlterShardingTableRule(final AlterShardingTableRuleContext ctx) {
- List<AbstractTableRuleSegment> tableRuleSegments = ctx.shardingTableRuleDefinition().stream().map(each -> (AbstractTableRuleSegment) visit(each))
- .filter(Objects::nonNull).collect(Collectors.toList());
+ List<AbstractTableRuleSegment> tableRuleSegments = ctx.shardingTableRuleDefinition().stream()
+ .map(each -> (AbstractTableRuleSegment) visit(each)).filter(Objects::nonNull).collect(Collectors.toList());
return tableRuleSegments.isEmpty() ? new EmptyTableRuleSegment() : new AlterShardingTableRuleStatement(tableRuleSegments);
}
@Override
public ASTNode visitShowBroadcastTableRules(final ShowBroadcastTableRulesContext ctx) {
- return new ShowBroadcastTableRulesStatement(Objects.nonNull(ctx.databaseName()) ? (DatabaseSegment) visit(ctx.databaseName()) : null);
+ return new ShowBroadcastTableRulesStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
}
@Override
@@ -189,10 +187,8 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
@Override
public ASTNode visitDropShardingTableRule(final DropShardingTableRuleContext ctx) {
- DropShardingTableRuleStatement result = new DropShardingTableRuleStatement(null != ctx.ifExists(),
- ctx.tableName().stream().map(each -> (TableNameSegment) visit(each)).collect(Collectors.toList()));
- result.setDropUnusedAlgorithms(null != ctx.withUnusedAlgorithmsClause());
- return result;
+ return new DropShardingTableRuleStatement(null != ctx.ifExists(),
+ ctx.tableName().stream().map(each -> (TableNameSegment) visit(each)).collect(Collectors.toList()), null != ctx.withUnusedAlgorithmsClause());
}
@Override
@@ -341,8 +337,7 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
Collection<ShardingAuditorSegment> shardingAuditorSegments = new ArrayList<>();
Collection<String> auditorNames = new ArrayList<>();
for (SingleAuditDefinitionContext each : ctx.multiAuditDefinition().singleAuditDefinition()) {
- ShardingAuditorSegment segment = new ShardingAuditorSegment(getIdentifierValue(each.auditorName()), (AlgorithmSegment) visit(each.algorithmDefinition()));
- shardingAuditorSegments.add(segment);
+ shardingAuditorSegments.add(new ShardingAuditorSegment(getIdentifierValue(each.auditorName()), (AlgorithmSegment) visit(each.algorithmDefinition())));
auditorNames.add(getIdentifierValue(each.auditorName()));
}
return new AuditStrategySegment(auditorNames, shardingAuditorSegments, Boolean.parseBoolean(getIdentifierValue(ctx.auditAllowHintDisable())));
@@ -382,10 +377,7 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
return null;
}
String value = new IdentifierValue(context.getText(), "[]'").getValue();
- if (value.startsWith("'")) {
- return value.substring(1, value.length() - 1);
- }
- return value.trim();
+ return value.startsWith("'") ? value.substring(1, value.length() - 1) : value.trim();
}
private Properties getProperties(final PropertiesDefinitionContext ctx) {
@@ -459,8 +451,7 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
}
private String buildShardingColumn(final AutoShardingColumnDefinitionContext ctx) {
- String result = null != ctx.shardingColumn() ? getIdentifierValue(ctx.shardingColumn().columnName()) : "";
- return result.isEmpty() ? null : result;
+ return null == ctx.shardingColumn() ? null : getIdentifierValue(ctx.shardingColumn().columnName());
}
private String buildShardingColumn(final ShardingColumnDefinitionContext ctx) {
@@ -481,8 +472,8 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
@Override
public ASTNode visitShowShardingTableRulesUsedAlgorithm(final ShowShardingTableRulesUsedAlgorithmContext ctx) {
- return new ShowShardingTableRulesUsedAlgorithmStatement(getIdentifierValue(ctx.shardingAlgorithmName()),
- Objects.nonNull(ctx.databaseName()) ? (DatabaseSegment) visit(ctx.databaseName()) : null);
+ return new ShowShardingTableRulesUsedAlgorithmStatement(
+ getIdentifierValue(ctx.shardingAlgorithmName()), Objects.nonNull(ctx.databaseName()) ? (DatabaseSegment) visit(ctx.databaseName()) : null);
}
@Override
diff --git a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
index 344bcc07247..5cd1fdaef20 100644
--- a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
+++ b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
@@ -28,19 +28,18 @@ import java.util.Collection;
/**
* Abstract table rule segment.
*/
-@RequiredArgsConstructor
@AllArgsConstructor
+@RequiredArgsConstructor
@Getter
+@Setter
public abstract class AbstractTableRuleSegment implements ASTNode {
private final String logicTable;
private final Collection<String> dataSourceNodes;
- @Setter
private KeyGenerateStrategySegment keyGenerateStrategySegment;
- @Setter
private AuditStrategySegment auditStrategySegment;
/**
diff --git a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
index 4f80f766537..918d2030db3 100644
--- a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
+++ b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
@@ -18,8 +18,6 @@
package org.apache.shardingsphere.sharding.distsql.parser.statement;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropRuleStatement;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
@@ -28,17 +26,16 @@ import java.util.Collection;
/**
* Drop sharding table rule statement.
*/
-@RequiredArgsConstructor
@Getter
public final class DropShardingTableRuleStatement extends DropRuleStatement {
private final Collection<TableNameSegment> tableNames;
- @Setter
- private boolean dropUnusedAlgorithms;
+ private final boolean dropUnusedAlgorithms;
- public DropShardingTableRuleStatement(final boolean ifExists, final Collection<TableNameSegment> tableNames) {
+ public DropShardingTableRuleStatement(final boolean ifExists, final Collection<TableNameSegment> tableNames, final boolean dropUnusedAlgorithms) {
super(ifExists);
this.tableNames = tableNames;
+ this.dropUnusedAlgorithms = dropUnusedAlgorithms;
}
}