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

zhangyonglun 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 42422ac  Support drop index with broadcast table for PG (#9412)
42422ac is described below

commit 42422acffb1a4cf499f04638de88bd6c72f4cfd7
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Feb 10 11:01:52 2021 +0800

    Support drop index with broadcast table for PG (#9412)
---
 .../broadcast/ShardingTableBroadcastRoutingEngine.java   | 16 +++++++++-------
 .../resources/cases/ddl/ddl-integration-test-cases.xml   |  4 +---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngine.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngine.java
index 9297428..f24735a 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngine.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngine.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.sharding.route.engine.type.broadcast;
 
-import com.google.common.base.Preconditions;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.datanode.DataNode;
+import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.route.context.RouteMapper;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import 
org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngine;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sharding.rule.TableRule;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
 
@@ -48,7 +47,12 @@ public final class ShardingTableBroadcastRoutingEngine 
implements ShardingRouteE
     
     @Override
     public void route(final RouteContext routeContext, final ShardingRule 
shardingRule) {
-        for (String each : getLogicTableNames()) {
+        Collection<String> logicTableNames = getLogicTableNames();
+        if (logicTableNames.isEmpty()) {
+            
routeContext.getRouteUnits().addAll(getBroadcastTableRouteUnits(shardingRule, 
""));
+            return;
+        }
+        for (String each : logicTableNames) {
             if (shardingRule.getBroadcastTables().contains(each)) {
                 
routeContext.getRouteUnits().addAll(getBroadcastTableRouteUnits(shardingRule, 
each));
             } else {
@@ -68,9 +72,7 @@ public final class ShardingTableBroadcastRoutingEngine 
implements ShardingRouteE
     private Collection<String> getTableNamesFromMetaData(final 
DropIndexStatement dropIndexStatement) {
         Collection<String> result = new LinkedList<>();
         for (IndexSegment each : dropIndexStatement.getIndexes()) {
-            Optional<String> tableName = 
findLogicTableNameFromMetaData(each.getIdentifier().getValue());
-            Preconditions.checkState(tableName.isPresent(), "Cannot find index 
name `%s`.", each.getIdentifier().getValue());
-            result.add(tableName.get());
+            
findLogicTableNameFromMetaData(each.getIdentifier().getValue()).ifPresent(result::add);
         }
         return result;
     }
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/ddl/ddl-integration-test-cases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/ddl/ddl-integration-test-cases.xml
index 95e4af0..0059ce5 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/ddl/ddl-integration-test-cases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/ddl/ddl-integration-test-cases.xml
@@ -100,14 +100,12 @@
         </assertion>
     </test-case>
     
-    <!-- TODO FIXED Cannot find index name `t_broadcast_table_for_ddl_index`. 
-->
-    <!--
     <test-case sql="DROP INDEX t_broadcast_table_for_ddl_index" 
db-types="PostgreSQL,Oracle">
         <assertion expected-data-file="broadcast_unchanged_table.xml">
             <initial-sql sql="CREATE TABLE t_broadcast_table_for_ddl(id int, 
description varchar(10));CREATE INDEX t_broadcast_table_for_ddl_index ON 
t_broadcast_table_for_ddl(description)" 
affected-table="t_broadcast_table_for_ddl" />
         </assertion>
     </test-case>
-    -->
+    
     <test-case sql="TRUNCATE TABLE t_broadcast_table_for_ddl">
         <assertion expected-data-file="broadcast_unchanged_table.xml">
             <initial-sql sql="CREATE TABLE t_broadcast_table_for_ddl(id int, 
description varchar(10))" affected-table="t_broadcast_table_for_ddl" />

Reply via email to