This is an automated email from the ASF dual-hosted git repository.

jianglongtao 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 bc2cefa  Support `DROP DEFAULT SHADOW ALGORITHM` syntax. (#15974)
bc2cefa is described below

commit bc2cefa536a538bb66e9317467b9774b95d1db3d
Author: lanchengx <[email protected]>
AuthorDate: Thu Mar 10 20:56:37 2022 +0800

    Support `DROP DEFAULT SHADOW ALGORITHM` syntax. (#15974)
---
 .../CreateShadowAlgorithmStatementUpdater.java     |  3 +
 ...DropDefaultShadowAlgorithmStatementUpdater.java | 80 ++++++++++++++++++++++
 ...here.infra.distsql.update.RuleDefinitionUpdater |  1 +
 ...DefaultShadowAlgorithmStatementUpdaterTest.java | 66 ++++++++++++++++++
 .../src/main/antlr4/imports/shadow/RDLStatement.g4 |  4 ++
 .../parser/autogen/ShadowDistSQLStatement.g4       |  1 +
 .../parser/core/ShadowDistSQLStatementVisitor.java |  7 ++
 .../DropDefaultShadowAlgorithmStatement.java}      | 30 ++++----
 .../src/main/resources/case/rdl/drop.xml           |  2 +
 .../src/main/resources/sql/supported/rdl/drop.xml  |  1 +
 10 files changed, 180 insertions(+), 15 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowAlgorithmStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowAlgorithmStatementUpdater.java
index 023c737..af16b32 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowAlgorithmStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowAlgorithmStatementUpdater.java
@@ -82,6 +82,9 @@ public final class CreateShadowAlgorithmStatementUpdater 
implements RuleDefiniti
     }
     
     private void checkExist(final String schemaName, final 
CreateShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration 
currentRuleConfig) throws DistSQLException {
+        if (null == currentRuleConfig) {
+            return;
+        }
         Collection<String> requireAlgorithmNames = 
sqlStatement.getAlgorithms().stream().map(ShadowAlgorithmSegment::getAlgorithmName).collect(Collectors.toList());
         ShadowRuleStatementChecker.checkAnyDuplicate(requireAlgorithmNames, 
currentRuleConfig.getShadowAlgorithms().keySet(),
             different -> new DuplicateRuleException(SHADOW, schemaName, 
different));
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmStatementUpdater.java
new file mode 100644
index 0000000..f4f0037
--- /dev/null
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropDefaultShadowAlgorithmStatementUpdater.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.shadow.distsql.handler.update;
+
+import org.apache.shardingsphere.infra.config.scope.SchemaRuleConfiguration;
+import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredAlgorithmMissedException;
+import 
org.apache.shardingsphere.infra.distsql.update.RuleDefinitionDropUpdater;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
+import 
org.apache.shardingsphere.shadow.distsql.handler.checker.ShadowRuleStatementChecker;
+import 
org.apache.shardingsphere.shadow.distsql.parser.statement.DropDefaultShadowAlgorithmStatement;
+
+import java.util.Collections;
+
+/**
+ * Drop default shadow algorithm statement updater.
+ */
+public final class DropDefaultShadowAlgorithmStatementUpdater implements 
RuleDefinitionDropUpdater<DropDefaultShadowAlgorithmStatement, 
ShadowRuleConfiguration> {
+    
+    private static final String SHADOW = "shadow";
+    
+    @Override
+    public void checkSQLStatement(final ShardingSphereMetaData metaData, final 
DropDefaultShadowAlgorithmStatement sqlStatement,
+                                  final ShadowRuleConfiguration 
currentRuleConfig) throws DistSQLException {
+        String schemaName = metaData.getName();
+        if (sqlStatement.isContainsExistClause() && 
!isExistRuleConfig(currentRuleConfig)) {
+            return;
+        }
+        checkConfigurationExist(schemaName, currentRuleConfig);
+        checkAlgorithm(schemaName, sqlStatement, currentRuleConfig);
+    }
+    
+    private void checkConfigurationExist(final String schemaName, final 
SchemaRuleConfiguration currentRuleConfig) throws DistSQLException {
+        ShadowRuleStatementChecker.checkConfigurationExist(schemaName, 
currentRuleConfig);
+    }
+    
+    private void checkAlgorithm(final String schemaName, final 
DropDefaultShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration 
currentRuleConfig) throws DistSQLException {
+        if (!sqlStatement.isContainsExistClause()) {
+            DistSQLException.predictionThrow(null != 
currentRuleConfig.getDefaultShadowAlgorithmName(),
+                () -> new RequiredAlgorithmMissedException(SHADOW, schemaName, 
Collections.singleton("default")));
+        }
+    }
+    
+    @Override
+    public boolean hasAnyOneToBeDropped(final 
DropDefaultShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration 
currentRuleConfig) {
+        return null != currentRuleConfig && null != 
currentRuleConfig.getDefaultShadowAlgorithmName();
+    }
+    
+    @Override
+    public boolean updateCurrentRuleConfiguration(final 
DropDefaultShadowAlgorithmStatement sqlStatement, final ShadowRuleConfiguration 
currentRuleConfig) {
+        currentRuleConfig.setDefaultShadowAlgorithmName(null);
+        return false;
+    }
+    
+    @Override
+    public Class<ShadowRuleConfiguration> getRuleConfigurationClass() {
+        return ShadowRuleConfiguration.class;
+    }
+    
+    @Override
+    public String getType() {
+        return DropDefaultShadowAlgorithmStatement.class.getName();
+    }
+}
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
index 98e2d59..6e3d296 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
@@ -22,3 +22,4 @@ 
org.apache.shardingsphere.shadow.distsql.handler.update.AlterShadowRuleStatement
 
org.apache.shardingsphere.shadow.distsql.handler.update.CreateDefaultShadowAlgorithmStatementUpdater
 
org.apache.shardingsphere.shadow.distsql.handler.update.AlterShadowAlgorithmStatementUpdater
 
org.apache.shardingsphere.shadow.distsql.handler.update.CreateShadowAlgorithmStatementUpdater
+org.apache.shardingsphere.shadow.distsql.handler.update.DropDefaultShadowAlgorithmStatementUpdater
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmStatementUpdaterTest.java
new file mode 100644
index 0000000..4c8bb98
--- /dev/null
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-handler/src/test/java/org/apache/shardingsphere/shadow/distsql/update/DropDefaultShadowAlgorithmStatementUpdaterTest.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.shadow.distsql.update;
+
+import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredAlgorithmMissedException;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
+import 
org.apache.shardingsphere.shadow.distsql.handler.update.DropDefaultShadowAlgorithmStatementUpdater;
+import 
org.apache.shardingsphere.shadow.distsql.parser.statement.DropDefaultShadowAlgorithmStatement;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(MockitoJUnitRunner.class)
+public final class DropDefaultShadowAlgorithmStatementUpdaterTest {
+    
+    @Mock
+    private ShardingSphereMetaData shardingSphereMetaData;
+    
+    @Mock
+    private ShadowRuleConfiguration currentConfiguration;
+    
+    private final DropDefaultShadowAlgorithmStatementUpdater updater = new 
DropDefaultShadowAlgorithmStatementUpdater();
+    
+    @Test(expected = RequiredAlgorithmMissedException.class)
+    public void assertCheckWithoutDefaultAlgorithm() throws DistSQLException {
+        updater.checkSQLStatement(shardingSphereMetaData, new 
DropDefaultShadowAlgorithmStatement(), currentConfiguration);
+    }
+    
+    @Test
+    public void assertCheckWithIfExists() throws DistSQLException {
+        updater.checkSQLStatement(shardingSphereMetaData, new 
DropDefaultShadowAlgorithmStatement(true), currentConfiguration);
+        updater.checkSQLStatement(shardingSphereMetaData, new 
DropDefaultShadowAlgorithmStatement(true), null);
+    }
+    
+    @Test
+    public void assertUpdate() throws DistSQLException {
+        ShadowRuleConfiguration configuration = new ShadowRuleConfiguration();
+        configuration.setDefaultShadowAlgorithmName("default");
+        DropDefaultShadowAlgorithmStatement statement = new 
DropDefaultShadowAlgorithmStatement();
+        updater.checkSQLStatement(shardingSphereMetaData, new 
DropDefaultShadowAlgorithmStatement(true), configuration);
+        assertTrue(updater.hasAnyOneToBeDropped(statement, configuration));
+        updater.updateCurrentRuleConfiguration(statement, configuration);
+        assertNull(configuration.getDefaultShadowAlgorithmName());
+    }
+}
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/imports/shadow/RDLStatement.g4
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/imports/shadow/RDLStatement.g4
index a8c0b71..2fbbb86 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/imports/shadow/RDLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/imports/shadow/RDLStatement.g4
@@ -47,6 +47,10 @@ createDefaultShadowAlgorithm
     : CREATE DEFAULT SHADOW ALGORITHM NAME EQ algorithmName 
     ;
 
+dropDefaultShadowAlgorithm
+    : DROP DEFAULT SHADOW ALGORITHM existClause?
+    ;
+
 shadowRuleDefinition
     :  ruleName LP SOURCE EQ source COMMA SHADOW EQ shadow COMMA 
shadowTableRule (COMMA shadowTableRule)* RP
     ;
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
index 0a2e2fc..93e0d0b 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
@@ -27,6 +27,7 @@ execute
     | showShadowTableRules
     | showShadowAlgorithms
     | dropShadowAlgorithm
+    | dropDefaultShadowAlgorithm
     | createDefaultShadowAlgorithm
     | alterShadowAlgorithm
     | createShadowAlgorithm
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
index 4804747..5a29f8f 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementPa
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.CreateDefaultShadowAlgorithmContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.CreateShadowAlgorithmContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.CreateShadowRuleContext;
+import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.DropDefaultShadowAlgorithmContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.DropShadowAlgorithmContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.DropShadowRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShadowDistSQLStatementParser.SchemaNameContext;
@@ -42,6 +43,7 @@ import 
org.apache.shardingsphere.shadow.distsql.parser.statement.AlterShadowRule
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.CreateDefaultShadowAlgorithmStatement;
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.CreateShadowAlgorithmStatement;
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.CreateShadowRuleStatement;
+import 
org.apache.shardingsphere.shadow.distsql.parser.statement.DropDefaultShadowAlgorithmStatement;
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.DropShadowAlgorithmStatement;
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.DropShadowRuleStatement;
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowAlgorithmsStatement;
@@ -131,6 +133,11 @@ public final class ShadowDistSQLStatementVisitor extends 
ShadowDistSQLStatementB
     }
     
     @Override
