ShardingRuleTest.java 18.2 KB
Newer Older
T
terrymanu 已提交
1
/*
2 3 4 5 6 7
 * 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
T
terrymanu 已提交
8
 *
T
terrymanu 已提交
9
 *     http://www.apache.org/licenses/LICENSE-2.0
T
terrymanu 已提交
10 11 12 13 14 15 16 17
 *
 * 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.
 */

18
package org.apache.shardingsphere.sharding.rule;
T
terrymanu 已提交
19

20
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
L
Liang Zhang 已提交
21
import org.apache.shardingsphere.infra.config.exception.ShardingSphereConfigurationException;
L
Liang Zhang 已提交
22
import org.apache.shardingsphere.infra.database.type.DatabaseType;
L
Liang Zhang 已提交
23
import org.apache.shardingsphere.infra.datanode.DataNode;
24 25 26
import org.apache.shardingsphere.sharding.algorithm.keygen.SnowflakeKeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.algorithm.keygen.fixture.IncrementKeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineShardingAlgorithm;
27
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
28
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
L
Liang Zhang 已提交
29 30 31
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
T
tianbin 已提交
32
import org.junit.Test;
33

L
Liang Zhang 已提交
34
import javax.sql.DataSource;
L
Liang Zhang 已提交
35 36
import java.util.Arrays;
import java.util.Collections;
L
Liang Zhang 已提交
37 38
import java.util.HashMap;
import java.util.Map;
L
Liang Zhang 已提交
39 40 41 42 43 44 45
import java.util.Properties;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
46
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
L
Liang Zhang 已提交
47
import static org.mockito.Mockito.mock;
L
Liang Zhang 已提交
48

T
terrymanu 已提交
49 50
public final class ShardingRuleTest {
    
T
terrymanu 已提交
51 52
    @Test(expected = IllegalArgumentException.class)
    public void assertNewShardingRuleWithEmptyDataSourceNames() {
L
Liang Zhang 已提交
53
        new ShardingRule(new ShardingRuleConfiguration(), mock(DatabaseType.class), Collections.emptyMap());
T
terrymanu 已提交
54 55
    }
    
56
    @Test
T
terrymanu 已提交
57 58 59 60 61
    public void assertNewShardingRuleWithMaximumConfiguration() {
        ShardingRule actual = createMaximumShardingRule();
        assertThat(actual.getTableRules().size(), is(2));
        assertThat(actual.getBindingTableRules().size(), is(1));
        assertThat(actual.getBindingTableRules().iterator().next().getTableRules().size(), is(2));
62
        assertThat(actual.getBroadcastTables(), is(Collections.singletonList("BROADCAST_TABLE")));
63
        assertThat(actual.getDefaultKeyGenerateAlgorithm(), instanceOf(IncrementKeyGenerateAlgorithm.class));
64 65
    }
    
T
terrymanu 已提交
66
    @Test
T
terrymanu 已提交
67 68 69 70 71
    public void assertNewShardingRuleWithMinimumConfiguration() {
        ShardingRule actual = createMinimumShardingRule();
        assertThat(actual.getTableRules().size(), is(1));
        assertTrue(actual.getBindingTableRules().isEmpty());
        assertTrue(actual.getBroadcastTables().isEmpty());
72
        assertThat(actual.getDefaultKeyGenerateAlgorithm(), instanceOf(SnowflakeKeyGenerateAlgorithm.class));
T
terrymanu 已提交
73 74 75
    }
    
    @Test
T
terrymanu 已提交
76 77
    public void assertFindTableRule() {
        assertTrue(createMaximumShardingRule().findTableRule("logic_Table").isPresent());
T
terrymanu 已提交
78 79 80
    }
    
    @Test
T
terrymanu 已提交
81 82
    public void assertNotFindTableRule() {
        assertFalse(createMaximumShardingRule().findTableRule("other_Table").isPresent());
T
terrymanu 已提交
83 84 85
    }
    
    @Test
T
terrymanu 已提交
86 87 88 89 90 91 92 93 94
    public void assertFindTableRuleByActualTable() {
        assertTrue(createMaximumShardingRule().findTableRuleByActualTable("table_0").isPresent());
    }
    
