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" />