未验证 提交 e76c277c 编写于 作者: J Juan Pan(Trista) 提交者: GitHub

Use Standard Algorithm instead of Old one (#5177)

* Use Standard Algorithm

* check style
上级 6a3552f6
...@@ -50,8 +50,8 @@ shardingRule: ...@@ -50,8 +50,8 @@ shardingRule:
defaultDatabaseStrategy: defaultDatabaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingDatabaseAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingDatabaseAlgorithm type: STANDARD_TEST_DB
defaultTableStrategy: defaultTableStrategy:
none: none:
......
...@@ -34,8 +34,8 @@ shardingRule: ...@@ -34,8 +34,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_id column: order_id
...@@ -46,8 +46,8 @@ shardingRule: ...@@ -46,8 +46,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_item_id column: order_item_id
...@@ -60,8 +60,8 @@ shardingRule: ...@@ -60,8 +60,8 @@ shardingRule:
defaultDatabaseStrategy: defaultDatabaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingDatabaseAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingDatabaseAlgorithm type: STANDARD_TEST_DB
defaultTableStrategy: defaultTableStrategy:
none: none:
......
...@@ -54,8 +54,8 @@ shardingRule: ...@@ -54,8 +54,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_id column: order_id
...@@ -66,8 +66,8 @@ shardingRule: ...@@ -66,8 +66,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_item_id column: order_item_id
...@@ -80,8 +80,8 @@ shardingRule: ...@@ -80,8 +80,8 @@ shardingRule:
defaultDatabaseStrategy: defaultDatabaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingDatabaseAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingDatabaseAlgorithm type: STANDARD_TEST_DB
masterSlaveRules: masterSlaveRules:
ds_0: ds_0:
masterDataSourceName: ds_master_0 masterDataSourceName: ds_master_0
......
...@@ -29,8 +29,8 @@ shardingRule: ...@@ -29,8 +29,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_id column: order_id
...@@ -41,8 +41,8 @@ shardingRule: ...@@ -41,8 +41,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.example.algorithm.PreciseModuloShardingTableAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.example.algorithm.RangeModuloShardingTableAlgorithm type: STANDARD_TEST_TB
keyGenerator: keyGenerator:
type: SNOWFLAKE type: SNOWFLAKE
column: order_item_id column: order_item_id
......
...@@ -23,6 +23,7 @@ import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; ...@@ -23,6 +23,7 @@ import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue; import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm; import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue; import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.apache.shardingsphere.api.sharding.standard.StandardShardingAlgorithm;
import org.apache.shardingsphere.core.strategy.route.ShardingStrategy; import org.apache.shardingsphere.core.strategy.route.ShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.value.ListRouteValue; import org.apache.shardingsphere.core.strategy.route.value.ListRouteValue;
import org.apache.shardingsphere.core.strategy.route.value.RangeRouteValue; import org.apache.shardingsphere.core.strategy.route.value.RangeRouteValue;
...@@ -44,12 +45,16 @@ public final class StandardShardingStrategy implements ShardingStrategy { ...@@ -44,12 +45,16 @@ public final class StandardShardingStrategy implements ShardingStrategy {
private final RangeShardingAlgorithm rangeShardingAlgorithm; private final RangeShardingAlgorithm rangeShardingAlgorithm;
private final StandardShardingAlgorithm shardingAlgorithm;
public StandardShardingStrategy(final StandardShardingStrategyConfiguration standardShardingStrategyConfig) { public StandardShardingStrategy(final StandardShardingStrategyConfiguration standardShardingStrategyConfig) {
Preconditions.checkNotNull(standardShardingStrategyConfig.getShardingColumn(), "Sharding column cannot be null."); Preconditions.checkNotNull(standardShardingStrategyConfig.getShardingColumn(), "Sharding column cannot be null.");
Preconditions.checkNotNull(standardShardingStrategyConfig.getPreciseShardingAlgorithm(), "precise sharding algorithm cannot be null."); Preconditions.checkState(null != standardShardingStrategyConfig.getShardingAlgorithm()
|| null != standardShardingStrategyConfig.getPreciseShardingAlgorithm(), "sharding algorithm cannot be null.");
shardingColumn = standardShardingStrategyConfig.getShardingColumn(); shardingColumn = standardShardingStrategyConfig.getShardingColumn();
preciseShardingAlgorithm = standardShardingStrategyConfig.getPreciseShardingAlgorithm(); preciseShardingAlgorithm = standardShardingStrategyConfig.getPreciseShardingAlgorithm();
rangeShardingAlgorithm = standardShardingStrategyConfig.getRangeShardingAlgorithm(); rangeShardingAlgorithm = standardShardingStrategyConfig.getRangeShardingAlgorithm();
shardingAlgorithm = standardShardingStrategyConfig.getShardingAlgorithm();
} }
@Override @Override
...@@ -64,6 +69,10 @@ public final class StandardShardingStrategy implements ShardingStrategy { ...@@ -64,6 +69,10 @@ public final class StandardShardingStrategy implements ShardingStrategy {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Collection<String> doSharding(final Collection<String> availableTargetNames, final RangeRouteValue<?> shardingValue) { private Collection<String> doSharding(final Collection<String> availableTargetNames, final RangeRouteValue<?> shardingValue) {
if (null != shardingAlgorithm) {
return shardingAlgorithm.doSharding(availableTargetNames,
new RangeShardingValue(shardingValue.getTableName(), shardingValue.getColumnName(), shardingValue.getValueRange()));
}
if (null == rangeShardingAlgorithm) { if (null == rangeShardingAlgorithm) {
throw new UnsupportedOperationException("Cannot find range sharding strategy in sharding rule."); throw new UnsupportedOperationException("Cannot find range sharding strategy in sharding rule.");
} }
...@@ -75,7 +84,12 @@ public final class StandardShardingStrategy implements ShardingStrategy { ...@@ -75,7 +84,12 @@ public final class StandardShardingStrategy implements ShardingStrategy {
private Collection<String> doSharding(final Collection<String> availableTargetNames, final ListRouteValue<?> shardingValue) { private Collection<String> doSharding(final Collection<String> availableTargetNames, final ListRouteValue<?> shardingValue) {
Collection<String> result = new LinkedList<>(); Collection<String> result = new LinkedList<>();
for (Comparable<?> each : shardingValue.getValues()) { for (Comparable<?> each : shardingValue.getValues()) {
String target = preciseShardingAlgorithm.doSharding(availableTargetNames, new PreciseShardingValue(shardingValue.getTableName(), shardingValue.getColumnName(), each)); String target;
if (null != shardingAlgorithm) {
target = shardingAlgorithm.doSharding(availableTargetNames, new PreciseShardingValue(shardingValue.getTableName(), shardingValue.getColumnName(), each));
} else {
target = preciseShardingAlgorithm.doSharding(availableTargetNames, new PreciseShardingValue(shardingValue.getTableName(), shardingValue.getColumnName(), each));
}
if (null != target) { if (null != target) {
result.add(target); result.add(target);
} }
......
...@@ -113,7 +113,9 @@ public final class ShardingStrategyConfigurationYamlSwapper implements YamlSwapp ...@@ -113,7 +113,9 @@ public final class ShardingStrategyConfigurationYamlSwapper implements YamlSwapp
private YamlStandardShardingStrategyConfiguration createYamlStandardShardingStrategyConfiguration(final StandardShardingStrategyConfiguration data) { private YamlStandardShardingStrategyConfiguration createYamlStandardShardingStrategyConfiguration(final StandardShardingStrategyConfiguration data) {
YamlStandardShardingStrategyConfiguration result = new YamlStandardShardingStrategyConfiguration(); YamlStandardShardingStrategyConfiguration result = new YamlStandardShardingStrategyConfiguration();
result.setShardingColumn(data.getShardingColumn()); result.setShardingColumn(data.getShardingColumn());
result.setPreciseAlgorithmClassName(data.getPreciseShardingAlgorithm().getClass().getName()); if (null != data.getPreciseShardingAlgorithm()) {
result.setPreciseAlgorithmClassName(data.getPreciseShardingAlgorithm().getClass().getName());
}
if (null != data.getRangeShardingAlgorithm()) { if (null != data.getRangeShardingAlgorithm()) {
result.setRangeAlgorithmClassName(data.getRangeShardingAlgorithm().getClass().getName()); result.setRangeAlgorithmClassName(data.getRangeShardingAlgorithm().getClass().getName());
} }
......
...@@ -24,7 +24,7 @@ import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration; ...@@ -24,7 +24,7 @@ import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration; import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.NoneShardingStrategyConfiguration; import org.apache.shardingsphere.api.config.sharding.strategy.NoneShardingStrategyConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration; import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
import org.apache.shardingsphere.core.shard.fixture.PreciseShardingAlgorithmFixture; import org.apache.shardingsphere.core.shard.fixture.StandardShardingAlgorithmFixture;
import org.apache.shardingsphere.core.strategy.keygen.SnowflakeKeyGenerateAlgorithm; import org.apache.shardingsphere.core.strategy.keygen.SnowflakeKeyGenerateAlgorithm;
import org.apache.shardingsphere.core.strategy.keygen.fixture.IncrementKeyGenerateAlgorithm; import org.apache.shardingsphere.core.strategy.keygen.fixture.IncrementKeyGenerateAlgorithm;
import org.apache.shardingsphere.core.strategy.route.ShardingStrategy; import org.apache.shardingsphere.core.strategy.route.ShardingStrategy;
...@@ -220,7 +220,7 @@ public final class ShardingRuleTest { ...@@ -220,7 +220,7 @@ public final class ShardingRuleTest {
public void assertIsShardingColumnForDefaultDatabaseShardingStrategy() { public void assertIsShardingColumnForDefaultDatabaseShardingStrategy() {
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfigWithAllStrategies()); shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfigWithAllStrategies());
shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new PreciseShardingAlgorithmFixture())); shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new StandardShardingAlgorithmFixture()));
assertTrue(new ShardingRule(shardingRuleConfig, createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE")); assertTrue(new ShardingRule(shardingRuleConfig, createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE"));
} }
...@@ -228,7 +228,7 @@ public final class ShardingRuleTest { ...@@ -228,7 +228,7 @@ public final class ShardingRuleTest {
public void assertIsShardingColumnForDefaultTableShardingStrategy() { public void assertIsShardingColumnForDefaultTableShardingStrategy() {
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfigWithAllStrategies()); shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfigWithAllStrategies());
shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new PreciseShardingAlgorithmFixture())); shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new StandardShardingAlgorithmFixture()));
assertTrue(new ShardingRule(shardingRuleConfig, createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE")); assertTrue(new ShardingRule(shardingRuleConfig, createDataSourceNames()).isShardingColumn("column", "LOGIC_TABLE"));
} }
...@@ -380,14 +380,14 @@ public final class ShardingRuleTest { ...@@ -380,14 +380,14 @@ public final class ShardingRuleTest {
private TableRuleConfiguration createTableRuleConfigWithAllStrategies() { private TableRuleConfiguration createTableRuleConfigWithAllStrategies() {
TableRuleConfiguration result = new TableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}"); TableRuleConfiguration result = new TableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new PreciseShardingAlgorithmFixture())); result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new StandardShardingAlgorithmFixture()));
result.setTableShardingStrategyConfig(new NoneShardingStrategyConfiguration()); result.setTableShardingStrategyConfig(new NoneShardingStrategyConfiguration());
return result; return result;
} }
private TableRuleConfiguration createTableRuleConfigWithTableStrategies() { private TableRuleConfiguration createTableRuleConfigWithTableStrategies() {
TableRuleConfiguration result = new TableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}"); TableRuleConfiguration result = new TableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new PreciseShardingAlgorithmFixture())); result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("column", new StandardShardingAlgorithmFixture()));
return result; return result;
} }
} }
...@@ -24,8 +24,7 @@ import org.apache.shardingsphere.api.config.sharding.strategy.ComplexShardingStr ...@@ -24,8 +24,7 @@ import org.apache.shardingsphere.api.config.sharding.strategy.ComplexShardingStr
import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration; import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
import org.apache.shardingsphere.core.strategy.route.complex.ComplexShardingStrategy; import org.apache.shardingsphere.core.strategy.route.complex.ComplexShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.fixture.ComplexKeysShardingAlgorithmFixture; import org.apache.shardingsphere.core.strategy.route.fixture.ComplexKeysShardingAlgorithmFixture;
import org.apache.shardingsphere.core.strategy.route.fixture.PreciseShardingAlgorithmFixture; import org.apache.shardingsphere.core.strategy.route.fixture.StandardShardingAlgorithmFixture;
import org.apache.shardingsphere.core.strategy.route.fixture.RangeShardingAlgorithmFixture;
import org.apache.shardingsphere.core.strategy.route.none.NoneShardingStrategy; import org.apache.shardingsphere.core.strategy.route.none.NoneShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.standard.StandardShardingStrategy; import org.apache.shardingsphere.core.strategy.route.standard.StandardShardingStrategy;
import org.apache.shardingsphere.core.strategy.route.value.ListRouteValue; import org.apache.shardingsphere.core.strategy.route.value.ListRouteValue;
...@@ -55,7 +54,7 @@ public final class ShardingStrategyTest { ...@@ -55,7 +54,7 @@ public final class ShardingStrategyTest {
@Test @Test
public void assertDoShardingForBetweenSingleKey() { public void assertDoShardingForBetweenSingleKey() {
StandardShardingStrategy strategy = new StandardShardingStrategy( StandardShardingStrategy strategy = new StandardShardingStrategy(
new StandardShardingStrategyConfiguration("column", new PreciseShardingAlgorithmFixture(), new RangeShardingAlgorithmFixture())); new StandardShardingStrategyConfiguration("column", new StandardShardingAlgorithmFixture()));
assertThat(strategy.doSharding(targets, Collections.singletonList(new RangeRouteValue<>("column", "logicTable", Range.open(1, 3))), new ConfigurationProperties(new Properties())), assertThat(strategy.doSharding(targets, Collections.singletonList(new RangeRouteValue<>("column", "logicTable", Range.open(1, 3))), new ConfigurationProperties(new Properties())),
is(Sets.newHashSet("1"))); is(Sets.newHashSet("1")));
} }
......
...@@ -109,8 +109,8 @@ public final class YamlEngineShadowShardingConfigurationTest { ...@@ -109,8 +109,8 @@ public final class YamlEngineShadowShardingConfigurationTest {
private void assertTOrderItem(final YamlRootShadowConfiguration actual) { private void assertTOrderItem(final YamlRootShadowConfiguration actual) {
assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getActualDataNodes(), is("ds_${0..1}.t_order_item_${0..1}")); assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getActualDataNodes(), is("ds_${0..1}.t_order_item_${0..1}"));
assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingColumn(), is("order_id")); assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingColumn(), is("order_id"));
assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getPreciseAlgorithmClassName(), is("TestPreciseAlgorithmClassName")); assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingAlgorithm().getType(), is("STANDARD_TEST"));
assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getRangeAlgorithmClassName(), is("TestRangeAlgorithmClassName")); assertThat(actual.getShadowRule().getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingAlgorithm().getType(), is("STANDARD_TEST"));
} }
private void assertBindingTable(final YamlRootShadowConfiguration actual) { private void assertBindingTable(final YamlRootShadowConfiguration actual) {
......
...@@ -108,8 +108,8 @@ public final class YamlEngineShardingConfigurationTest { ...@@ -108,8 +108,8 @@ public final class YamlEngineShardingConfigurationTest {
private void assertTOrderItem(final YamlRootShardingConfiguration actual) { private void assertTOrderItem(final YamlRootShardingConfiguration actual) {
assertThat(actual.getShardingRule().getTables().get("t_order_item").getActualDataNodes(), is("ds_${0..1}.t_order_item_${0..1}")); assertThat(actual.getShardingRule().getTables().get("t_order_item").getActualDataNodes(), is("ds_${0..1}.t_order_item_${0..1}"));
assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingColumn(), is("order_id")); assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingColumn(), is("order_id"));
assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getPreciseAlgorithmClassName(), is("TestPreciseAlgorithmClassName")); assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingAlgorithm().getType(), is("STANDARD_TEST"));
assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getRangeAlgorithmClassName(), is("TestRangeAlgorithmClassName")); assertThat(actual.getShardingRule().getTables().get("t_order_item").getTableStrategy().getStandard().getShardingAlgorithm().getType(), is("STANDARD_TEST"));
} }
private void assertBindingTable(final YamlRootShardingConfiguration actual) { private void assertBindingTable(final YamlRootShardingConfiguration actual) {
......
...@@ -28,8 +28,8 @@ import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; ...@@ -28,8 +28,8 @@ import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm; import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.core.shard.fixture.ComplexKeysShardingAlgorithmFixture; import org.apache.shardingsphere.core.shard.fixture.ComplexKeysShardingAlgorithmFixture;
import org.apache.shardingsphere.core.shard.fixture.HintShardingAlgorithmFixture; import org.apache.shardingsphere.core.shard.fixture.HintShardingAlgorithmFixture;
import org.apache.shardingsphere.core.shard.fixture.PreciseShardingAlgorithmFixture;
import org.apache.shardingsphere.core.shard.fixture.RangeShardingAlgorithmFixture; import org.apache.shardingsphere.core.shard.fixture.RangeShardingAlgorithmFixture;
import org.apache.shardingsphere.core.shard.fixture.StandardShardingAlgorithmFixture;
import org.apache.shardingsphere.core.yaml.config.sharding.YamlShardingStrategyConfiguration; import org.apache.shardingsphere.core.yaml.config.sharding.YamlShardingStrategyConfiguration;
import org.apache.shardingsphere.core.yaml.config.sharding.strategy.YamlComplexShardingStrategyConfiguration; import org.apache.shardingsphere.core.yaml.config.sharding.strategy.YamlComplexShardingStrategyConfiguration;
import org.apache.shardingsphere.core.yaml.config.sharding.strategy.YamlHintShardingStrategyConfiguration; import org.apache.shardingsphere.core.yaml.config.sharding.strategy.YamlHintShardingStrategyConfiguration;
...@@ -114,22 +114,22 @@ public final class ShardingStrategyConfigurationYamlSwapperTest { ...@@ -114,22 +114,22 @@ public final class ShardingStrategyConfigurationYamlSwapperTest {
public void assertSwapToObjectWithStandardWithRangeShardingAlgorithm() { public void assertSwapToObjectWithStandardWithRangeShardingAlgorithm() {
StandardShardingStrategyConfiguration actual = (StandardShardingStrategyConfiguration) shardingStrategyConfigurationYamlSwapper.swap(createStandardShardingStrategyConfiguration(true)); StandardShardingStrategyConfiguration actual = (StandardShardingStrategyConfiguration) shardingStrategyConfigurationYamlSwapper.swap(createStandardShardingStrategyConfiguration(true));
assertThat(actual.getShardingColumn(), is("id")); assertThat(actual.getShardingColumn(), is("id"));
assertThat(actual.getPreciseShardingAlgorithm(), instanceOf(PreciseShardingAlgorithmFixture.class)); assertThat(actual.getShardingAlgorithm(), instanceOf(StandardShardingAlgorithmFixture.class));
assertThat(actual.getRangeShardingAlgorithm(), instanceOf(RangeShardingAlgorithmFixture.class));
} }
@Test @Test
public void assertSwapToObjectWithStandardWithoutRangeShardingAlgorithm() { public void assertSwapToObjectWithStandardWithoutRangeShardingAlgorithm() {
StandardShardingStrategyConfiguration actual = (StandardShardingStrategyConfiguration) shardingStrategyConfigurationYamlSwapper.swap(createStandardShardingStrategyConfiguration(false)); StandardShardingStrategyConfiguration actual = (StandardShardingStrategyConfiguration) shardingStrategyConfigurationYamlSwapper.swap(createStandardShardingStrategyConfiguration(false));
assertThat(actual.getShardingColumn(), is("id")); assertThat(actual.getShardingColumn(), is("id"));
assertThat(actual.getPreciseShardingAlgorithm(), instanceOf(PreciseShardingAlgorithmFixture.class)); assertThat(actual.getShardingAlgorithm(), instanceOf(StandardShardingAlgorithmFixture.class));
assertNull(actual.getRangeShardingAlgorithm());
} }
private YamlShardingStrategyConfiguration createStandardShardingStrategyConfiguration(final boolean withRangeAlgorithmClassName) { private YamlShardingStrategyConfiguration createStandardShardingStrategyConfiguration(final boolean withRangeAlgorithmClassName) {
YamlStandardShardingStrategyConfiguration yamlStandardShardingStrategyConfiguration = new YamlStandardShardingStrategyConfiguration(); YamlStandardShardingStrategyConfiguration yamlStandardShardingStrategyConfiguration = new YamlStandardShardingStrategyConfiguration();
yamlStandardShardingStrategyConfiguration.setShardingColumn("id"); yamlStandardShardingStrategyConfiguration.setShardingColumn("id");
yamlStandardShardingStrategyConfiguration.setPreciseAlgorithmClassName(PreciseShardingAlgorithmFixture.class.getName()); YamlShardingAlgorithmConfiguration shardingAlgorithmConfiguration = new YamlShardingAlgorithmConfiguration();
shardingAlgorithmConfiguration.setType("STANDARD_TEST");
yamlStandardShardingStrategyConfiguration.setShardingAlgorithm(shardingAlgorithmConfiguration);
if (withRangeAlgorithmClassName) { if (withRangeAlgorithmClassName) {
yamlStandardShardingStrategyConfiguration.setRangeAlgorithmClassName(RangeShardingAlgorithmFixture.class.getName()); yamlStandardShardingStrategyConfiguration.setRangeAlgorithmClassName(RangeShardingAlgorithmFixture.class.getName());
} }
......
...@@ -105,8 +105,8 @@ shadowRule: ...@@ -105,8 +105,8 @@ shadowRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: TestPreciseAlgorithmClassName shardingAlgorithm:
rangeAlgorithmClassName: TestRangeAlgorithmClassName type: STANDARD_TEST
bindingTables: bindingTables:
- t_order, t_order_item - t_order, t_order_item
broadcastTables: broadcastTables:
......
...@@ -92,8 +92,8 @@ shardingRule: ...@@ -92,8 +92,8 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: TestPreciseAlgorithmClassName shardingAlgorithm:
rangeAlgorithmClassName: TestRangeAlgorithmClassName type: STANDARD_TEST
bindingTables: bindingTables:
- t_order, t_order_item - t_order, t_order_item
broadcastTables: broadcastTables:
......
...@@ -22,15 +22,15 @@ shardingRule: ...@@ -22,15 +22,15 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
t_order_item: t_order_item:
actualDataNodes: db_${0..9}.t_order_item actualDataNodes: db_${0..9}.t_order_item
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
keyGenerator: keyGenerator:
type: CONSTANT type: CONSTANT
column: item_id column: item_id
......
...@@ -24,25 +24,25 @@ shardingRule: ...@@ -24,25 +24,25 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
t_order_item: t_order_item:
actualDataNodes: db_ms_${0..9}.t_order_item_${0..9} actualDataNodes: db_ms_${0..9}.t_order_item_${0..9}
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
keyGenerator: keyGenerator:
type: Constant type: Constant
column: item_id column: item_id
......
...@@ -22,15 +22,15 @@ shardingRule: ...@@ -22,15 +22,15 @@ shardingRule:
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
t_order_item: t_order_item:
actualDataNodes: tbl.t_order_item_${0..9} actualDataNodes: tbl.t_order_item_${0..9}
tableStrategy: tableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.PreciseModuloAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.dbtest.fixture.RangeModuloAlgorithm type: STANDARD_TEST
keyGenerator: keyGenerator:
type: Constant type: Constant
column: item_id column: item_id
......
...@@ -33,10 +33,10 @@ shardingRule: ...@@ -33,10 +33,10 @@ shardingRule:
defaultTableStrategy: defaultTableStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.fixture.PreciseOrderShardingAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.fixture.RangeOrderShardingAlgorithm type: STANDARD_TEST
defaultDatabaseStrategy: defaultDatabaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.fixture.PreciseOrderShardingAlgorithm shardingAlgorithm:
rangeAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.fixture.RangeOrderShardingAlgorithm type: STANDARD_TEST
...@@ -39,7 +39,8 @@ shardingRule: ...@@ -39,7 +39,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -52,7 +53,8 @@ shardingRule: ...@@ -52,7 +53,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -39,7 +39,8 @@ shardingRule: ...@@ -39,7 +39,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -52,7 +53,8 @@ shardingRule: ...@@ -52,7 +53,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -25,7 +25,8 @@ shardingRule: ...@@ -25,7 +25,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -38,7 +39,8 @@ shardingRule: ...@@ -38,7 +39,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -24,7 +24,8 @@ shardingRule: ...@@ -24,7 +24,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -37,7 +38,8 @@ shardingRule: ...@@ -37,7 +38,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -51,7 +51,8 @@ shardingRule: ...@@ -51,7 +51,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -64,7 +65,8 @@ shardingRule: ...@@ -64,7 +65,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: order_id shardingColumn: order_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: id shardingColumn: id
......
...@@ -51,7 +51,8 @@ shardingRule: ...@@ -51,7 +51,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -64,7 +65,8 @@ shardingRule: ...@@ -64,7 +65,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -25,7 +25,8 @@ shardingRule: ...@@ -25,7 +25,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -38,7 +39,8 @@ shardingRule: ...@@ -38,7 +39,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -25,7 +25,8 @@ shardingRule: ...@@ -25,7 +25,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
...@@ -38,7 +39,8 @@ shardingRule: ...@@ -38,7 +39,8 @@ shardingRule:
databaseStrategy: databaseStrategy:
standard: standard:
shardingColumn: user_id shardingColumn: user_id
preciseAlgorithmClassName: org.apache.shardingsphere.shardingjdbc.orchestration.api.yaml.fixture.SingleAlgorithm shardingAlgorithm:
type: STANDARD_TEST
tableStrategy: tableStrategy:
inline: inline:
shardingColumn: order_id shardingColumn: order_id
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
<bean id="preciseModuloDatabaseShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" /> <bean id="preciseModuloDatabaseShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.PreciseModuloTableShardingAlgorithm" /> <bean id="preciseModuloTableShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="rangeModuloTableShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.RangeModuloTableShardingAlgorithm" /> <bean id="rangeModuloTableShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.RangeModuloTableShardingAlgorithm" />
<bean id="standardModuloDatabaseShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.StandardModuloDatabaseShardingAlgorithm" />
<bean id="standardModuloTableShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.StandardModuloTableShardingAlgorithm" />
<bean id="defaultComplexKeysShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.DefaultComplexKeysShardingAlgorithm" /> <bean id="defaultComplexKeysShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.DefaultComplexKeysShardingAlgorithm" />
<bean id="defaultHintShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.DefaultHintShardingAlgorithm" /> <bean id="defaultHintShardingAlgorithm" class="org.apache.shardingsphere.shardingjdbc.orchestration.spring.algorithm.DefaultHintShardingAlgorithm" />
<bean id="incrementAlgorithm" class="org.apache.shardingsphere.shardingjdbc.spring.namespace.factorybean.KeyGenerateAlgorithmFactoryBean"> <bean id="incrementAlgorithm" class="org.apache.shardingsphere.shardingjdbc.spring.namespace.factorybean.KeyGenerateAlgorithmFactoryBean">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册