    @Test
    public void assertNotFindTableRuleByActualTable() {
        assertFalse(createMaximumShardingRule().findTableRuleByActualTable("table_3").isPresent());
    }
    
95 96 97 98 99 100 101 102 103 104
    @Test
    public void assertFindLogicTableByActualTable() {
        assertTrue(createMaximumShardingRule().findLogicTableByActualTable("table_0").isPresent());
    }
    
    @Test
    public void assertNotFindLogicTableByActualTable() {
        assertFalse(createMaximumShardingRule().findLogicTableByActualTable("table_3").isPresent());
    }
    
T
terrymanu 已提交
105 106 107 108 109 110 111 112 113 114 115 116
    @Test
    public void assertGetTableRuleWithShardingTable() {
        TableRule actual = createMaximumShardingRule().getTableRule("Logic_Table");
        assertThat(actual.getLogicTable(), is("logic_table"));
    }
    
    @Test
    public void assertGetTableRuleWithBroadcastTable() {
        TableRule actual = createMaximumShardingRule().getTableRule("Broadcast_Table");
        assertThat(actual.getLogicTable(), is("broadcast_table"));
    }
    
117
    @Test(expected = ShardingSphereConfigurationException.class)
T
terrymanu 已提交
118 119
    public void assertGetTableRuleFailure() {
        createMinimumShardingRule().getTableRule("New_Table");
T
terrymanu 已提交
120 121
    }
    
T
terrymanu 已提交
122 123
    @Test
    public void assertIsAllBindingTableWhenLogicTablesIsEmpty() {
L
Liang Zhang 已提交
124
        assertFalse(createMaximumShardingRule().isAllBindingTables(Collections.emptyList()));
T
terrymanu 已提交
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    }
    
    @Test
    public void assertIsNotAllBindingTable() {
        assertFalse(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("new_Table")));
        assertFalse(createMaximumShardingRule().isAllBindingTables(Arrays.asList("logic_Table", "new_Table")));
    }
    
    @Test
    public void assertIsAllBindingTable() {
        assertTrue(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("logic_Table")));
        assertTrue(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("logic_table")));
        assertTrue(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("sub_Logic_Table")));
        assertTrue(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("sub_logic_table")));
        assertTrue(createMaximumShardingRule().isAllBindingTables(Arrays.asList("logic_Table", "sub_Logic_Table")));
        assertTrue(createMaximumShardingRule().isAllBindingTables(Arrays.asList("logic_table", "sub_logic_Table")));
        assertFalse(createMaximumShardingRule().isAllBindingTables(Arrays.asList("logic_table", "sub_logic_Table", "new_table")));
L
Liang Zhang 已提交
142
        assertFalse(createMaximumShardingRule().isAllBindingTables(Collections.emptyList()));
T
terrymanu 已提交
143 144 145
        assertFalse(createMaximumShardingRule().isAllBindingTables(Collections.singletonList("new_Table")));
    }
    
T
terrymanu 已提交
146
    @Test
T
terrymanu 已提交
147
    public void assertGetBindingTableRuleForNotConfig() {
T
terrymanu 已提交
148
        assertFalse(createMinimumShardingRule().findBindingTableRule("logic_Table").isPresent());
T
terrymanu 已提交
149 150 151
    }
    
    @Test
T
terrymanu 已提交
152
    public void assertGetBindingTableRuleForNotFound() {
T
terrymanu 已提交
153
        assertFalse(createMaximumShardingRule().findBindingTableRule("new_Table").isPresent());
T
terrymanu 已提交
154 155 156
    }
    
    @Test
T
terrymanu 已提交
157
    public void assertGetBindingTableRuleForFound() {
T
terrymanu 已提交
158
        ShardingRule actual = createMaximumShardingRule();
T
tianbin 已提交
159
        assertTrue(actual.findBindingTableRule("logic_Table").isPresent());
T
terrymanu 已提交
160
        assertThat(actual.findBindingTableRule("logic_Table").get().getTableRules().size(), is(2));
T
terrymanu 已提交
161 162 163
    }
    
    @Test
T
terrymanu 已提交
164
    public void assertIsAllBroadcastTableWhenLogicTablesIsEmpty() {
L
Liang Zhang 已提交
165
        assertFalse(createMaximumShardingRule().isAllBroadcastTables(Collections.emptyList()));
T
terrymanu 已提交
166 167 168
    }
    
    @Test