+    public ASTNode visitDropDefaultShadowAlgorithm(final 
DropDefaultShadowAlgorithmContext ctx) {
+        return new DropDefaultShadowAlgorithmStatement(null != 
ctx.existClause());
+    }
+    
+    @Override
     public ASTNode visitShowShadowRules(final ShowShadowRulesContext ctx) {
         String ruleName = null == ctx.shadowRule() ? null : 
getIdentifierValue(ctx.shadowRule().ruleName());
         SchemaSegment schemaSegment = null == ctx.schemaName() ? null : 
(SchemaSegment) visit(ctx.schemaName());
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-statement/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/statement/DropDefaultShadowAlgorithmStatement.java
similarity index 60%
copy from 
shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
copy to 
shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-statement/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/statement/DropDefaultShadowAlgorithmStatement.java
index 0a2e2fc..a05ed2b 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShadowDistSQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-distsql/shardingsphere-shadow-distsql-statement/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/statement/DropDefaultShadowAlgorithmStatement.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-grammar ShadowDistSQLStatement;
+package org.apache.shardingsphere.shadow.distsql.parser.statement;
 
-import Symbol, RDLStatement, RQLStatement;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import 
org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropRuleStatement;
 
-execute
-    : (createShadowRule
-    | alterShadowRule
-    | dropShadowRule
-    | showShadowRules
-    | showShadowTableRules
-    | showShadowAlgorithms
-    | dropShadowAlgorithm
-    | createDefaultShadowAlgorithm
-    | alterShadowAlgorithm
-    | createShadowAlgorithm
-    ) SEMI?
-    ;
+/**
+ * Drop default shadow algorithm statement.
+ */
+@RequiredArgsConstructor
+@Getter
+public final class DropDefaultShadowAlgorithmStatement extends 
DropRuleStatement {
+    
+    public DropDefaultShadowAlgorithmStatement(final boolean 
containsExistClause) {
+        setContainsExistClause(containsExistClause);
+    }
+}
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 dbf7188..4dcd690 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
@@ -130,6 +130,8 @@
         <rule>shadow_algorithm_2</rule>
     </drop-shadow-algorithm>
 
+    <drop-shadow-algorithm 
sql-case-id="drop-default-shadow-algorithm-if-exists" 
contains-exist-clause="true"/>
+
     <drop-default-single-table sql-case-id="drop-default-single-table" />
     
     <drop-default-single-table 
sql-case-id="drop-default-single-table-if-exists" contains-exist-clause="true"/>
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 cae1f38..3ac3072 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
@@ -40,6 +40,7 @@
     <distsql-case id="drop-shadow-rule" value="DROP SHADOW RULE 
shadow_rule_1,shadow_rule_2" />
     <distsql-case id="drop-shadow-rule-if-exists" value="DROP SHADOW RULE IF 
EXISTS shadow_rule_1,shadow_rule_2" />
     <distsql-case id="drop-shadow-algorithm" value="DROP SHADOW algorithm 
shadow_algorithm_1,shadow_algorithm_2" />
+    <distsql-case id="drop-default-shadow-algorithm-if-exists" value="DROP 
DEFAULT SHADOW ALGORITHM IF EXISTS" />
     <distsql-case id="drop-shadow-algorithm-if-exists" value="DROP SHADOW 
ALGORITHM IF EXISTS shadow_algorithm_1,shadow_algorithm_2" />
     <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" />

Reply via email to