提交 dd0ce8ae 编写于 作者: H haocao

New integrate sql test framework 11th version.

上级 d0e47b4f
......@@ -24,8 +24,10 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
ShardingDatabaseOnlyTest.class,
ShardingTableOnlyTest.class,
ShardingMasterSlaveTest.class
ShardingTableOnlyTest.class
// ShardingMasterSlaveTest.class,
// ShardingDatabaseAndTableTest.class,
// ShardingDatabaseAndTableDynamicTest.class
})
public class AllSqlAssertTests {
}
/*
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
* </p>
*/
package com.dangdang.ddframe.rdb.common.sql;
import com.dangdang.ddframe.rdb.common.jaxb.SqlShardingRule;
import com.dangdang.ddframe.rdb.common.sql.base.AbstractSqlAssertTest;
import com.dangdang.ddframe.rdb.common.sql.common.ShardingTestStrategy;
import com.dangdang.ddframe.rdb.integrate.fixture.SingleKeyDynamicModuloTableShardingAlgorithm;
import com.dangdang.ddframe.rdb.integrate.fixture.SingleKeyModuloDatabaseShardingAlgorithm;
import com.dangdang.ddframe.rdb.sharding.api.rule.BindingTableRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule;
import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.jdbc.core.datasource.ShardingDataSource;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@RunWith(Parameterized.class)
@Ignore
public class ShardingDatabaseAndTableDynamicTest extends AbstractSqlAssertTest {
private static boolean isShutdown;
private static Map<DatabaseType, ShardingDataSource> shardingDataSources = new HashMap<>();
public ShardingDatabaseAndTableDynamicTest(final String testCaseName, final String sql, final Set<DatabaseType> types, final List<SqlShardingRule> sqlShardingRules) {
super(testCaseName, sql, types, sqlShardingRules);
}
@Override
protected ShardingTestStrategy getShardingStrategy() {
return ShardingTestStrategy.dbtbl;
}
@Override
protected List<String> getDataSetFiles() {
return Arrays.asList(
"integrate/dataset/dbtbl/init/dbtbl_0.xml",
"integrate/dataset/dbtbl/init/dbtbl_1.xml",
"integrate/dataset/dbtbl/init/dbtbl_2.xml",
"integrate/dataset/dbtbl/init/dbtbl_3.xml",
"integrate/dataset/dbtbl/init/dbtbl_4.xml",
"integrate/dataset/dbtbl/init/dbtbl_5.xml",
"integrate/dataset/dbtbl/init/dbtbl_6.xml",
"integrate/dataset/dbtbl/init/dbtbl_7.xml",
"integrate/dataset/dbtbl/init/dbtbl_8.xml",
"integrate/dataset/dbtbl/init/dbtbl_9.xml");
}
@Override
protected final Map<DatabaseType, ShardingDataSource> getShardingDataSources() {
if (!shardingDataSources.isEmpty() && !isShutdown) {
return shardingDataSources;
}
isShutdown = false;
Map<DatabaseType, Map<String, DataSource>> dataSourceMap = createDataSourceMap();
for (Map.Entry<DatabaseType, Map<String, DataSource>> each : dataSourceMap.entrySet()) {
DataSourceRule dataSourceRule = new DataSourceRule(each.getValue());
TableRule orderTableRule = TableRule.builder("t_order").dynamic(true).dataSourceRule(dataSourceRule).build();
TableRule orderItemTableRule = TableRule.builder("t_order_item").dynamic(true).dataSourceRule(dataSourceRule).build();
ShardingRule shardingRule = ShardingRule.builder().dataSourceRule(dataSourceRule).tableRules(Arrays.asList(orderTableRule, orderItemTableRule))
.bindingTableRules(Collections.singletonList(new BindingTableRule(Arrays.asList(orderTableRule, orderItemTableRule))))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new SingleKeyModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new SingleKeyDynamicModuloTableShardingAlgorithm("t_order_"))).build();
shardingDataSources.put(each.getKey(), new ShardingDataSource(shardingRule));
}
return shardingDataSources;
}
@AfterClass
public static void clear() {
isShutdown = true;
if (!shardingDataSources.isEmpty()) {
for (ShardingDataSource each : shardingDataSources.values()) {
each.close();
}
}
}
}
/*
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
* </p>
*/
package com.dangdang.ddframe.rdb.common.sql;
import com.dangdang.ddframe.rdb.common.jaxb.SqlShardingRule;
import com.dangdang.ddframe.rdb.common.sql.base.AbstractSqlAssertTest;
import com.dangdang.ddframe.rdb.common.sql.common.ShardingTestStrategy;
import com.dangdang.ddframe.rdb.integrate.fixture.SingleKeyModuloDatabaseShardingAlgorithm;
import com.dangdang.ddframe.rdb.integrate.fixture.SingleKeyModuloTableShardingAlgorithm;
import com.dangdang.ddframe.rdb.sharding.api.rule.BindingTableRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule;
import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.jdbc.core.datasource.ShardingDataSource;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@RunWith(Parameterized.class)
@Ignore
public class ShardingDatabaseAndTableTest extends AbstractSqlAssertTest {
private static boolean isShutdown;
private static Map<DatabaseType, ShardingDataSource> shardingDataSources = new HashMap<>();
public ShardingDatabaseAndTableTest(final String testCaseName, final String sql, final Set<DatabaseType> types, final List<SqlShardingRule> sqlShardingRules) {
super(testCaseName, sql, types, sqlShardingRules);
}
@Override
protected ShardingTestStrategy getShardingStrategy() {
return ShardingTestStrategy.dbtbl;
}
@Override
protected List<String> getDataSetFiles() {
return Arrays.asList(
"integrate/dataset/dbtbl/init/dbtbl_0.xml",
"integrate/dataset/dbtbl/init/dbtbl_1.xml",
"integrate/dataset/dbtbl/init/dbtbl_2.xml",
"integrate/dataset/dbtbl/init/dbtbl_3.xml",
"integrate/dataset/dbtbl/init/dbtbl_4.xml",
"integrate/dataset/dbtbl/init/dbtbl_5.xml",
"integrate/dataset/dbtbl/init/dbtbl_6.xml",
"integrate/dataset/dbtbl/init/dbtbl_7.xml",
"integrate/dataset/dbtbl/init/dbtbl_8.xml",
"integrate/dataset/dbtbl/init/dbtbl_9.xml");
}
@Override
protected final Map<DatabaseType, ShardingDataSource> getShardingDataSources() {
if (!shardingDataSources.isEmpty() && !isShutdown) {
return shardingDataSources;
}
isShutdown = false;
Map<DatabaseType, Map<String, DataSource>> dataSourceMap = createDataSourceMap();
for (Map.Entry<DatabaseType, Map<String, DataSource>> each : dataSourceMap.entrySet()) {
DataSourceRule dataSourceRule = new DataSourceRule(each.getValue(), "dataSource_dbtbl_0");
TableRule orderTableRule = TableRule.builder("t_order").actualTables(Arrays.asList(
"t_order_0",
"t_order_1",
"t_order_2",
"t_order_3",
"t_order_4",
"t_order_5",
"t_order_6",
"t_order_7",
"t_order_8",
"t_order_9")).dataSourceRule(dataSourceRule).build();
TableRule orderItemTableRule = TableRule.builder("t_order_item").actualTables(Arrays.asList(
"t_order_item_0",
"t_order_item_1",
"t_order_item_2",
"t_order_item_3",
"t_order_item_4",
"t_order_item_5",
"t_order_item_6",
"t_order_item_7",
"t_order_item_8",
"t_order_item_9")).dataSourceRule(dataSourceRule).build();
TableRule configRule = TableRule.builder("t_config").dataSourceRule(dataSourceRule).build();
ShardingRule shardingRule = ShardingRule.builder().dataSourceRule(dataSourceRule).tableRules(Arrays.asList(orderTableRule, orderItemTableRule, configRule))
.bindingTableRules(Collections.singletonList(new BindingTableRule(Arrays.asList(orderTableRule, orderItemTableRule))))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new SingleKeyModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new SingleKeyModuloTableShardingAlgorithm())).build();
shardingDataSources.put(each.getKey(), new ShardingDataSource(shardingRule));
}
return shardingDataSources;
}
@AfterClass
public static void clear() {
isShutdown = true;
if (!shardingDataSources.isEmpty()) {
for (ShardingDataSource each : shardingDataSources.values()) {
each.close();
}
}
}
}
......@@ -101,6 +101,7 @@ public class ShardingDatabaseOnlyTest extends AbstractSqlAssertTest {
isShutdown = true;
if (!shardingDataSources.isEmpty()) {
for (ShardingDataSource each : shardingDataSources.values()) {
System.out.println("close");
each.close();
}
}
......
......@@ -29,7 +29,6 @@ import org.dbunit.IDatabaseTester;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.dbunit.operation.DatabaseOperation;
import org.h2.tools.RunScript;
import org.junit.Before;
import org.junit.runners.Parameterized;
......@@ -80,7 +79,7 @@ public abstract class AbstractBaseSqlTest {
for (int i = 0; i < 10; i++) {
for (String database : Arrays.asList("db", "dbtbl", "nullable", "master", "slave")) {
conn = initialConnection(database + "_" + i, dbType);
RunScript.execute(conn, new InputStreamReader(AbstractDBUnitTest.class.getClassLoader().getResourceAsStream("integrate/schema/table/" + database + ".sql")));
// RunScript.execute(conn, new InputStreamReader(AbstractDBUnitTest.class.getClassLoader().getResourceAsStream("integrate/schema/table/" + database + ".sql")));
conn.close();
}
}
......
......@@ -44,6 +44,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import static com.dangdang.ddframe.rdb.common.sql.common.ShardingTestStrategy.masterslave;
import static com.dangdang.ddframe.rdb.integrate.util.SqlPlaceholderUtil.replacePreparedStatement;
import static com.dangdang.ddframe.rdb.integrate.util.SqlPlaceholderUtil.replaceStatement;
import static org.dbunit.Assertion.assertEquals;
......@@ -79,7 +80,16 @@ public abstract class AbstractSqlAssertTest extends AbstractBaseSqlTest {
private void execute(final boolean isPreparedStatement) throws Exception {
for (Map.Entry<DatabaseType, ShardingDataSource> each : getShardingDataSources().entrySet()) {
if (types.size() == 0 || types.contains(each.getKey())) {
executeAndAssertSql(isPreparedStatement, each.getValue());
try {
executeAndAssertSql(isPreparedStatement, each.getValue());
//CHECKSTYLE:OFF
} catch (final Exception ex) {
//CHECKSTYLE:ON
if (ex.getMessage().startsWith("Dynamic table")) {
continue;
}
throw new RuntimeException(ex);
}
}
}
}
......@@ -140,7 +150,7 @@ public abstract class AbstractSqlAssertTest extends AbstractBaseSqlTest {
}
private SQLType getSqlType() {
return ShardingTestStrategy.masterslave == getShardingStrategy() ? SQLType.INSERT : SQLType.SELECT;
return masterslave == getShardingStrategy() ? SQLType.INSERT : SQLType.SELECT;
}
private String getDataSourceName(final String expected) {
......@@ -148,7 +158,7 @@ public abstract class AbstractSqlAssertTest extends AbstractBaseSqlTest {
if (!result.contains("_")) {
result = result + "_0";
}
if (result.contains("tbl")) {
if (result.startsWith("tbl")) {
result = "tbl";
}
if (result.contains("masterslave")) {
......@@ -229,12 +239,18 @@ public abstract class AbstractSqlAssertTest extends AbstractBaseSqlTest {
while (expectedTableIterator.next()) {
ITable expectedTable = expectedTableIterator.getTable();
String actualTableName = expectedTable.getTableMetaData().getTableName();
String status = sql.toUpperCase().startsWith("DELETE") ? "init" : file.getParentFile().getName();
String verifySql = "SELECT * FROM " + actualTableName + " WHERE status = '" + status + "'";
String verifySql = "SELECT * FROM " + actualTableName + " WHERE status = '" + getStatus(file) + "'";
ITable actualTable = DBUnitUtil.getConnection(new DataBaseEnvironment(DatabaseType.valueFrom(conn.getMetaData().getDatabaseProductName())), conn)
.createQueryTable(actualTableName, verifySql);
assertEquals(expectedTable, actualTable);
}
}
}
private String getStatus(final File file) {
if (sql.toUpperCase().startsWith("DELETE")) {
return masterslave == getShardingStrategy() ? "init_master" : "init";
}
return file.getParentFile().getName();
}
}
......@@ -38,42 +38,42 @@ public abstract class AbstractShardingBothForPStatementWithAggregateTest extends
@Test
public void assertSelectCountAliasSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCount.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectCountAliasSql());
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCount.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectCountAliasSql());
}
@Test
public void assertSelectSumAliasSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectSum.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectSumAliasSql());
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectSum.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectSumAliasSql());
}
@Test
public void assertSelectMaxAliasSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectMax.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMaxAliasSql());
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectMax.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMaxAliasSql());
}
@Test
public void assertSelectMinAliasSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectMin.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMinAliasSql());
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectMin.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMinAliasSql());
}
@Test
public void assertSelectAvgAliasSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectAvg.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectAvgAliasSql());
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectAvg.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectAvgAliasSql());
}
@Test
public void assertSelectCountWithBindingTable() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(),
"t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectCountWithBindingTableSql()), 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(),
"t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectCountWithBindingTableSql()), 1, 9, 1000, 1909);
}
@Test
public void assertSelectCountWithBindingTableAndWithoutJoinSql() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(),
"t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectCountWithBindingTableAndWithoutJoinSql()), 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(),
"t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectCountWithBindingTableAndWithoutJoinSql()), 1, 9, 1000, 1909);
}
}
......@@ -140,7 +140,7 @@ public abstract class AbstractShardingBothForPStatementWithDMLTest extends Abstr
protected void assertDataSet(final String expectedDataSetPattern, final String status) throws SQLException, DatabaseUnitException {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
assertDataSet(String.format("integrate/dataset/dbtbl/expect/%s/dbtbl_%s.xml", expectedDataSetPattern, i),
assertDataSet(String.format("integrate/dataset/db_tbl/expect/%s/dbtbl_%s.xml", expectedDataSetPattern, i),
shardingDataSource.getConnection().getConnection(String.format("dataSource_dbtbl_%s", i), SQLType.SELECT),
String.format("t_order_%s", j), String.format(getDatabaseTestSQL().getAssertSelectShardingTablesWithStatusSql(), j), status);
}
......
......@@ -36,32 +36,32 @@ public abstract class AbstractShardingBothForPStatementWithGroupByTest extends A
@Test
public void assertSelectSum() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectSum.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectSumWithGroupBySql());
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectSum.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectSumWithGroupBySql());
}
@Test
public void assertSelectCount() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectCount.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectCountWithGroupBySql());
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectCount.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectCountWithGroupBySql());
}
@Test
public void assertSelectMax() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectMax.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMaxWithGroupBySql());
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectMax.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMaxWithGroupBySql());
}
@Test
public void assertSelectMin() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectMin.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMinWithGroupBySql());
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectMin.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectMinWithGroupBySql());
}
@Test
public void assertSelectAvg() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectAvg.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectAvgWithGroupBySql());
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectAvg.xml", shardingDataSource.getConnection(), "t_order", getDatabaseTestSQL().getSelectAvgWithGroupBySql());
}
@Test
public void assertSelectOrderByDesc() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select_group_by/SelectOrderByDesc.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select_group_by/SelectOrderByDesc.xml", shardingDataSource.getConnection(),
"t_order", getDatabaseTestSQL().getSelectSumWithOrderByDescAndGroupBySql());
}
}
......@@ -42,29 +42,29 @@ public abstract class AbstractShardingBothForPStatementWithSelectTest extends Ab
@Test
public void assertSelectForFullTableNameWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectForFullTableNameWithSingleTableSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 1000);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 1000);
}
@Test
public void assertSelectEqualsWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectEqualsWithSingleTableSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 1000);
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", sql, 12, 1201);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 1000);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", sql, 12, 1201);
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", sql, 12, 1000);
}
@Test
public void assertSelectBetweenWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectBetweenWithSingleTableSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectBetweenWithSingleTable.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 1009, 1108);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectBetweenWithSingleTable.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 1009, 1108);
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 1309, 1408);
}
@Test
public void assertSelectInWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectInWithSingleTableSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectInWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 15, 1009, 1208);
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectInWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 15, 1009, 1108);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectInWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 15, 1009, 1208);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectInWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 15, 1009, 1108);
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", sql, 10, 12, 15, 1309, 1408);
}
}
......@@ -85,7 +85,7 @@ public abstract class AbstractShardingBothForStatementWithDMLTest extends Abstra
protected void assertDataSet(final String expectedDataSetPattern, final String status) throws SQLException, DatabaseUnitException {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
assertDataSet(String.format("integrate/dataset/dbtbl/expect/%s/dbtbl_%s.xml", expectedDataSetPattern, i),
assertDataSet(String.format("integrate/dataset/db_tbl/expect/%s/dbtbl_%s.xml", expectedDataSetPattern, i),
shardingDataSource.getConnection().getConnection(String.format("dataSource_dbtbl_%s", i), SQLType.SELECT),
String.format("t_order_%s", j), String.format(getDatabaseTestSQL().getAssertSelectShardingTablesWithStatusSql(), j), status);
}
......
......@@ -40,23 +40,23 @@ public abstract class AbstractShardingBothForStatementWithSelectTest extends Abs
@Test
public void assertSelectEqualsWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectEqualsWithSingleTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 1000));
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 12, 1201));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 1000));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 12, 1201));
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 12, 1000));
}
@Test
public void assertSelectBetweenWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectBetweenWithSingleTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectBetweenWithSingleTable.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 1009, 1108));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectBetweenWithSingleTable.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 1009, 1108));
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 1309, 1408));
}
@Test
public void assertSelectInWithSingleTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectInWithSingleTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectInWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 15, 1009, 1208));
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectInWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 15, 1009, 1108));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectInWithSingleTable_0.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 15, 1009, 1208));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectInWithSingleTable_1.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 15, 1009, 1108));
assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order", String.format(sql, 10, 12, 15, 1309, 1408));
}
}
......@@ -50,26 +50,26 @@ public final class DynamicShardingBothForPStatementWithSelectTest extends Abstra
@Test(expected = UnsupportedOperationException.class)
public void assertSelectWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectWithBindingTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(),
"t_order_item", sql, 10, 19, 1000, 1909);
}
@Test(expected = IllegalStateException.class)
public void assertSelectNoShardingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectWithNoShardingTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectNoShardingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectNoShardingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql);
}
@Test
public void assertSelectForFullTableNameWithSingleTable() throws SQLException, DatabaseUnitException {
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectEqualsWithSingleTable_0.xml", shardingDataSource.getConnection(),
"t_order", getDatabaseTestSQL().getSelectForFullTableNameWithSingleTableSql(), 10, 1000);
}
@Test
public void assertSelectLikeWithBindingTable() throws SQLException, DatabaseUnitException {
if (currentDbType() == MySQL) {
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLikeWithCount.xml", getShardingDataSource().getConnection(),
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLikeWithCount.xml", getShardingDataSource().getConnection(),
"t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLikeWithCountSql()), "init", 10, 11, 1000, 1001);
}
}
......
......@@ -53,6 +53,6 @@ public final class DynamicShardingBothForStatementWithAggregateTest extends Abst
public void assertSelectCountWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = "SELECT COUNT(*) AS `items_count` FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id"
+ " WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s";
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
}
}
......@@ -47,6 +47,6 @@ public final class DynamicShardingBothForStatementWithSelectTest extends Abstrac
@Test(expected = UnsupportedOperationException.class)
public void assertSelectWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = "SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s";
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
}
}
......@@ -49,41 +49,41 @@ public final class StaticShardingBothForPStatementWithSelectTest extends Abstrac
@Test
public void assertSelectLimitWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectPagingWithOffsetAndRowCountSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 2, 2);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 2, 2);
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 10000, 2);
}
@Test
public void assertSelectLimitWithBindingTableWithoutOffset() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectPagingWithRowCountSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTableWithoutOffset.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 2);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLimitWithBindingTableWithoutOffset.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 2);
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909, 0);
}
@Test
public void assertSelectGroupByWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectGroupWithBindingTableSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGroupByWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 1, 9, 1000, 1909);
}
@Test
public void assertSelectGroupByWithoutGroupedColumn() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectGroupWithoutGroupedColumnSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithoutGroupedColumn.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGroupByWithoutGroupedColumn.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 19, 1000, 1909);
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 1, 9, 1000, 1909);
}
@Test
public void assertSelectWithBindingTableAndConfigTable() throws SQLException, DatabaseUnitException {
String sql = replacePreparedStatement(getDatabaseTestSQL().getSelectGroupWithBindingTableAndConfigSql());
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectWithBindingTableAndConfigTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 11, 1009, 1108, "init");
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectWithBindingTableAndConfigTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 11, 1009, 1108, "init");
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", sql, 10, 11, 1009, 1108, "none");
}
@Test
public void assertSelectWithNoShardingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectWithNoShardingTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectNoShardingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectNoShardingTable.xml", getShardingDataSource().getConnection(), "t_order_item", sql);
}
}
......@@ -52,14 +52,14 @@ public final class StaticShardingBothForStatementWithAggregateTest extends Abstr
@Test
public void assertSelectCountWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectCountWithBindingTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
}
@Test
public void assertSelectCountWithBindingTableAndWithoutJoinSql() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectCountWithBindingTableAndWithoutJoinSql();
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/dbtbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_0.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select_aggregate/SelectCountWithBindingTable_1.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
}
}
......@@ -48,28 +48,28 @@ public final class StaticShardingBothForStatementWithSelectTest extends Abstract
@Test
public void assertSelectLimitWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectPagingWithOffsetAndRowCountSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 2, 2));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 2, 2));
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 10000, 2));
}
@Test
public void assertSelectGroupByWithBindingTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectGroupWithBindingTableSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGroupByWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
}
@Test
public void assertSelectGroupByWithoutGroupedColumn() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectGroupWithoutGroupedColumnSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithoutGroupedColumn.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGroupByWithoutGroupedColumn.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
}
@Test
public void assertSelectWithBindingTableAndConfigTable() throws SQLException, DatabaseUnitException {
String sql = getDatabaseTestSQL().getSelectGroupWithBindingTableAndConfigSql();
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectWithBindingTableAndConfigTable.xml",
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectWithBindingTableAndConfigTable.xml",
getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "'init'"));
assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "'none'"));
}
......@@ -77,20 +77,20 @@ public final class StaticShardingBothForStatementWithSelectTest extends Abstract
@Test
public void assertSelectGlobalTableOnly() throws SQLException, DatabaseUnitException {
String sql = "SELECT * FROM t_global";
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
}
@Test
@Ignore
public void assertSelectGlobalTableWithDatabaseName() throws SQLException, DatabaseUnitException {
String sql = "SELECT * FROM dataSource_dbtbl_0.t_global";
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
}
@Test(expected = IllegalStateException.class)
@Ignore
public void assertSelectGlobalTableLacking() throws SQLException, DatabaseUnitException {
String sql = "SELECT * FROM dbtbl_0.t_global";
assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
assertDataSet("integrate/dataset/db_tbl/expect/select/SelectGlobalTableOnly.xml", getShardingDataSource().getConnection(), "t_global", sql);
}
}
......@@ -53,7 +53,7 @@
<data parameter="'update',1800,18" expected="update/%s_8.xml" />
<data parameter="'update',1900,19" expected="update/%s_9.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="'update',1000,10" expected="update/%s_0.xml" />
<data parameter="'update',1101,11" expected="update/%s_1.xml" />
<data parameter="'update',1202,12" expected="update/%s_2.xml" />
......@@ -91,7 +91,7 @@
<data parameter="'update',1800,18" expected="update/%s_8.xml" />
<data parameter="'update',1900,19" expected="update/%s_9.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="'update',1000,10" expected="update/%s_0.xml" />
<data parameter="'update',1101,11" expected="update/%s_1.xml" />
<data parameter="'update',1202,12" expected="update/%s_2.xml" />
......@@ -117,7 +117,7 @@
<data parameter="1108,11,'init'" expected="delete/%s_8.xml" />
<data parameter="1109,11,'init'" expected="delete/%s_9.xml" />
</sharding-rule>
<sharding-rule>
<sharding-rule value="db">
<data parameter="1000,10,'init'" expected="delete/%s_0.xml" />
<data parameter="1100,11,'init'" expected="delete/%s_1.xml" />
<data parameter="1200,12,'init'" expected="delete/%s_2.xml" />
......@@ -129,10 +129,37 @@
<data parameter="1800,18,'init'" expected="delete/%s_8.xml" />
<data parameter="1900,19,'init'" expected="delete/%s_9.xml" />
</sharding-rule>
<sharding-rule value="dbtbl">
<data parameter="1000,10,'init'" expected="delete/%s_0.xml" />
<data parameter="1101,11,'init'" expected="delete/%s_1.xml" />
<data parameter="1202,12,'init'" expected="delete/%s_2.xml" />
<data parameter="1303,13,'init'" expected="delete/%s_3.xml" />
<data parameter="1404,14,'init'" expected="delete/%s_4.xml" />
<data parameter="1505,15,'init'" expected="delete/%s_5.xml" />
<data parameter="1606,16,'init'" expected="delete/%s_6.xml" />
<data parameter="1707,17,'init'" expected="delete/%s_7.xml" />
<data parameter="1808,18,'init'" expected="delete/%s_8.xml" />
<data parameter="1909,19,'init'" expected="delete/%s_9.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<data parameter="1000,10,'init_master'" expected="delete/%s_0.xml" />
<data parameter="1101,11,'init_master'" expected="delete/%s_1.xml" />
<data parameter="1202,12,'init_master'" expected="delete/%s_2.xml" />
<data parameter="1303,13,'init_master'" expected="delete/%s_3.xml" />
<data parameter="1404,14,'init_master'" expected="delete/%s_4.xml" />
<data parameter="1505,15,'init_master'" expected="delete/%s_5.xml" />
<data parameter="1606,16,'init_master'" expected="delete/%s_6.xml" />
<data parameter="1707,17,'init_master'" expected="delete/%s_7.xml" />
<data parameter="1808,18,'init_master'" expected="delete/%s_8.xml" />
<data parameter="1909,19,'init_master'" expected="delete/%s_9.xml" />
</sharding-rule>
</sql>
<sql id="assertDeleteWithoutShardingValue" value="DELETE FROM t_order WHERE status=%s">
<sharding-rule>
<data parameter="'init'" expected="delete/%s.xml" />
<sharding-rule value="masterslave">
<data parameter="'init_master'" expected="delete/%s.xml" />
</sharding-rule>
<!--<sharding-rule value="tbl,db,dbtbl">-->
<!--<data parameter="'init'" expected="delete/%s.xml" />-->
<!--</sharding-rule>-->
</sql>
</sqls>
......@@ -6,14 +6,14 @@
<data parameter="11,1109" expected="select/SelectEqualsWithSingleTable_1.xml" />
<data parameter="12,1000" />
</sharding-rule>
<sharding-rule value="db,masterslave">
<sharding-rule value="db,masterslave,dbtbl">
<data parameter="10,1000" expected="select/SelectEqualsWithSingleTable_0.xml" />
<data parameter="12,1201" expected="select/SelectEqualsWithSingleTable_1.xml" />
<data parameter="12,1000" />
</sharding-rule>
</sql>
<sql id="assertSelectBetweenWithSingleTable" value="SELECT * FROM t_order WHERE user_id BETWEEN %s AND %s AND order_id BETWEEN %s AND %s ORDER BY user_id, order_id">
<sharding-rule value="tbl,masterslave">
<sharding-rule value="tbl,masterslave,dbtbl">
<data parameter="10,12,1009,1108" expected="select/SelectBetweenWithSingleTable.xml" />
</sharding-rule>
<sharding-rule value="db">
......@@ -32,7 +32,7 @@
<data parameter="10,12,15,1000,1101" expected="select/SelectInWithSingleTable_1.xml" />
<data parameter="10,12,15,1309,1408" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="10,12,15,1009,1208" expected="select/SelectInWithSingleTable_0.xml" />
<data parameter="10,12,15,1009,1108" expected="select/SelectInWithSingleTable_1.xml" />
<data parameter="10,12,15,1309,1408" />
......@@ -51,7 +51,7 @@
<data parameter="100001,200102" expected="select/SelectIteratorSql_2.xml" />
<data parameter="100001,100101" expected="select/SelectIteratorSql_3.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="100000,100001" expected="select/SelectIteratorSql_0.xml" />
<data parameter="190900,190901" expected="select/SelectIteratorSql_1.xml" />
<data parameter="100000,100900" expected="select/SelectIteratorSql_2.xml" />
......@@ -62,7 +62,7 @@
</sharding-rule>
</sql>
<sql id="assertSelectNoShardingTable" value="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY i.item_id">
<sharding-rule value="tbl,db">
<sharding-rule value="tbl,db,dbtbl">
<data expected="select/SelectNoShardingTable.xml" />
</sharding-rule>
</sql>
......@@ -70,7 +70,7 @@
<sharding-rule value="tbl">
<data parameter="'init',10,11,1000,1909" expected="select/SelectLikeWithCount.xml" />
</sharding-rule>
<sharding-rule value="db,masterslave">
<sharding-rule value="db,masterslave,dbtbl">
<data parameter="'init',10,11,1000,2901" expected="select/SelectLikeWithCount.xml" />
</sharding-rule>
</sql>
......@@ -81,17 +81,22 @@
<sharding-rule value="db">
<data parameter="10,11,1000,1909" expected="select/SelectWithBindingTable.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="10,11,1009,1108" expected="select/SelectWithBindingTable.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectWithBindingTableAndConfigTable" value="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_config c ON o.status = c.status WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s AND c.status = %s ORDER BY i.item_id">
<sharding-rule value="tbl">
<data parameter="10,11,1009,1108,'init'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
<data parameter="10,11,1009,1108,'none"/>
</sharding-rule>
<sharding-rule value="masterslave">
<data parameter="10,11,1009,1108,'init_slave'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
</sharding-rule>
<sharding-rule value="dbtbl">
<data parameter="10,11,1009,1108,'init'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
</sharding-rule>
<sharding-rule>
<data parameter="10,11,1009,1108,'none"/>
</sharding-rule>
</sql>
......@@ -109,7 +114,7 @@
<sharding-rule value="tbl,db">
<data parameter="10,19,1000,1909,18" expected="select/postgresql/SelectPagingWithOffsetSql.xml" />
</sharding-rule>
<sharding-rule value="masterslave">
<sharding-rule value="masterslave,dbtbl">
<data parameter="10,19,1000,1909,38" expected="select/postgresql/SelectPagingWithOffsetSql.xml" />
</sharding-rule>
</sql>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册