T
terrymanu 已提交
169 170
    public void assertIsAllBroadcastTable() {
        assertTrue(createMaximumShardingRule().isAllBroadcastTables(Collections.singletonList("Broadcast_Table")));
T
terrymanu 已提交
171 172 173
    }
    
    @Test
T
terrymanu 已提交
174 175 176 177 178 179 180 181 182 183 184 185 186 187
    public void assertIsNotAllBroadcastTable() {
        assertFalse(createMaximumShardingRule().isAllBroadcastTables(Arrays.asList("broadcast_table", "other_table")));
    }
    
    @Test
    public void assertIsBroadcastTable() {
        assertTrue(createMaximumShardingRule().isBroadcastTable("Broadcast_Table"));
    }
    
    @Test
    public void assertIsNotBroadcastTable() {
        assertFalse(createMaximumShardingRule().isBroadcastTable("other_table"));
    }
    
188
    @Test
T
terrymanu 已提交
189
    public void assertIsShardingColumnForDefaultDatabaseShardingStrategy() {
T
terrymanu 已提交
190
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
L
Liang Zhang 已提交
191
        shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
192
        shardingRuleConfig.setDefaultDatabaseShardingStrategy(new StandardShardingStrategyConfiguration("column", "STANDARD_TEST"));
193
        shardingRuleConfig.getShardingAlgorithms().put("standard", new ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
L
Liang Zhang 已提交
194
        assertTrue(new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap()).isShardingColumn("column", "LOGIC_TABLE"));
195 196 197
    }
    
    @Test
T
terrymanu 已提交
198
    public void assertIsShardingColumnForDefaultTableShardingStrategy() {
T
terrymanu 已提交
199
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
L
Liang Zhang 已提交
200
        shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
201
        shardingRuleConfig.setDefaultTableShardingStrategy(new StandardShardingStrategyConfiguration("column", "STANDARD_TEST"));
202
        shardingRuleConfig.getShardingAlgorithms().put("standard", new ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
L
Liang Zhang 已提交
203
        assertTrue(new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap()).isShardingColumn("column", "LOGIC_TABLE"));
204 205 206
    }
    
    @Test
T
terrymanu 已提交
207
    public void assertIsShardingColumnForDatabaseShardingStrategy() {
T
terrymanu 已提交
208
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
L
Liang Zhang 已提交
209
        shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
210
        shardingRuleConfig.getShardingAlgorithms().put("standard", new ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
L
Liang Zhang 已提交
211
        assertTrue(new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap()).isShardingColumn("column", "logic_Table"));
212 213 214
    }
    
    @Test
T
terrymanu 已提交
215
    public void assertIsShardingColumnForTableShardingStrategy() {
T
terrymanu 已提交
216
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
L
Liang Zhang 已提交
217
        shardingRuleConfig.getTables().add(createTableRuleConfigWithTableStrategies());
218
        shardingRuleConfig.getShardingAlgorithms().put("standard", new ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
L
Liang Zhang 已提交
219
        assertTrue(new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap()).isShardingColumn("column", "logic_Table"));
220 221 222
    }
    
    @Test
T
terrymanu 已提交
223
    public void assertIsNotShardingColumn() {
T
terrymanu 已提交
224
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
L
Liang Zhang 已提交
225
        shardingRuleConfig.getTables().add(createTableRuleConfigWithAllStrategies());
L
Liang Zhang 已提交
226
        assertFalse(new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap()).isShardingColumn("column", "other_Table"));
227
    }
T
terrymanu 已提交
228
    
T
tianbin 已提交
229
    @Test
T
terrymanu 已提交
230
    public void assertFindGenerateKeyColumn() {
231
        assertTrue(createMaximumShardingRule().findGenerateKeyColumnName("logic_table").isPresent());
T
tianbin 已提交
232 233
    }
    
马晓光 已提交
234
    @Test
T
terrymanu 已提交
235
    public void assertNotFindGenerateKeyColumn() {
236
        assertFalse(createMinimumShardingRule().findGenerateKeyColumnName("sub_logic_table").isPresent());
T
tianbin 已提交
237 238
    }
    
239
    @Test(expected = ShardingSphereConfigurationException.class)
