未验证 提交 8c4cc3d8 编写于 作者: 杨翊 SionYang 提交者: GitHub

Fix getTableShardingStrategy return databaseShardingStrategy problem (#4972)

上级 622a035e
......@@ -187,7 +187,7 @@ public class ShardingRule implements BaseRule {
* @return database sharding strategy
*/
public ShardingStrategy getDatabaseShardingStrategy(final TableRule tableRule) {
return null == tableRule.getDatabaseShardingStrategy() ? defaultDatabaseShardingStrategy : tableRule.getDatabaseShardingStrategy();
return Optional.ofNullable(tableRule.getDatabaseShardingStrategy()).orElse(defaultDatabaseShardingStrategy);
}
/**
......@@ -201,7 +201,7 @@ public class ShardingRule implements BaseRule {
* @return table sharding strategy
*/
public ShardingStrategy getTableShardingStrategy(final TableRule tableRule) {
return Optional.ofNullable(tableRule.getTableShardingStrategy()).orElse(defaultDatabaseShardingStrategy);
return Optional.ofNullable(tableRule.getTableShardingStrategy()).orElse(defaultTableShardingStrategy);
}
/**
......
......@@ -27,6 +27,7 @@ import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingSt
import org.apache.shardingsphere.core.shard.fixture.PreciseShardingAlgorithmFixture;
import org.apache.shardingsphere.core.strategy.keygen.SnowflakeShardingKeyGenerator;
import org.apache.shardingsphere.core.strategy.keygen.fixture.IncrementShardingKeyGenerator;
import org.apache.shardingsphere.core.strategy.route.ShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.inline.InlineShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.none.NoneShardingStrategy;
import org.apache.shardingsphere.underlying.common.config.exception.ShardingSphereConfigurationException;
......@@ -135,7 +136,9 @@ public final class ShardingRuleTest {
@Test
public void assertGetDatabaseShardingStrategyFromDefault() {
assertThat(createMaximumShardingRule().getDatabaseShardingStrategy(mock(TableRule.class)), instanceOf(InlineShardingStrategy.class));
ShardingStrategy actual = createMaximumShardingRule().getDatabaseShardingStrategy(mock(TableRule.class));
assertThat(actual, instanceOf(InlineShardingStrategy.class));
assertThat(actual.getShardingColumns().iterator().next(), is("ds_id"));
}
@Test
......@@ -147,7 +150,9 @@ public final class ShardingRuleTest {
@Test
public void assertGetTableShardingStrategyFromDefault() {
assertThat(createMaximumShardingRule().getTableShardingStrategy(mock(TableRule.class)), instanceOf(InlineShardingStrategy.class));
ShardingStrategy actual = createMaximumShardingRule().getTableShardingStrategy(mock(TableRule.class));
assertThat(actual, instanceOf(InlineShardingStrategy.class));
assertThat(actual.getShardingColumns().iterator().next(), is("table_id"));
}
@Test
......@@ -398,8 +403,8 @@ public final class ShardingRuleTest {
shardingRuleConfiguration.getTableRuleConfigs().add(subTableRuleConfiguration);
shardingRuleConfiguration.getBindingTableGroups().add(tableRuleConfiguration.getLogicTable() + "," + subTableRuleConfiguration.getLogicTable());
shardingRuleConfiguration.getBroadcastTables().add("BROADCAST_TABLE");
shardingRuleConfiguration.setDefaultDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "ds_%{id % 2}"));
shardingRuleConfiguration.setDefaultTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "table_%{id % 2}"));
shardingRuleConfiguration.setDefaultDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("ds_id", "ds_%{ds_id % 2}"));
shardingRuleConfiguration.setDefaultTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("table_id", "table_%{table_id % 2}"));
shardingRuleConfiguration.setDefaultKeyGeneratorConfig(new KeyGeneratorConfiguration("INCREMENT", "id", new Properties()));
return new ShardingRule(shardingRuleConfiguration, createDataSourceNames());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册