This is an automated email from the ASF dual-hosted git repository.
lanchengxiang 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 08f8807 Add IF EXISTS keyword to DROP KEY GENERATOR (#15771)
08f8807 is described below
commit 08f8807f275a3a08bc64ac9cc4ac821fd4651303
Author: liguoping <[email protected]>
AuthorDate: Mon Mar 7 13:08:42 2022 +0800
Add IF EXISTS keyword to DROP KEY GENERATOR (#15771)
* Add IF EXISTS keyword to DROP KEY GENERATOR
* IfExistsStatementTestCase
* fix ci
* update
* rename DropRuleStatementTestCase
---
.../AdvancedDistSQLStatementParserEngine.java | 3 +--
.../DropShardingKeyGeneratorStatementUpdater.java | 16 +++++++++++++--
...opShardingKeyGeneratorStatementUpdaterTest.java | 8 ++++++++
.../main/antlr4/imports/sharding/RDLStatement.g4 | 2 +-
.../core/ShardingDistSQLStatementVisitor.java | 4 +++-
.../distsql/rdl/drop/DropRuleStatementAssert.java | 5 +++++
.../impl/DropShardingAlgorithmStatementAssert.java | 2 +-
...> DropShardingKeyGeneratorStatementAssert.java} | 24 +++++++++++-----------
...estCase.java => DropRuleStatementTestCase.java} | 16 +++++----------
.../DropShardingAlgorithmStatementTestCase.java | 8 ++------
.../DropShardingKeyGeneratorStatementTestCase.java | 4 ++--
.../src/main/resources/case/rdl/drop.xml | 4 ++++
.../src/main/resources/sql/supported/rdl/drop.xml | 1 +
13 files changed, 59 insertions(+), 38 deletions(-)
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/advanced/AdvancedDistSQLStatementParserEngine.java
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/advanced/AdvancedDistSQLStatementParserEngine.java
index f8b3d41..b0fec83 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/advanced/AdvancedDistSQLStatementParserEngine.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/advanced/AdvancedDistSQLStatementParserEngine.java
@@ -43,8 +43,7 @@ public final class AdvancedDistSQLStatementParserEngine {
private ASTNode parseToASTNode(final String sql) {
try {
- ASTNode result = SQLParserFactory.newInstance(sql,
AdvancedDistSQLLexer.class, AdvancedDistSQLParser.class, false).parse();
- return result;
+ return SQLParserFactory.newInstance(sql,
AdvancedDistSQLLexer.class, AdvancedDistSQLParser.class, false).parse();
} catch (final ParseCancellationException | SQLParsingException
ignored) {
throw new SQLParsingException("You have an error in your SQL
syntax.");
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.java
index 8d7d369..001b421 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.java
@@ -45,10 +45,13 @@ public final class DropShardingKeyGeneratorStatementUpdater
implements RuleDefin
@Override
public void checkSQLStatement(final ShardingSphereMetaData
shardingSphereMetaData, final DropShardingKeyGeneratorStatement sqlStatement,
final ShardingRuleConfiguration
currentRuleConfig) throws DistSQLException {
+ if (null == currentRuleConfig && sqlStatement.isContainsExistClause())
{
+ return;
+ }
String schemaName = shardingSphereMetaData.getName();
Collection<String> keyGeneratorNames = new
LinkedList<>(sqlStatement.getKeyGeneratorNames());
checkDuplicate(schemaName, keyGeneratorNames);
- checkExist(schemaName, keyGeneratorNames, currentRuleConfig);
+ checkExist(schemaName, keyGeneratorNames, currentRuleConfig,
sqlStatement);
checkInUsed(schemaName, keyGeneratorNames, currentRuleConfig);
}
@@ -58,7 +61,11 @@ public final class DropShardingKeyGeneratorStatementUpdater
implements RuleDefin
DistSQLException.predictionThrow(duplicateNames.isEmpty(), new
DuplicateKeyGeneratorException("sharding", schemaName, duplicateNames));
}
- private void checkExist(final String schemaName, final Collection<String>
keyGeneratorNames, final ShardingRuleConfiguration currentRuleConfig) throws
DistSQLException {
+ private void checkExist(final String schemaName, final Collection<String>
keyGeneratorNames, final ShardingRuleConfiguration currentRuleConfig,
+ final DropShardingKeyGeneratorStatement
sqlStatement) throws DistSQLException {
+ if (sqlStatement.isContainsExistClause()) {
+ return;
+ }
Collection<String> notExistKeyGenerators =
keyGeneratorNames.stream().filter(each ->
!currentRuleConfig.getKeyGenerators().containsKey(each)).collect(Collectors.toCollection(LinkedList::new));
DistSQLException.predictionThrow(notExistKeyGenerators.isEmpty(), new
RequiredKeyGeneratorMissedException("Sharding", schemaName,
notExistKeyGenerators));
}
@@ -95,4 +102,9 @@ public final class DropShardingKeyGeneratorStatementUpdater
implements RuleDefin
}
return result;
}
+
+ @Override
+ public boolean hasAnyOneToBeDropped(final
DropShardingKeyGeneratorStatement sqlStatement, final ShardingRuleConfiguration
currentRuleConfig) {
+ return null != currentRuleConfig &&
!getIdenticalData(currentRuleConfig.getKeyGenerators().keySet(),
sqlStatement.getKeyGeneratorNames()).isEmpty();
+ }
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingKeyGeneratorStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingKeyGeneratorStatementUpdaterTest.java
index 1bcb21e..29ee15b 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingKeyGeneratorStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingKeyGeneratorStatementUpdaterTest.java
@@ -35,6 +35,7 @@ import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Properties;
import static org.junit.Assert.assertTrue;
@@ -64,6 +65,13 @@ public final class
DropShardingKeyGeneratorStatementUpdaterTest {
}
@Test
+ public void assertExecuteWithNotExistWithIfExists() throws
DistSQLException {
+ DropShardingKeyGeneratorStatement sqlStatement = new
DropShardingKeyGeneratorStatement(Collections.singletonList("uuid_key_generator"));
+ sqlStatement.setContainsExistClause(true);
+ updater.checkSQLStatement(shardingSphereMetaData, sqlStatement, new
ShardingRuleConfiguration());
+ }
+
+ @Test
public void assertDropSpecifiedKeyGenerator() {
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.getKeyGenerators().put("uuid_key_generator", new
ShardingSphereAlgorithmConfiguration("uuid", new Properties()));
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RDLStatement.g4
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RDLStatement.g4
index a5e63f8..348bfe0 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RDLStatement.g4
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RDLStatement.g4
@@ -88,7 +88,7 @@ dropShardingAlgorithm
;
dropShardingKeyGenerator
- : DROP SHARDING KEY GENERATOR keyGeneratorName (COMMA keyGeneratorName)*
+ : DROP SHARDING KEY GENERATOR existsClause? keyGeneratorName (COMMA
keyGeneratorName)*
;
shardingTableRuleDefinition
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index 474e9c1..3c5abc8 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -452,7 +452,9 @@ public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatem
@Override
public ASTNode visitDropShardingKeyGenerator(final
DropShardingKeyGeneratorContext ctx) {
- return new
DropShardingKeyGeneratorStatement(ctx.keyGeneratorName().stream().map(each ->
getIdentifierValue(each)).collect(Collectors.toList()));
+ DropShardingKeyGeneratorStatement result = new
DropShardingKeyGeneratorStatement(ctx.keyGeneratorName().stream().map(this::getIdentifierValue).collect(Collectors.toList()));
+ result.setContainsExistClause(null != ctx.existsClause());
+ return result;
}
@Override
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropRuleStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropRuleStatementAssert.java
index 66847a5..f15d15f 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropRuleStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropRuleStatementAssert.java
@@ -32,6 +32,7 @@ import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropDefaultSh
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingAlgorithmStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingBindingTableRulesStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingBroadcastTableRulesStatement;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingKeyGeneratorStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingTableRuleStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropDatabaseDiscoveryHeartbeatStatementAssert;
@@ -45,6 +46,7 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingAlgorithmStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingBindingTableRulesStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingBroadcastTableRulesStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingKeyGeneratorStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingScalingRuleStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.impl.DropShardingTableRuleStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
@@ -59,6 +61,7 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingAlgorithmStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingBindingTableRulesStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingBroadcastTableRulesStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingKeyGeneratorStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingScalingRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingTableRuleStatementTestCase;
@@ -102,6 +105,8 @@ public final class DropRuleStatementAssert {
DropShardingScalingRuleStatementAssert.assertIs(assertContext,
(DropShardingScalingRuleStatement) actual,
(DropShardingScalingRuleStatementTestCase) expected);
} else if (actual instanceof DropShardingAlgorithmStatement) {
DropShardingAlgorithmStatementAssert.assertIs(assertContext,
(DropShardingAlgorithmStatement) actual,
(DropShardingAlgorithmStatementTestCase) expected);
+ } else if (actual instanceof DropShardingKeyGeneratorStatement) {
+ DropShardingKeyGeneratorStatementAssert.assertIs(assertContext,
(DropShardingKeyGeneratorStatement) actual,
(DropShardingKeyGeneratorStatementTestCase) expected);
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
index c2f2165..c3ae092 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
@@ -45,7 +45,7 @@ public final class DropShardingAlgorithmStatementAssert {
assertNull(assertContext.getText("Actual algorithm should not
exist."), actual);
} else {
assertThat(assertContext.getText("Algorithm names assertion error:
"), actual.getAlgorithmNames(), is(expected.getAlgorithms()));
- assertThat(assertContext.getText("Contains exist clause assertion
error: "), actual.isContainsExistClause(),
is(expected.isContainsExistsClause()));
+ assertThat(assertContext.getText("Contains exist clause assertion
error: "), actual.isContainsExistClause(),
is(expected.isContainsExistClause()));
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingKeyGeneratorStatementAssert.java
similarity index 64%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingKeyGeneratorStatementAssert.java
index c2f2165..79cd54c 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingAlgorithmStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropShardingKeyGeneratorStatementAssert.java
@@ -19,33 +19,33 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingAlgorithmStatement;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingKeyGeneratorStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingAlgorithmStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingKeyGeneratorStatementTestCase;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
/**
- * Drop sharding algorithm statement assert.
+ * Drop sharding key generator statement assert.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DropShardingAlgorithmStatementAssert {
+public final class DropShardingKeyGeneratorStatementAssert {
/**
- * Assert drop sharding algorithm statement is correct with expected
parser result.
+ * Assert drop sharding key generator statement is correct with expected
parser result.
*
* @param assertContext assert context
- * @param actual actual drop sharding algorithm statement
- * @param expected expected drop sharding algorithm statement test case
+ * @param actual actual drop sharding key generator statement
+ * @param expected expected drop sharding key generator statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
final DropShardingAlgorithmStatement actual, final
DropShardingAlgorithmStatementTestCase expected) {
- if (null == expected.getAlgorithms()) {
- assertNull(assertContext.getText("Actual algorithm should not
exist."), actual);
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final DropShardingKeyGeneratorStatement actual, final
DropShardingKeyGeneratorStatementTestCase expected) {
+ if (null == expected.getKeyGeneratorName()) {
+ assertNull(assertContext.getText("Actual key generator name should
not exist."), actual);
} else {
- assertThat(assertContext.getText("Algorithm names assertion error:
"), actual.getAlgorithmNames(), is(expected.getAlgorithms()));
- assertThat(assertContext.getText("Contains exist clause assertion
error: "), actual.isContainsExistClause(),
is(expected.isContainsExistsClause()));
+ assertThat(assertContext.getText("Key generator names assertion
error: "), actual.getKeyGeneratorNames(), is(expected.getKeyGeneratorName()));
+ assertThat(assertContext.getText("Contains exist clause assertion
error: "), actual.isContainsExistClause(),
is(expected.isContainsExistClause()));
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/DropRuleStatementTestCase.java
similarity index 63%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/DropRuleStatementTestCase.java
index 3f394e7..7d291f7 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/DropRuleStatementTestCase.java
@@ -15,21 +15,15 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement;
import lombok.Getter;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
-import javax.xml.bind.annotation.XmlElement;
-import java.util.LinkedList;
-import java.util.List;
+import javax.xml.bind.annotation.XmlAttribute;
-/**
- * Drop sharding key generator statement test case.
- */
@Getter
-public final class DropShardingKeyGeneratorStatementTestCase extends
SQLParserTestCase {
+public abstract class DropRuleStatementTestCase extends SQLParserTestCase {
- @XmlElement(name = "key-generator")
- private final List<String> keyGeneratorName = new LinkedList<>();
+ @XmlAttribute(name = "contains-exists-clause")
+ private boolean containsExistClause;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingAlgorithmStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingAlgorithmStatementTestCase.java
index 531390e..0e84681 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingAlgorithmStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingAlgorithmStatementTestCase.java
@@ -19,9 +19,8 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
import lombok.Getter;
import lombok.Setter;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.DropRuleStatementTestCase;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import java.util.LinkedList;
import java.util.List;
@@ -31,10 +30,7 @@ import java.util.List;
*/
@Setter
@Getter
-public final class DropShardingAlgorithmStatementTestCase extends
SQLParserTestCase {
-
- @XmlAttribute(name = "contains-exists-clause")
- private boolean containsExistsClause;
+public final class DropShardingAlgorithmStatementTestCase extends
DropRuleStatementTestCase {
@XmlElement(name = "algorithm")
private final List<String> algorithms = new LinkedList<>();
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
index 3f394e7..cf028cf 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropShardingKeyGeneratorStatementTestCase.java
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop;
import lombok.Getter;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.DropRuleStatementTestCase;
import javax.xml.bind.annotation.XmlElement;
import java.util.LinkedList;
@@ -28,7 +28,7 @@ import java.util.List;
* Drop sharding key generator statement test case.
*/
@Getter
-public final class DropShardingKeyGeneratorStatementTestCase extends
SQLParserTestCase {
+public final class DropShardingKeyGeneratorStatementTestCase extends
DropRuleStatementTestCase {
@XmlElement(name = "key-generator")
private final List<String> keyGeneratorName = new LinkedList<>();
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/drop.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/drop.xml
index 5467b0c..64adc6c 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/drop.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/drop.xml
@@ -111,6 +111,10 @@
<drop-sharding-key-generator sql-case-id="drop-sharding-key-generator" >
<key-generator>uuid_key_generator</key-generator>
</drop-sharding-key-generator>
+
+ <drop-sharding-key-generator
sql-case-id="drop-sharding-key-generator-if-exists"
contains-exists-clause="true">
+ <key-generator>uuid_key_generator</key-generator>
+ </drop-sharding-key-generator>
<drop-default-sharding-strategy
sql-case-id="drop-default-sharding-strategy" type="table"/>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
index 72fdd81..e3f7cbf 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
@@ -39,6 +39,7 @@
<distsql-case id="drop-default-single-table" value="DROP DEFAULT SINGLE
TABLE RULE" />
<distsql-case id="drop-default-single-table-if-exists" value="DROP DEFAULT
SINGLE TABLE RULE IF EXISTS" />
<distsql-case id="drop-sharding-key-generator" value="DROP SHARDING KEY
GENERATOR uuid_key_generator" />
+ <distsql-case id="drop-sharding-key-generator-if-exists" value="DROP
SHARDING KEY GENERATOR IF EXISTS uuid_key_generator" />
<distsql-case id="drop-default-sharding-strategy" value="DROP DEFAULT
SHARDING TABLE STRATEGY" />
<distsql-case id="drop-sharding-scaling-rule" value="DROP SHARDING SCALING
RULE default_scaling" />
<distsql-case id="drop-sharding-algorithm" value="DROP SHARDING ALGORITHM
IF EXISTS t_order_hash_mod" />