T
tianbin 已提交
240
    public void assertGenerateKeyFailure() {
T
terrymanu 已提交
241
        createMaximumShardingRule().generateKey("table_0");
T
tianbin 已提交
242 243 244 245
    }
    
    @Test
    public void assertGenerateKeyWithDefaultKeyGenerator() {
T
terrymanu 已提交
246
        assertThat(createMinimumShardingRule().generateKey("logic_table"), instanceOf(Long.class));
T
tianbin 已提交
247
    }
T
terrymanu 已提交
248
    
T
tianbin 已提交
249 250
    @Test
    public void assertGenerateKeyWithKeyGenerator() {
T
terrymanu 已提交
251
        assertThat(createMaximumShardingRule().generateKey("logic_table"), instanceOf(Integer.class));
T
terrymanu 已提交
252 253
    }
    
T
tianbin 已提交
254
    @Test
T
terrymanu 已提交
255 256
    public void assertGetDataNodeByLogicTable() {
        assertThat(createMaximumShardingRule().getDataNode("logic_table"), is(new DataNode("ds_0.table_0")));
T
tianbin 已提交
257 258
    }
    
T
terrymanu 已提交
259 260 261
    @Test
    public void assertGetDataNodeByDataSourceAndLogicTable() {
        assertThat(createMaximumShardingRule().getDataNode("ds_1", "logic_table"), is(new DataNode("ds_1.table_0")));
T
tianbin 已提交
262 263
    }
    
264
    @Test(expected = ShardingSphereConfigurationException.class)
T
terrymanu 已提交
265 266
    public void assertGetDataNodeByLogicTableFailureWithDataSourceName() {
        createMaximumShardingRule().getDataNode("ds_3", "logic_table");
T
tianbin 已提交
267 268
    }
    
T
terrymanu 已提交
269 270
    @Test
    public void assertGetShardingLogicTableNames() {
T
terrymanu 已提交
271
        ShardingRule actual = createMaximumShardingRule();
272
        assertThat(actual.getShardingLogicTableNames(Arrays.asList("LOGIC_TABLE", "BROADCAST_TABLE")), is(Collections.singletonList("LOGIC_TABLE")));
T
terrymanu 已提交
273
    }
T
terrymanu 已提交
274
    
tank U  
孙不服 已提交
275
    @Test(expected = IllegalArgumentException.class)
S
sunbufu 已提交
276
    public void assertConstructShardingRuleWithNullShardingRuleConfiguration() {
L
Liang Zhang 已提交
277
        new ShardingRule((ShardingRuleConfiguration) null, mock(DatabaseType.class), createDataSourceMap());
278
    }
T
terrymanu 已提交
279
    
nice  
孙不服 已提交
280
    @Test(expected = IllegalArgumentException.class)
T
terrymanu 已提交
281
    public void assertConstructShardingRuleWithNullDataSourceNames() {
282 283 284
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
        ShardingTableRuleConfiguration shardingTableRuleConfig = createTableRuleConfiguration("LOGIC_TABLE", "pr_ds_${0..1}.table_${0..2}");
        shardingRuleConfig.getTables().add(shardingTableRuleConfig);
L
Liang Zhang 已提交
285
        new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), null);
286
    }
T
terrymanu 已提交
287
    
R
Raigor 已提交
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
    @Test
    public void assertTableRuleExists() {
        assertTrue(createMaximumShardingRule().tableRuleExists(Collections.singletonList("logic_table")));
    }
    
    @Test
    public void assertTableRuleExistsForMultipleTables() {
        assertTrue(createMaximumShardingRule().tableRuleExists(Arrays.asList("logic_table", "table_0")));
    }
    
    @Test
    public void assertTableRuleNotExists() {
        assertFalse(createMinimumShardingRule().tableRuleExists(Collections.singletonList("table_0")));
    }
    
303 304 305 306 307
    @Test
    public void assertGetTables() {
        assertThat(createMaximumShardingRule().getTables(), is(Arrays.asList("logic_table", "sub_logic_table")));
    }
    
