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 <[email protected]>
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;
}
}