T
terrymanu 已提交
308
    private ShardingRule createMaximumShardingRule() {
309 310 311 312 313 314 315 316
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
        ShardingTableRuleConfiguration shardingTableRuleConfig = createTableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
        shardingTableRuleConfig.setKeyGenerateStrategy(new KeyGenerateStrategyConfiguration("id", "increment"));
        ShardingTableRuleConfiguration subTableRuleConfig = createTableRuleConfiguration("SUB_LOGIC_TABLE", "ds_${0..1}.sub_table_${0..2}");
        shardingRuleConfig.getTables().add(shardingTableRuleConfig);
        shardingRuleConfig.getTables().add(subTableRuleConfig);
        shardingRuleConfig.getBindingTableGroups().add(shardingTableRuleConfig.getLogicTable() + "," + subTableRuleConfig.getLogicTable());
        shardingRuleConfig.getBroadcastTables().add("BROADCAST_TABLE");
317
        InlineShardingAlgorithm shardingAlgorithmDB = new InlineShardingAlgorithm();
L
Liang Zhang 已提交
318
        Properties props = new Properties();
R
rick.huang 已提交
319
        props.setProperty("algorithm-expression", "ds_%{ds_id % 2}");
L
Liang Zhang 已提交
320
        shardingAlgorithmDB.setProps(props);
321
        shardingRuleConfig.setDefaultDatabaseShardingStrategy(new StandardShardingStrategyConfiguration("ds_id", "standard"));
322
        InlineShardingAlgorithm shardingAlgorithmTBL = new InlineShardingAlgorithm();
L
Liang Zhang 已提交
323
        props = new Properties();
R
rick.huang 已提交
324
        props.setProperty("algorithm-expression", "table_%{table_id % 2}");
L
Liang Zhang 已提交
325
        shardingAlgorithmTBL.setProps(props);
326 327 328 329 330
        shardingRuleConfig.setDefaultTableShardingStrategy(new StandardShardingStrategyConfiguration("table_id", "standard"));
        shardingRuleConfig.setDefaultKeyGenerateStrategy(new KeyGenerateStrategyConfiguration("id", "default"));
        shardingRuleConfig.getShardingAlgorithms().put("standard", new ShardingSphereAlgorithmConfiguration("STANDARD_TEST", new Properties()));
        shardingRuleConfig.getKeyGenerators().put("increment", new ShardingSphereAlgorithmConfiguration("INCREMENT", new Properties()));
        shardingRuleConfig.getKeyGenerators().put("default", new ShardingSphereAlgorithmConfiguration("INCREMENT", new Properties()));
L
Liang Zhang 已提交
331
        return new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap());
T
terrymanu 已提交
332 333
    }
    
T
terrymanu 已提交
334
    private ShardingRule createMinimumShardingRule() {
335 336 337
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
        ShardingTableRuleConfiguration shardingTableRuleConfig = createTableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
        shardingRuleConfig.getTables().add(shardingTableRuleConfig);
L
Liang Zhang 已提交
338
        return new ShardingRule(shardingRuleConfig, mock(DatabaseType.class), createDataSourceMap());
T
terrymanu 已提交
339 340
    }
    
L
Liang Zhang 已提交
341 342
    private ShardingTableRuleConfiguration createTableRuleConfiguration(final String logicTableName, final String actualDataNodes) {
        return new ShardingTableRuleConfiguration(logicTableName, actualDataNodes);
343 344
    }
    
L
Liang Zhang 已提交
345 346
    private Map<String, DataSource> createDataSourceMap() {
        Map<String, DataSource> result = new HashMap<>(2, 1);
347 348
        result.put("ds_0", mock(DataSource.class, RETURNS_DEEP_STUBS));
        result.put("ds_1", mock(DataSource.class, RETURNS_DEEP_STUBS));
L
Liang Zhang 已提交
349
        return result;
350 351
    }
    
L
Liang Zhang 已提交
352 353
    private ShardingTableRuleConfiguration createTableRuleConfigWithAllStrategies() {
        ShardingTableRuleConfiguration result = new ShardingTableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
354
        result.setDatabaseShardingStrategy(new StandardShardingStrategyConfiguration("column", "standard"));
L
Liang Zhang 已提交
355
        result.setTableShardingStrategy(new NoneShardingStrategyConfiguration());
356 357 358
        return result;
    }
    
L
Liang Zhang 已提交
359 360
    private ShardingTableRuleConfiguration createTableRuleConfigWithTableStrategies() {
        ShardingTableRuleConfiguration result = new ShardingTableRuleConfiguration("LOGIC_TABLE", "ds_${0..1}.table_${0..2}");
361
        result.setTableShardingStrategy(new StandardShardingStrategyConfiguration("column", "standard"));
362
        return result;
363
    }
T
terrymanu 已提交
364
}