提交 90944bba 编写于 作者: L liu ze jian

Support subuse cases(支持子用例)

上级 52c4cb4b
......@@ -93,7 +93,7 @@ public class StartTest {
AssertsDefinition assertsDefinition = AnalyzeConfig.analyze(each);
if (StringUtils.isNotBlank(assertsDefinition.getBaseConfig())) {
String[] dbs = StringUtils.split(assertsDefinition.getBaseConfig(),",");
String[] dbs = StringUtils.split(assertsDefinition.getBaseConfig(), ",");
for (String db : dbs) {
InItCreateSchema.addDatabase(db);
}
......@@ -141,6 +141,8 @@ public class StartTest {
InItCreateSchema.createDatabase();
InItCreateSchema.createTable();
AssertEngine.setInitialized(false);
} else {
InItCreateSchema.dropTable();
}
}
......
......@@ -179,21 +179,18 @@ public class DatabaseUtil {
*
* @param conn Jdbc connection
* @param sql sql
* @param parameters parameters
* @param parameterDefinition parameter
* @return Number of rows as a result of execution
* @throws SQLException SQL executes exceptions
*/
public static int updateUseStatementToExecuteUpdate(final Connection conn, final String sql,
final ParametersDefinition parameters) throws SQLException {
List<ParameterDefinition> parameter = parameters.getParameter();
final ParameterDefinition parameterDefinition) throws SQLException {
int result = 0;
try (Statement pstmt = conn.createStatement()) {
for (ParameterDefinition parameterDefinition : parameter) {
String newSql = sqlReplaceStatement(sql, parameterDefinition.getValueReplaces());
newSql = sqlStatement(newSql, parameterDefinition.getValues());
result = result + pstmt.executeUpdate(newSql);
}
}
return result;
}
......@@ -292,22 +289,20 @@ public class DatabaseUtil {
*
* @param conn Jdbc connection
* @param sql sql
* @param parameters parameters
* @param parameterDefinition parameter
* @return Implementation results
* @throws SQLException SQL executes exceptions
*/
public static int updateUseStatementToExecute(final Connection conn, final String sql,
final ParametersDefinition parameters) throws SQLException {
List<ParameterDefinition> parameter = parameters.getParameter();
final ParameterDefinition parameterDefinition) throws SQLException {
int result = 0;
try (Statement pstmt = conn.createStatement()) {
for (ParameterDefinition parameterDefinition : parameter) {
String newSql = sqlReplaceStatement(sql, parameterDefinition.getValueReplaces());
newSql = sqlStatement(newSql, parameterDefinition.getValues());
if (!pstmt.execute(newSql)) {
result = result + pstmt.getUpdateCount();
}
}
}
return result;
}
......@@ -317,23 +312,20 @@ public class DatabaseUtil {
*
* @param conn Jdbc connection
* @param sql sql
* @param parameters parameters
* @param parameterDefinition parameter
* @return Number of rows as a result of execution
* @throws SQLException SQL executes exceptions
* @throws ParseException ParseException
*/
public static int updateUsePreparedStatementToExecuteUpdate(final Connection conn, final String sql,
final ParametersDefinition parameters) throws SQLException, ParseException {
List<ParameterDefinition> parameter = parameters.getParameter();
final ParameterDefinition parameterDefinition) throws SQLException, ParseException {
int result = 0;
for (ParameterDefinition parameterDefinition : parameter) {
String newSql = sql.replaceAll("\\%s", "?");
newSql = sqlReplaceStatement(newSql, parameterDefinition.getValueReplaces());
try (PreparedStatement pstmt = conn.prepareStatement(newSql)) {
sqlPreparedStatement(parameterDefinition.getValues(), pstmt);
result = result + pstmt.executeUpdate();
}
}
return result;
}
......@@ -342,17 +334,14 @@ public class DatabaseUtil {
*
* @param conn Jdbc connection
* @param sql sql
* @param parameters parameters
* @param parameterDefinition parameter
* @return Implementation results
* @throws SQLException SQL executes exceptions
* @throws ParseException ParseException
*/
public static int updateUsePreparedStatementToExecute(final Connection conn, final String sql,
final ParametersDefinition parameters) throws SQLException, ParseException {
List<ParameterDefinition> parameter = parameters.getParameter();
final ParameterDefinition parameterDefinition) throws SQLException, ParseException {
int result = 0;
for (ParameterDefinition parameterDefinition : parameter) {
String newSql = sql.replaceAll("\\%s", "?");
newSql = sqlReplaceStatement(newSql, parameterDefinition.getValueReplaces());
try (PreparedStatement pstmt = conn.prepareStatement(newSql)) {
......@@ -361,7 +350,6 @@ public class DatabaseUtil {
result = result + pstmt.getUpdateCount();
}
}
}
return result;
}
......@@ -754,6 +742,8 @@ public class DatabaseUtil {
List<Map<String, String>> data = stringListEntry.getValue();
List<Map<String, String>> actualDatas = actualDatass.get(stringListEntry.getKey());
assertTrue(msg + " result set validation failed , The number of validation data and query data is not equal", data.size() == actualDatas.size());
for (int i = 0; i < data.size(); i++) {
Map<String, String> expectData = data.get(i);
Map<String, String> actualData = actualDatas.get(i);
......
......@@ -80,6 +80,7 @@ public class AnalyzeDatabase {
}
}
}
return result;
}
......
......@@ -54,9 +54,9 @@ public class AnalyzeDataset {
* @throws ParserConfigurationException ParserConfigurationException
* @throws XPathExpressionException XPathExpressionException
*/
public static DatasetDefinition analyze(final String path)
public static DatasetDefinition analyze(final String path, String tableName)
throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
return analyze(new File(path));
return analyze(new File(path), tableName);
}
/**
......@@ -69,7 +69,7 @@ public class AnalyzeDataset {
* @throws ParserConfigurationException ParserConfigurationException
* @throws XPathExpressionException XPathExpressionException
*/
public static DatasetDefinition analyze(final File file)
public static DatasetDefinition analyze(final File file, String tableName)
throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
Document doc = parseFile(file);
......@@ -83,7 +83,7 @@ public class AnalyzeDataset {
if ("metadata".equals(firstNode.getNodeName())) {
analyzeTableConfig(result, firstNode);
} else if ("dataset".equals(firstNode.getNodeName())) {
analyzeDataset(result, firstNode);
analyzeDataset(result, tableName, firstNode);
}
}
}
......@@ -153,17 +153,20 @@ public class AnalyzeDataset {
return "";
}
private static void analyzeDataset(final DatasetDefinition result, final Node firstNode) {
private static void analyzeDataset(final DatasetDefinition result, final String tableName1, final Node firstNode) {
NodeList secondNodeList = firstNode.getChildNodes();
for (int n = 0; n < secondNodeList.getLength(); n++) {
Node secondNode = secondNodeList.item(n);
if (secondNode.getNodeType() == Node.ELEMENT_NODE) {
Map<String, List<Map<String, String>>> datas = result.getDatas();
String tableName = secondNode.getNodeName();
List<Map<String, String>> datalists = datas.get(tableName);
String tableNameTmp = tableName1;
if (StringUtils.isBlank(tableNameTmp)) {
tableNameTmp = secondNode.getNodeName();
}
List<Map<String, String>> datalists = datas.get(tableNameTmp);
if (datalists == null) {
datalists = new ArrayList<>();
datas.put(tableName, datalists);
datas.put(tableNameTmp, datalists);
}
NamedNodeMap attrMap = secondNode.getAttributes();
......
......@@ -17,14 +17,20 @@
package io.shardingjdbc.dbtest.config.bean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import java.util.ArrayList;
import java.util.List;
@Getter
@AllArgsConstructor
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class AssertDDLDefinition implements AssertDefinition {
......@@ -43,6 +49,9 @@ public class AssertDDLDefinition implements AssertDefinition {
@XmlAttribute(name = "expected-data-file")
private String expectedDataFile;
@XmlAttribute(name = "database-config")
private String databaseConfig;
@XmlAttribute(name = "sql")
private String sql;
......@@ -52,4 +61,6 @@ public class AssertDDLDefinition implements AssertDefinition {
@XmlElement(name = "parameter")
private ParameterDefinition parameter = new ParameterDefinition();
@XmlElement(name = "subAssert")
private List<AssertSubDefinition> subAsserts = new ArrayList<>();
}
......@@ -17,14 +17,20 @@
package io.shardingjdbc.dbtest.config.bean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import java.util.ArrayList;
import java.util.List;
@Getter
@AllArgsConstructor
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class AssertDMLDefinition implements AssertDefinition {
......@@ -40,15 +46,21 @@ public class AssertDMLDefinition implements AssertDefinition {
@XmlAttribute(name = "expected-update")
private Integer expectedUpdate;
@XmlAttribute(name = "database-config")
private String databaseConfig;
@XmlAttribute(name = "sql")
private String sql;
@XmlAttribute(name = "expected-sql")
private String expectedSql;
@XmlElement(name = "parameters")
private ParametersDefinition parameters;
@XmlElement(name = "parameter")
private ParameterDefinition parameter = new ParameterDefinition();
@XmlElement(name = "expected-parameter")
private ParameterDefinition expectedParameter;
private ParameterDefinition expectedParameter = new ParameterDefinition();
@XmlElement(name = "subAssert")
private List<AssertSubDefinition> subAsserts = new ArrayList<>();
}
......@@ -22,9 +22,16 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Getter
@AllArgsConstructor
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class AssertDQLDefinition implements AssertDefinition {
......@@ -37,10 +44,15 @@ public class AssertDQLDefinition implements AssertDefinition {
@XmlAttribute(name = "base-config")
private String baseConfig;
@XmlAttribute(name = "database-config")
private String databaseConfig;
@XmlAttribute(name = "sql")
private String sql;
@XmlElement(name = "parameter")
private ParameterDefinition parameters = new ParameterDefinition();
private ParameterDefinition parameter = new ParameterDefinition();
@XmlElement(name = "subAssert")
private List<AssertSubDefinition> subAsserts = new ArrayList<>();
}
/*
* 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 io.shardingjdbc.dbtest.config.bean;
import lombok.Getter;
import javax.xml.bind.annotation.*;
@Getter
@XmlAccessorType(XmlAccessType.FIELD)
public class AssertSubDefinition {
@XmlAttribute(name = "base-config")
private String baseConfig;
@XmlAttribute(name = "expected-data-file")
private String expectedDataFile;
@XmlAttribute(name = "database-config")
private String databaseConfig;
@XmlElement(name = "parameter")
private ParameterDefinition parameter;
@XmlElement(name = "expected-parameter")
private ParameterDefinition expectedParameter;
@XmlAttribute(name = "expected-update")
private Integer expectedUpdate;
}
......@@ -39,6 +39,9 @@ public class AssertsDefinition {
@XmlAttribute(name = "base-config")
private String baseConfig;
@XmlAttribute(name = "database-config")
private String databaseConfig;
@XmlAttribute(name = "init-data-file")
private String initDataFile;
......
......@@ -353,7 +353,8 @@ public class InItCreateSchema {
}
} catch (SQLException | ParserConfigurationException | IOException | XPathExpressionException | SAXException e) {
e.printStackTrace();
// The table may not exist at the time of deletion(删除时可能表不存在),这个错误可以忽略
//e.printStackTrace();
} finally {
if (sr != null) {
sr.close();
......@@ -395,7 +396,8 @@ public class InItCreateSchema {
}
} catch (SQLException | ParserConfigurationException | IOException | XPathExpressionException | SAXException e) {
e.printStackTrace();
// The table may not exist at the time of deletion(删除时可能表不存在),这个错误可以忽略
//e.printStackTrace();
} finally {
if (sr != null) {
sr.close();
......@@ -439,7 +441,7 @@ public class InItCreateSchema {
}
/**
* @param paths paths
*
* @return
*/
public static Set<DatabaseType> getDatabaseSchema() throws IOException {
......@@ -500,4 +502,28 @@ public class InItCreateSchema {
}
return DatabaseType.H2;
}
/**
* Get the database type enumeration.
*
* @param typeStrs String database type
* @return database enumeration
*/
public static List<DatabaseType> getDatabaseTypes(final String typeStrs) {
if (StringUtils.isBlank(typeStrs)) {
return Arrays.asList(DatabaseType.values());
}
String[] types = StringUtils.split(typeStrs, ",");
List<DatabaseType> databaseTypes = new ArrayList<>();
for (String eachType : types) {
DatabaseType[] databaseTypeSrcs = DatabaseType.values();
for (DatabaseType each : databaseTypeSrcs) {
if (eachType.equalsIgnoreCase(each.name())) {
databaseTypes.add(each);
}
}
}
return databaseTypes;
}
}
<asserts sharding-rule-config="./config/test" init-data-file="./init" base-config="db" database="h2,mysql,oracle,sqlserver,postgresql">
<!--<assertDML id="assertInsertWithAllPlaceholders" expected-update="9"
sql="assertInsertWithAllPlaceholders"
expected-sql="assertSelectEqualsWithSingleTableExpected"
expected-data-file="./asserts/dml/insert/insert.xml">
<parameters>
<assertDML id="assertInsertWithAllPlaceholders" expected-update="9"
sql="assertInsertWithAllPlaceholders" base-config="db"
expected-sql="assertSelectEqualsWithSingleTable"
>
<subAssert expected-data-file="db_1.xml">
<parameter>
<value value="1" type="int"/>
<value value="1" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="1" type="int"/>
<value value="1" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_2.xml">
<parameter>
<value value="2" type="int"/>
<value value="2" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="2" type="int"/>
<value value="2" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_3.xml">
<parameter>
<value value="3" type="int"/>
<value value="3" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="3" type="int"/>
<value value="3" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_4.xml">
<parameter>
<value value="4" type="int"/>
<value value="4" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="4" type="int"/>
<value value="4" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_5.xml">
<parameter>
<value value="5" type="int"/>
<value value="5" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="5" type="int"/>
<value value="5" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_6.xml">
<parameter>
<value value="6" type="int"/>
<value value="6" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="6" type="int"/>
<value value="6" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_7.xml">
<parameter>
<value value="7" type="int"/>
<value value="7" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="7" type="int"/>
<value value="7" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_8.xml">
<parameter>
<value value="8" type="int"/>
<value value="8" type="int"/>
<value value="insert"/>
</parameter>
<expected-parameter>
<value value="8" type="int"/>
<value value="8" type="int"/>
</expected-parameter>
</subAssert>
<subAssert expected-data-file="db_9.xml">
<parameter>
<value value="9" type="int"/>
<value value="9" type="int"/>
<value value="insert"/>
</parameter>
</parameters>
<expected-parameter>
<value value="1" type="int"/>
<value value="2" type="int"/>
<value value="3" type="int"/>
<value value="4" type="int"/>
<value value="5" type="int"/>
<value value="6" type="int"/>
<value value="7" type="int"/>
<value value="8" type="int"/>
<value value="9" type="int"/>
<value value="1" type="int"/>
<value value="2" type="int"/>
<value value="3" type="int"/>
<value value="4" type="int"/>
<value value="5" type="int"/>
<value value="6" type="int"/>
<value value="7" type="int"/>
<value value="8" type="int"/>
<value value="9" type="int"/>
</expected-parameter>
</subAssert>
</assertDML>
<assertDML id="assertInsertWithoutPlaceholder" expected-update="9"
<!--<assertDML id="assertInsertWithoutPlaceholder" expected-update="9"
sql="assertInsertWithPartialPlaceholder"
expected-sql="assertSelectEqualsWithSingleTableExpected"
expected-data-file="./asserts/dml/insert/insert.xml">
......
<init>
<dataset>
<t_order order_id="10" user_id="10" status="insert" />
</dataset>
</init>
<init>
<dataset>
<t_order order_id="1" user_id="1" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="2" user_id="2" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="3" user_id="3" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="4" user_id="4" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="5" user_id="5" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="6" user_id="6" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="7" user_id="7" status="insert" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="8" user_id="8" status="insert" />
</dataset>
</init>
<init>
<dataset>
<t_order order_id="9" user_id="9" status="insert" />
</dataset>
</init>
\ No newline at end of file
<asserts sharding-rule-config="./config/test" init-data-file="./init" base-config="db" database="h2,mysql,oracle,sqlserver,postgresql">
<assertDDL id="assertCreateTable" init-sql="createTLog" clean-sql="dropTLog" expected-update="1" sql="assertAlterTable"
table="t_log"
expected-data-file="update.xml">
</assertDDL>
</asserts>
\ No newline at end of file
<init>
<metadata>
<table name="t_log">
<cloumn name="id" type="integer" />
<cloumn name="status" type="varchar"/>
<cloumn name="name" type="varchar"/>
</table>
</metadata>
</init>
\ No newline at end of file
shardingRule:
defaultDataSourceName: db_0
defaultKeyGeneratorClass: io.shardingjdbc.dbtest.core.yaml.fixture.IncrementKeyGenerator
tables:
t_order:
actualDataNodes: db_${0..9}.t_order
databaseStrategy:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
tableStrategy:
inline:
shardingColumn: id
algorithmExpression: t_order
t_order_item:
actualDataNodes: db_${0..9}.t_order_item
keyGeneratorColumnName: order_item_id
keyGeneratorClass: io.shardingjdbc.dbtest.core.yaml.fixture.DecrementKeyGenerator
#绑定表中其余的表的策略与第一张表的策略相同
databaseStrategy:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
tableStrategy:
inline:
shardingColumn: id
algorithmExpression: t_order_item
bindingTables:
- t_order,t_order_item
#默认数据库分片策略
defaultDatabaseStrategy:
complex:
shardingColumns: order_id, user_id
algorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.MultiAlgorithm
defaultTableStrategy:
complex:
shardingColumns: id, order_id
algorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.MultiAlgorithm
props:
sql.show: true
\ No newline at end of file
shardingRule:
defaultDataSourceName: dbtbl_0
defaultKeyGeneratorClass: io.shardingjdbc.dbtest.core.yaml.fixture.IncrementKeyGenerator
tables:
t_order:
actualDataNodes: dbtbl_${0..9}.t_order_${0..9}
databaseStrategy:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_${order_id % 2}
t_order_item:
actualDataNodes: dbtbl_${0..9}.t_order_item_${0..9}
keyGeneratorColumnName: order_item_id
keyGeneratorClass: io.shardingjdbc.dbtest.core.yaml.fixture.DecrementKeyGenerator
#绑定表中其余的表的策略与第一张表的策略相同
databaseStrategy:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_item_${order_id % 2}
bindingTables:
- t_order,t_order_item
#默认数据库分片策略
defaultDatabaseStrategy:
complex:
shardingColumns: order_id, user_id
algorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.MultiAlgorithm
defaultTableStrategy:
complex:
shardingColumns: order_id
algorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.MultiAlgorithm
props:
sql.show: true
\ No newline at end of file
shardingRule:
defaultDataSourceName: nullable_0
defaultKeyGeneratorClass: io.shardingjdbc.dbtest.core.yaml.fixture.IncrementKeyGenerator
tables:
t_order:
actualDataNodes: nullable_${0..9}.t_order
databaseStrategy:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
bindingTables:
- t_order
props:
sql.show: true
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1000" user_id="10" status="init"/>
<t_order order_id="1001" user_id="10" status="init"/>
<t_order order_id="2000" user_id="20" status="init"/>
<t_order order_id="2001" user_id="20" status="init"/>
<t_order_item item_id="100001" order_id="1000" user_id="10" status="init"/>
<t_order_item item_id="100002" order_id="1000" user_id="10" status="init"/>
<t_order_item item_id="100101" order_id="1001" user_id="10" status="init"/>
<t_order_item item_id="100102" order_id="1001" user_id="10" status="init"/>
<t_order_item item_id="200001" order_id="2000" user_id="20" status="init"/>
<t_order_item item_id="200002" order_id="2000" user_id="20" status="init"/>
<t_order_item item_id="200101" order_id="2001" user_id="20" status="init"/>
<t_order_item item_id="200102" order_id="2001" user_id="20" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1100" user_id="11" status="init"/>
<t_order order_id="1101" user_id="11" status="init"/>
<t_order order_id="2100" user_id="21" status="init"/>
<t_order order_id="2101" user_id="21" status="init"/>
<t_order_item item_id="110001" order_id="1100" user_id="11" status="init"/>
<t_order_item item_id="110002" order_id="1100" user_id="11" status="init"/>
<t_order_item item_id="110101" order_id="1101" user_id="11" status="init"/>
<t_order_item item_id="110102" order_id="1101" user_id="11" status="init"/>
<t_order_item item_id="210001" order_id="2100" user_id="21" status="init"/>
<t_order_item item_id="210002" order_id="2100" user_id="21" status="init"/>
<t_order_item item_id="210101" order_id="2101" user_id="21" status="init"/>
<t_order_item item_id="210102" order_id="2101" user_id="21" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1200" user_id="12" status="init"/>
<t_order order_id="1201" user_id="12" status="init"/>
<t_order order_id="2200" user_id="22" status="init"/>
<t_order order_id="2201" user_id="22" status="init"/>
<t_order_item item_id="120001" order_id="1200" user_id="12" status="init"/>
<t_order_item item_id="120002" order_id="1200" user_id="12" status="init"/>
<t_order_item item_id="120101" order_id="1201" user_id="12" status="init"/>
<t_order_item item_id="120102" order_id="1201" user_id="12" status="init"/>
<t_order_item item_id="220001" order_id="2200" user_id="22" status="init"/>
<t_order_item item_id="220002" order_id="2200" user_id="22" status="init"/>
<t_order_item item_id="220101" order_id="2201" user_id="22" status="init"/>
<t_order_item item_id="220102" order_id="2201" user_id="22" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1300" user_id="13" status="init"/>
<t_order order_id="1301" user_id="13" status="init"/>
<t_order order_id="2300" user_id="23" status="init"/>
<t_order order_id="2301" user_id="23" status="init"/>
<t_order_item item_id="130001" order_id="1300" user_id="13" status="init"/>
<t_order_item item_id="130002" order_id="1300" user_id="13" status="init"/>
<t_order_item item_id="130101" order_id="1301" user_id="13" status="init"/>
<t_order_item item_id="130102" order_id="1301" user_id="13" status="init"/>
<t_order_item item_id="230001" order_id="2300" user_id="23" status="init"/>
<t_order_item item_id="230002" order_id="2300" user_id="23" status="init"/>
<t_order_item item_id="230101" order_id="2301" user_id="23" status="init"/>
<t_order_item item_id="230102" order_id="2301" user_id="23" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1400" user_id="14" status="init"/>
<t_order order_id="1401" user_id="14" status="init"/>
<t_order order_id="2400" user_id="24" status="init"/>
<t_order order_id="2401" user_id="24" status="init"/>
<t_order_item item_id="140001" order_id="1400" user_id="14" status="init"/>
<t_order_item item_id="140002" order_id="1400" user_id="14" status="init"/>
<t_order_item item_id="140101" order_id="1401" user_id="14" status="init"/>
<t_order_item item_id="140102" order_id="1401" user_id="14" status="init"/>
<t_order_item item_id="240001" order_id="2400" user_id="24" status="init"/>
<t_order_item item_id="240002" order_id="2400" user_id="24" status="init"/>
<t_order_item item_id="240101" order_id="2401" user_id="24" status="init"/>
<t_order_item item_id="240102" order_id="2401" user_id="24" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1500" user_id="15" status="init"/>
<t_order order_id="1501" user_id="15" status="init"/>
<t_order order_id="2500" user_id="25" status="init"/>
<t_order order_id="2501" user_id="25" status="init"/>
<t_order_item item_id="150001" order_id="1500" user_id="15" status="init"/>
<t_order_item item_id="150002" order_id="1500" user_id="15" status="init"/>
<t_order_item item_id="150101" order_id="1501" user_id="15" status="init"/>
<t_order_item item_id="150102" order_id="1501" user_id="15" status="init"/>
<t_order_item item_id="250001" order_id="2500" user_id="25" status="init"/>
<t_order_item item_id="250002" order_id="2500" user_id="25" status="init"/>
<t_order_item item_id="250101" order_id="2501" user_id="25" status="init"/>
<t_order_item item_id="250102" order_id="2501" user_id="25" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1600" user_id="16" status="init"/>
<t_order order_id="1601" user_id="16" status="init"/>
<t_order order_id="2600" user_id="26" status="init"/>
<t_order order_id="2601" user_id="26" status="init"/>
<t_order_item item_id="160001" order_id="1600" user_id="16" status="init"/>
<t_order_item item_id="160002" order_id="1600" user_id="16" status="init"/>
<t_order_item item_id="160101" order_id="1601" user_id="16" status="init"/>
<t_order_item item_id="160102" order_id="1601" user_id="16" status="init"/>
<t_order_item item_id="260001" order_id="2600" user_id="26" status="init"/>
<t_order_item item_id="260002" order_id="2600" user_id="26" status="init"/>
<t_order_item item_id="260101" order_id="2601" user_id="26" status="init"/>
<t_order_item item_id="260102" order_id="2601" user_id="26" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1700" user_id="17" status="init"/>
<t_order order_id="1701" user_id="17" status="init"/>
<t_order order_id="2700" user_id="27" status="init"/>
<t_order order_id="2701" user_id="27" status="init"/>
<t_order_item item_id="170001" order_id="1700" user_id="17" status="init"/>
<t_order_item item_id="170002" order_id="1700" user_id="17" status="init"/>
<t_order_item item_id="170101" order_id="1701" user_id="17" status="init"/>
<t_order_item item_id="170102" order_id="1701" user_id="17" status="init"/>
<t_order_item item_id="270001" order_id="2700" user_id="27" status="init"/>
<t_order_item item_id="270002" order_id="2700" user_id="27" status="init"/>
<t_order_item item_id="270101" order_id="2701" user_id="27" status="init"/>
<t_order_item item_id="270102" order_id="2701" user_id="27" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1800" user_id="18" status="init"/>
<t_order order_id="1801" user_id="18" status="init"/>
<t_order order_id="2800" user_id="28" status="init"/>
<t_order order_id="2801" user_id="28" status="init"/>
<t_order_item item_id="180001" order_id="1800" user_id="18" status="init"/>
<t_order_item item_id="180002" order_id="1800" user_id="18" status="init"/>
<t_order_item item_id="180101" order_id="1801" user_id="18" status="init"/>
<t_order_item item_id="180102" order_id="1801" user_id="18" status="init"/>
<t_order_item item_id="280001" order_id="2800" user_id="28" status="init"/>
<t_order_item item_id="280002" order_id="2800" user_id="28" status="init"/>
<t_order_item item_id="280101" order_id="2801" user_id="28" status="init"/>
<t_order_item item_id="280102" order_id="2801" user_id="28" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1900" user_id="19" status="init"/>
<t_order order_id="1901" user_id="19" status="init"/>
<t_order order_id="2900" user_id="29" status="init"/>
<t_order order_id="2901" user_id="29" status="init"/>
<t_order_item item_id="190001" order_id="1900" user_id="19" status="init"/>
<t_order_item item_id="190002" order_id="1900" user_id="19" status="init"/>
<t_order_item item_id="190101" order_id="1901" user_id="19" status="init"/>
<t_order_item item_id="190102" order_id="1901" user_id="19" status="init"/>
<t_order_item item_id="290001" order_id="2900" user_id="29" status="init"/>
<t_order_item item_id="290002" order_id="2900" user_id="29" status="init"/>
<t_order_item item_id="290101" order_id="2901" user_id="29" status="init"/>
<t_order_item item_id="290102" order_id="2901" user_id="29" status="init"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1000" user_id="10" status="init"/>
<t_order_1 order_id="1001" user_id="10" status="init"/>
<t_order_2 order_id="1002" user_id="10" status="init"/>
<t_order_3 order_id="1003" user_id="10" status="init"/>
<t_order_4 order_id="1004" user_id="10" status="init"/>
<t_order_5 order_id="1005" user_id="10" status="init"/>
<t_order_6 order_id="1006" user_id="10" status="init"/>
<t_order_7 order_id="1007" user_id="10" status="init"/>
<t_order_8 order_id="1008" user_id="10" status="init"/>
<t_order_9 order_id="1009" user_id="10" status="init"/>
<t_order_item_0 item_id="100000" order_id="1000" user_id="10" status="init"/>
<t_order_item_0 item_id="100001" order_id="1000" user_id="10" status="init"/>
<t_order_item_1 item_id="100100" order_id="1001" user_id="10" status="init"/>
<t_order_item_1 item_id="100101" order_id="1001" user_id="10" status="init"/>
<t_order_item_2 item_id="100200" order_id="1002" user_id="10" status="init"/>
<t_order_item_2 item_id="100201" order_id="1002" user_id="10" status="init"/>
<t_order_item_3 item_id="100300" order_id="1003" user_id="10" status="init"/>
<t_order_item_3 item_id="100301" order_id="1003" user_id="10" status="init"/>
<t_order_item_4 item_id="100400" order_id="1004" user_id="10" status="init"/>
<t_order_item_4 item_id="100401" order_id="1004" user_id="10" status="init"/>
<t_order_item_5 item_id="100500" order_id="1005" user_id="10" status="init"/>
<t_order_item_5 item_id="100501" order_id="1005" user_id="10" status="init"/>
<t_order_item_6 item_id="100600" order_id="1006" user_id="10" status="init"/>
<t_order_item_6 item_id="100601" order_id="1006" user_id="10" status="init"/>
<t_order_item_7 item_id="100700" order_id="1007" user_id="10" status="init"/>
<t_order_item_7 item_id="100701" order_id="1007" user_id="10" status="init"/>
<t_order_item_8 item_id="100800" order_id="1008" user_id="10" status="init"/>
<t_order_item_8 item_id="100801" order_id="1008" user_id="10" status="init"/>
<t_order_item_9 item_id="100900" order_id="1009" user_id="10" status="init"/>
<t_order_item_9 item_id="100901" order_id="1009" user_id="10" status="init"/>
<t_config id="1" status="init"/>
<t_global id="1" status="global"/>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1100" user_id="11" status="init" />
<t_order_1 order_id="1101" user_id="11" status="init" />
<t_order_2 order_id="1102" user_id="11" status="init" />
<t_order_3 order_id="1103" user_id="11" status="init" />
<t_order_4 order_id="1104" user_id="11" status="init" />
<t_order_5 order_id="1105" user_id="11" status="init" />
<t_order_6 order_id="1106" user_id="11" status="init" />
<t_order_7 order_id="1107" user_id="11" status="init" />
<t_order_8 order_id="1108" user_id="11" status="init" />
<t_order_9 order_id="1109" user_id="11" status="init" />
<t_order_item_0 item_id="110000" order_id="1100" user_id="11" status="init" />
<t_order_item_0 item_id="110001" order_id="1100" user_id="11" status="init" />
<t_order_item_1 item_id="110100" order_id="1101" user_id="11" status="init" />
<t_order_item_1 item_id="110101" order_id="1101" user_id="11" status="init" />
<t_order_item_2 item_id="110200" order_id="1102" user_id="11" status="init" />
<t_order_item_2 item_id="110201" order_id="1102" user_id="11" status="init" />
<t_order_item_3 item_id="110300" order_id="1103" user_id="11" status="init" />
<t_order_item_3 item_id="110301" order_id="1103" user_id="11" status="init" />
<t_order_item_4 item_id="110400" order_id="1104" user_id="11" status="init" />
<t_order_item_4 item_id="110401" order_id="1104" user_id="11" status="init" />
<t_order_item_5 item_id="110500" order_id="1105" user_id="11" status="init" />
<t_order_item_5 item_id="110501" order_id="1105" user_id="11" status="init" />
<t_order_item_6 item_id="110600" order_id="1106" user_id="11" status="init" />
<t_order_item_6 item_id="110601" order_id="1106" user_id="11" status="init" />
<t_order_item_7 item_id="110700" order_id="1107" user_id="11" status="init" />
<t_order_item_7 item_id="110701" order_id="1107" user_id="11" status="init" />
<t_order_item_8 item_id="110800" order_id="1108" user_id="11" status="init" />
<t_order_item_8 item_id="110801" order_id="1108" user_id="11" status="init" />
<t_order_item_9 item_id="110900" order_id="1109" user_id="11" status="init" />
<t_order_item_9 item_id="110901" order_id="1109" user_id="11" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1200" user_id="12" status="init" />
<t_order_1 order_id="1201" user_id="12" status="init" />
<t_order_2 order_id="1202" user_id="12" status="init" />
<t_order_3 order_id="1203" user_id="12" status="init" />
<t_order_4 order_id="1204" user_id="12" status="init" />
<t_order_5 order_id="1205" user_id="12" status="init" />
<t_order_6 order_id="1206" user_id="12" status="init" />
<t_order_7 order_id="1207" user_id="12" status="init" />
<t_order_8 order_id="1208" user_id="12" status="init" />
<t_order_9 order_id="1209" user_id="12" status="init" />
<t_order_item_0 item_id="120000" order_id="1200" user_id="12" status="init" />
<t_order_item_0 item_id="120001" order_id="1200" user_id="12" status="init" />
<t_order_item_1 item_id="120100" order_id="1201" user_id="12" status="init" />
<t_order_item_1 item_id="120101" order_id="1201" user_id="12" status="init" />
<t_order_item_2 item_id="120200" order_id="1202" user_id="12" status="init" />
<t_order_item_2 item_id="120201" order_id="1202" user_id="12" status="init" />
<t_order_item_3 item_id="120300" order_id="1203" user_id="12" status="init" />
<t_order_item_3 item_id="120301" order_id="1203" user_id="12" status="init" />
<t_order_item_4 item_id="120400" order_id="1204" user_id="12" status="init" />
<t_order_item_4 item_id="120401" order_id="1204" user_id="12" status="init" />
<t_order_item_5 item_id="120500" order_id="1205" user_id="12" status="init" />
<t_order_item_5 item_id="120501" order_id="1205" user_id="12" status="init" />
<t_order_item_6 item_id="120600" order_id="1206" user_id="12" status="init" />
<t_order_item_6 item_id="120601" order_id="1206" user_id="12" status="init" />
<t_order_item_7 item_id="120700" order_id="1207" user_id="12" status="init" />
<t_order_item_7 item_id="120701" order_id="1207" user_id="12" status="init" />
<t_order_item_8 item_id="120800" order_id="1208" user_id="12" status="init" />
<t_order_item_8 item_id="120801" order_id="1208" user_id="12" status="init" />
<t_order_item_9 item_id="120900" order_id="1209" user_id="12" status="init" />
<t_order_item_9 item_id="120901" order_id="1209" user_id="12" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1300" user_id="13" status="init" />
<t_order_1 order_id="1301" user_id="13" status="init" />
<t_order_2 order_id="1302" user_id="13" status="init" />
<t_order_3 order_id="1303" user_id="13" status="init" />
<t_order_4 order_id="1304" user_id="13" status="init" />
<t_order_5 order_id="1305" user_id="13" status="init" />
<t_order_6 order_id="1306" user_id="13" status="init" />
<t_order_7 order_id="1307" user_id="13" status="init" />
<t_order_8 order_id="1308" user_id="13" status="init" />
<t_order_9 order_id="1309" user_id="13" status="init" />
<t_order_item_0 item_id="130000" order_id="1300" user_id="13" status="init" />
<t_order_item_0 item_id="130001" order_id="1300" user_id="13" status="init" />
<t_order_item_1 item_id="130100" order_id="1301" user_id="13" status="init" />
<t_order_item_1 item_id="130101" order_id="1301" user_id="13" status="init" />
<t_order_item_2 item_id="130200" order_id="1302" user_id="13" status="init" />
<t_order_item_2 item_id="130201" order_id="1302" user_id="13" status="init" />
<t_order_item_3 item_id="130300" order_id="1303" user_id="13" status="init" />
<t_order_item_3 item_id="130301" order_id="1303" user_id="13" status="init" />
<t_order_item_4 item_id="130400" order_id="1304" user_id="13" status="init" />
<t_order_item_4 item_id="130401" order_id="1304" user_id="13" status="init" />
<t_order_item_5 item_id="130500" order_id="1305" user_id="13" status="init" />
<t_order_item_5 item_id="130501" order_id="1305" user_id="13" status="init" />
<t_order_item_6 item_id="130600" order_id="1306" user_id="13" status="init" />
<t_order_item_6 item_id="130601" order_id="1306" user_id="13" status="init" />
<t_order_item_7 item_id="130700" order_id="1307" user_id="13" status="init" />
<t_order_item_7 item_id="130701" order_id="1307" user_id="13" status="init" />
<t_order_item_8 item_id="130800" order_id="1308" user_id="13" status="init" />
<t_order_item_8 item_id="130801" order_id="1308" user_id="13" status="init" />
<t_order_item_9 item_id="130900" order_id="1309" user_id="13" status="init" />
<t_order_item_9 item_id="130901" order_id="1309" user_id="13" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1400" user_id="14" status="init" />
<t_order_1 order_id="1401" user_id="14" status="init" />
<t_order_2 order_id="1402" user_id="14" status="init" />
<t_order_3 order_id="1403" user_id="14" status="init" />
<t_order_4 order_id="1404" user_id="14" status="init" />
<t_order_5 order_id="1405" user_id="14" status="init" />
<t_order_6 order_id="1406" user_id="14" status="init" />
<t_order_7 order_id="1407" user_id="14" status="init" />
<t_order_8 order_id="1408" user_id="14" status="init" />
<t_order_9 order_id="1409" user_id="14" status="init" />
<t_order_item_0 item_id="140000" order_id="1400" user_id="14" status="init" />
<t_order_item_0 item_id="140001" order_id="1400" user_id="14" status="init" />
<t_order_item_1 item_id="140100" order_id="1401" user_id="14" status="init" />
<t_order_item_1 item_id="140101" order_id="1401" user_id="14" status="init" />
<t_order_item_2 item_id="140200" order_id="1402" user_id="14" status="init" />
<t_order_item_2 item_id="140201" order_id="1402" user_id="14" status="init" />
<t_order_item_3 item_id="140300" order_id="1403" user_id="14" status="init" />
<t_order_item_3 item_id="140301" order_id="1403" user_id="14" status="init" />
<t_order_item_4 item_id="140400" order_id="1404" user_id="14" status="init" />
<t_order_item_4 item_id="140401" order_id="1404" user_id="14" status="init" />
<t_order_item_5 item_id="140500" order_id="1405" user_id="14" status="init" />
<t_order_item_5 item_id="140501" order_id="1405" user_id="14" status="init" />
<t_order_item_6 item_id="140600" order_id="1406" user_id="14" status="init" />
<t_order_item_6 item_id="140601" order_id="1406" user_id="14" status="init" />
<t_order_item_7 item_id="140700" order_id="1407" user_id="14" status="init" />
<t_order_item_7 item_id="140701" order_id="1407" user_id="14" status="init" />
<t_order_item_8 item_id="140800" order_id="1408" user_id="14" status="init" />
<t_order_item_8 item_id="140801" order_id="1408" user_id="14" status="init" />
<t_order_item_9 item_id="140900" order_id="1409" user_id="14" status="init" />
<t_order_item_9 item_id="140901" order_id="1409" user_id="14" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1500" user_id="15" status="init" />
<t_order_1 order_id="1501" user_id="15" status="init" />
<t_order_2 order_id="1502" user_id="15" status="init" />
<t_order_3 order_id="1503" user_id="15" status="init" />
<t_order_4 order_id="1504" user_id="15" status="init" />
<t_order_5 order_id="1505" user_id="15" status="init" />
<t_order_6 order_id="1506" user_id="15" status="init" />
<t_order_7 order_id="1507" user_id="15" status="init" />
<t_order_8 order_id="1508" user_id="15" status="init" />
<t_order_9 order_id="1509" user_id="15" status="init" />
<t_order_item_0 item_id="150000" order_id="1500" user_id="15" status="init" />
<t_order_item_0 item_id="150001" order_id="1500" user_id="15" status="init" />
<t_order_item_1 item_id="150100" order_id="1501" user_id="15" status="init" />
<t_order_item_1 item_id="150101" order_id="1501" user_id="15" status="init" />
<t_order_item_2 item_id="150200" order_id="1502" user_id="15" status="init" />
<t_order_item_2 item_id="150201" order_id="1502" user_id="15" status="init" />
<t_order_item_3 item_id="150300" order_id="1503" user_id="15" status="init" />
<t_order_item_3 item_id="150301" order_id="1503" user_id="15" status="init" />
<t_order_item_4 item_id="150400" order_id="1504" user_id="15" status="init" />
<t_order_item_4 item_id="150401" order_id="1504" user_id="15" status="init" />
<t_order_item_5 item_id="150500" order_id="1505" user_id="15" status="init" />
<t_order_item_5 item_id="150501" order_id="1505" user_id="15" status="init" />
<t_order_item_6 item_id="150600" order_id="1506" user_id="15" status="init" />
<t_order_item_6 item_id="150601" order_id="1506" user_id="15" status="init" />
<t_order_item_7 item_id="150700" order_id="1507" user_id="15" status="init" />
<t_order_item_7 item_id="150701" order_id="1507" user_id="15" status="init" />
<t_order_item_8 item_id="150800" order_id="1508" user_id="15" status="init" />
<t_order_item_8 item_id="150801" order_id="1508" user_id="15" status="init" />
<t_order_item_9 item_id="150900" order_id="1509" user_id="15" status="init" />
<t_order_item_9 item_id="150901" order_id="1509" user_id="15" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1600" user_id="16" status="init" />
<t_order_1 order_id="1601" user_id="16" status="init" />
<t_order_2 order_id="1602" user_id="16" status="init" />
<t_order_3 order_id="1603" user_id="16" status="init" />
<t_order_4 order_id="1604" user_id="16" status="init" />
<t_order_5 order_id="1605" user_id="16" status="init" />
<t_order_6 order_id="1606" user_id="16" status="init" />
<t_order_7 order_id="1607" user_id="16" status="init" />
<t_order_8 order_id="1608" user_id="16" status="init" />
<t_order_9 order_id="1609" user_id="16" status="init" />
<t_order_item_0 item_id="160000" order_id="1600" user_id="16" status="init" />
<t_order_item_0 item_id="160001" order_id="1600" user_id="16" status="init" />
<t_order_item_1 item_id="160100" order_id="1601" user_id="16" status="init" />
<t_order_item_1 item_id="160101" order_id="1601" user_id="16" status="init" />
<t_order_item_2 item_id="160200" order_id="1602" user_id="16" status="init" />
<t_order_item_2 item_id="160201" order_id="1602" user_id="16" status="init" />
<t_order_item_3 item_id="160300" order_id="1603" user_id="16" status="init" />
<t_order_item_3 item_id="160301" order_id="1603" user_id="16" status="init" />
<t_order_item_4 item_id="160400" order_id="1604" user_id="16" status="init" />
<t_order_item_4 item_id="160401" order_id="1604" user_id="16" status="init" />
<t_order_item_5 item_id="160500" order_id="1605" user_id="16" status="init" />
<t_order_item_5 item_id="160501" order_id="1605" user_id="16" status="init" />
<t_order_item_6 item_id="160600" order_id="1606" user_id="16" status="init" />
<t_order_item_6 item_id="160601" order_id="1606" user_id="16" status="init" />
<t_order_item_7 item_id="160700" order_id="1607" user_id="16" status="init" />
<t_order_item_7 item_id="160701" order_id="1607" user_id="16" status="init" />
<t_order_item_8 item_id="160800" order_id="1608" user_id="16" status="init" />
<t_order_item_8 item_id="160801" order_id="1608" user_id="16" status="init" />
<t_order_item_9 item_id="160900" order_id="1609" user_id="16" status="init" />
<t_order_item_9 item_id="160901" order_id="1609" user_id="16" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1700" user_id="17" status="init" />
<t_order_1 order_id="1701" user_id="17" status="init" />
<t_order_2 order_id="1702" user_id="17" status="init" />
<t_order_3 order_id="1703" user_id="17" status="init" />
<t_order_4 order_id="1704" user_id="17" status="init" />
<t_order_5 order_id="1705" user_id="17" status="init" />
<t_order_6 order_id="1706" user_id="17" status="init" />
<t_order_7 order_id="1707" user_id="17" status="init" />
<t_order_8 order_id="1708" user_id="17" status="init" />
<t_order_9 order_id="1709" user_id="17" status="init" />
<t_order_item_0 item_id="170000" order_id="1700" user_id="17" status="init" />
<t_order_item_0 item_id="170001" order_id="1700" user_id="17" status="init" />
<t_order_item_1 item_id="170100" order_id="1701" user_id="17" status="init" />
<t_order_item_1 item_id="170101" order_id="1701" user_id="17" status="init" />
<t_order_item_2 item_id="170200" order_id="1702" user_id="17" status="init" />
<t_order_item_2 item_id="170201" order_id="1702" user_id="17" status="init" />
<t_order_item_3 item_id="170300" order_id="1703" user_id="17" status="init" />
<t_order_item_3 item_id="170301" order_id="1703" user_id="17" status="init" />
<t_order_item_4 item_id="170400" order_id="1704" user_id="17" status="init" />
<t_order_item_4 item_id="170401" order_id="1704" user_id="17" status="init" />
<t_order_item_5 item_id="170500" order_id="1705" user_id="17" status="init" />
<t_order_item_5 item_id="170501" order_id="1705" user_id="17" status="init" />
<t_order_item_6 item_id="170600" order_id="1706" user_id="17" status="init" />
<t_order_item_6 item_id="170601" order_id="1706" user_id="17" status="init" />
<t_order_item_7 item_id="170700" order_id="1707" user_id="17" status="init" />
<t_order_item_7 item_id="170701" order_id="1707" user_id="17" status="init" />
<t_order_item_8 item_id="170800" order_id="1708" user_id="17" status="init" />
<t_order_item_8 item_id="170801" order_id="1708" user_id="17" status="init" />
<t_order_item_9 item_id="170900" order_id="1709" user_id="17" status="init" />
<t_order_item_9 item_id="170901" order_id="1709" user_id="17" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1800" user_id="18" status="init" />
<t_order_1 order_id="1801" user_id="18" status="init" />
<t_order_2 order_id="1802" user_id="18" status="init" />
<t_order_3 order_id="1803" user_id="18" status="init" />
<t_order_4 order_id="1804" user_id="18" status="init" />
<t_order_5 order_id="1805" user_id="18" status="init" />
<t_order_6 order_id="1806" user_id="18" status="init" />
<t_order_7 order_id="1807" user_id="18" status="init" />
<t_order_8 order_id="1808" user_id="18" status="init" />
<t_order_9 order_id="1809" user_id="18" status="init" />
<t_order_item_0 item_id="180000" order_id="1800" user_id="18" status="init" />
<t_order_item_0 item_id="180001" order_id="1800" user_id="18" status="init" />
<t_order_item_1 item_id="180100" order_id="1801" user_id="18" status="init" />
<t_order_item_1 item_id="180101" order_id="1801" user_id="18" status="init" />
<t_order_item_2 item_id="180200" order_id="1802" user_id="18" status="init" />
<t_order_item_2 item_id="180201" order_id="1802" user_id="18" status="init" />
<t_order_item_3 item_id="180300" order_id="1803" user_id="18" status="init" />
<t_order_item_3 item_id="180301" order_id="1803" user_id="18" status="init" />
<t_order_item_4 item_id="180400" order_id="1804" user_id="18" status="init" />
<t_order_item_4 item_id="180401" order_id="1804" user_id="18" status="init" />
<t_order_item_5 item_id="180500" order_id="1805" user_id="18" status="init" />
<t_order_item_5 item_id="180501" order_id="1805" user_id="18" status="init" />
<t_order_item_6 item_id="180600" order_id="1806" user_id="18" status="init" />
<t_order_item_6 item_id="180601" order_id="1806" user_id="18" status="init" />
<t_order_item_7 item_id="180700" order_id="1807" user_id="18" status="init" />
<t_order_item_7 item_id="180701" order_id="1807" user_id="18" status="init" />
<t_order_item_8 item_id="180800" order_id="1808" user_id="18" status="init" />
<t_order_item_8 item_id="180801" order_id="1808" user_id="18" status="init" />
<t_order_item_9 item_id="180900" order_id="1809" user_id="18" status="init" />
<t_order_item_9 item_id="180901" order_id="1809" user_id="18" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order_0 order_id="1900" user_id="19" status="init" />
<t_order_1 order_id="1901" user_id="19" status="init" />
<t_order_2 order_id="1902" user_id="19" status="init" />
<t_order_3 order_id="1903" user_id="19" status="init" />
<t_order_4 order_id="1904" user_id="19" status="init" />
<t_order_5 order_id="1905" user_id="19" status="init" />
<t_order_6 order_id="1906" user_id="19" status="init" />
<t_order_7 order_id="1907" user_id="19" status="init" />
<t_order_8 order_id="1908" user_id="19" status="init" />
<t_order_9 order_id="1909" user_id="19" status="init" />
<t_order_item_0 item_id="190000" order_id="1900" user_id="19" status="init" />
<t_order_item_0 item_id="190001" order_id="1900" user_id="19" status="init" />
<t_order_item_1 item_id="190100" order_id="1901" user_id="19" status="init" />
<t_order_item_1 item_id="190101" order_id="1901" user_id="19" status="init" />
<t_order_item_2 item_id="190200" order_id="1902" user_id="19" status="init" />
<t_order_item_2 item_id="190201" order_id="1902" user_id="19" status="init" />
<t_order_item_3 item_id="190300" order_id="1903" user_id="19" status="init" />
<t_order_item_3 item_id="190301" order_id="1903" user_id="19" status="init" />
<t_order_item_4 item_id="190400" order_id="1904" user_id="19" status="init" />
<t_order_item_4 item_id="190401" order_id="1904" user_id="19" status="init" />
<t_order_item_5 item_id="190500" order_id="1905" user_id="19" status="init" />
<t_order_item_5 item_id="190501" order_id="1905" user_id="19" status="init" />
<t_order_item_6 item_id="190600" order_id="1906" user_id="19" status="init" />
<t_order_item_6 item_id="190601" order_id="1906" user_id="19" status="init" />
<t_order_item_7 item_id="190700" order_id="1907" user_id="19" status="init" />
<t_order_item_7 item_id="190701" order_id="1907" user_id="19" status="init" />
<t_order_item_8 item_id="190800" order_id="1908" user_id="19" status="init" />
<t_order_item_8 item_id="190801" order_id="1908" user_id="19" status="init" />
<t_order_item_9 item_id="190900" order_id="1909" user_id="19" status="init" />
<t_order_item_9 item_id="190901" order_id="1909" user_id="19" status="init" />
<t_config id="1" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1000" sku_num="0" status="init" />
<t_order order_id="1001" sku_num="1" status="init" />
<t_order order_id="2000" sku_num="2" status="init" />
<t_order order_id="2001" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1100" sku_num="0" status="init" />
<t_order order_id="1101" sku_num="1" status="init" />
<t_order order_id="2100" sku_num="2" status="init" />
<t_order order_id="2101" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1200" sku_num="0" status="init" />
<t_order order_id="1201" sku_num="1" status="init" />
<t_order order_id="2200" sku_num="2" status="init" />
<t_order order_id="2201" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1300" sku_num="0" status="init" />
<t_order order_id="1301" sku_num="1" status="init" />
<t_order order_id="2300" sku_num="2" status="init" />
<t_order order_id="2301" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1400" sku_num="0" status="init" />
<t_order order_id="1401" sku_num="1" status="init" />
<t_order order_id="2400" sku_num="2" status="init" />
<t_order order_id="2401" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1500" sku_num="0" status="init" />
<t_order order_id="1501" sku_num="1" status="init" />
<t_order order_id="2500" sku_num="2" status="init" />
<t_order order_id="2501" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1600" sku_num="0" status="init" />
<t_order order_id="1601" sku_num="1" status="init" />
<t_order order_id="2600" sku_num="2" status="init" />
<t_order order_id="2601" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1700" sku_num="0" status="init" />
<t_order order_id="1701" sku_num="1" status="init" />
<t_order order_id="2700" sku_num="2" status="init" />
<t_order order_id="2701" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1800" sku_num="0" status="init" />
<t_order order_id="1801" sku_num="1" status="init" />
<t_order order_id="2800" sku_num="2" status="init" />
<t_order order_id="2801" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1900" sku_num="0" status="init" />
<t_order order_id="1901" sku_num="1" status="init" />
<t_order order_id="2900" sku_num="2" status="init" />
<t_order order_id="2901" sku_num="3" status="init" />
</dataset>
</init>
\ No newline at end of file
<asserts sharding-rule-config="./config/test" init-data-file="./init" base-config="db,tbl,dbtbl" database="h2,mysql,oracle,sqlserver,postgresql">
<assertDQL id="assertSelectOne"
sql="assertSelectOne"
expected-data-file="./asserts/dql/SelectOne.xml">
expected-data-file="SelectOne.xml">
</assertDQL>
<assertDQL id="assertSelectNotEqualsWithSingleTable"
sql="assertSelectNotEqualsWithSingleTable" base-config="tbl"
expected-data-file="./asserts/dql/SelectNotEqualsWithSingleTable.xml">
expected-data-file="SelectNotEqualsWithSingleTable.xml">
<parameter>
<value value="100000" type="int" />
</parameter>
</assertDQL>
<assertDQL id="assertSelectNotEqualsWithSingleTableForExclamationEqual"
sql="assertSelectNotEqualsWithSingleTableForExclamationEqual" base-config="tbl"
expected-data-file="./asserts/dql/SelectNotEqualsWithSingleTable.xml">
expected-data-file="SelectNotEqualsWithSingleTable.xml">
<parameter>
<value value="100000" type="int" />
</parameter>
</assertDQL>
<assertDQL id="assertSelectNotEqualsWithSingleTableForNotIn"
sql="assertSelectNotEqualsWithSingleTableForNotIn" base-config="tbl"
expected-data-file="./asserts/dql/SelectNotEqualsWithSingleTable.xml">
expected-data-file="SelectNotEqualsWithSingleTable.xml">
<parameter>
<value value="100000" type="int" />
</parameter>
</assertDQL>
<assertDQL id="assertSelectEqualsWithSameShardingColumns"
sql="assertSelectEqualsWithSameShardingColumns" base-config="tbl"
expected-data-file="./asserts/dql/SelectEqualsWithSameShardingColumns.xml">
expected-data-file="SelectEqualsWithSameShardingColumns.xml">
<parameter>
<value value="1000" type="int" />
<value value="1001" type="int" />
......@@ -34,7 +34,7 @@
</assertDQL>
<assertDQL id="assertSelectInWithSameShardingColumns"
sql="assertSelectInWithSameShardingColumns" base-config="tbl"
expected-data-file="./asserts/dql/SelectInWithSameShardingColumns.xml">
expected-data-file="SelectInWithSameShardingColumns.xml">
<parameter>
<value value="1000" type="int" />
<value value="1001" type="int" />
......@@ -42,4 +42,62 @@
<value value="1100" type="int" />
</parameter>
</assertDQL>
<assertDQL id="assertSelectEqualsWithSingleTable"
sql="assertSelectEqualsWithSingleTable" base-config="tbl,db,dbtbl"
expected-data-file="SelectEqualsWithSingleTable_1.xml">
<subAssert expected-data-file="SelectEqualsWithSingleTable_0.xml">
<parameter>
<value value="10" type="int" />
<value value="1000" type="int" />
</parameter>
</subAssert>
<subAssert expected-data-file="SelectEqualsWithSingleTable_1.xml" base-config="tbl">
<parameter>
<value value="11" type="int" />
<value value="1109" type="int" />
</parameter>
</subAssert>
<subAssert expected-data-file="SelectEqualsWithSingleTable_1.xml" base-config="db,dbtbl">
<parameter>
<value value="12" type="int" />
<value value="1201" type="int" />
</parameter>
</subAssert>
<subAssert expected-data-file="Empty.xml">
<parameter>
<value value="12" type="int" />
<value value="1000" type="int" />
</parameter>
</subAssert>
</assertDQL>
<!--<assertDQL id="assertSelectBetweenWithSingleTable"
sql="assertSelectBetweenWithSingleTable" base-config="tbl,db,dbtbl"
>
<subAssert expected-data-file="SelectBetweenWithSingleTable.xml" base-config="tbl,dbtbl">
<parameter>
<value value="10" type="int" />
<value value="12" type="int" />
<value value="1009" type="int" />
<value value="1108" type="int" />
</parameter>
</subAssert>
<subAssert expected-data-file="SelectBetweenWithSingleTable.xml" base-config="db">
<parameter>
<value value="10" type="int" />
<value value="12" type="int" />
<value value="1001" type="int" />
<value value="1200" type="int" />
</parameter>
</subAssert>
<subAssert expected-data-file="Empty.xml">
<parameter>
<value value="10" type="int" />
<value value="12" type="int" />
<value value="1309" type="int" />
<value value="1408" type="int" />
</parameter>
</subAssert>
</assertDQL>-->
</asserts>
\ No newline at end of file
<init>
<dataset>
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1009" user_id="10" status="init" />
<t_order order_id="1100" user_id="11" status="init" />
<t_order order_id="1101" user_id="11" status="init" />
<t_order order_id="1102" user_id="11" status="init" />
<t_order order_id="1103" user_id="11" status="init" />
<t_order order_id="1104" user_id="11" status="init" />
<t_order order_id="1105" user_id="11" status="init" />
<t_order order_id="1106" user_id="11" status="init" />
<t_order order_id="1107" user_id="11" status="init" />
<t_order order_id="1108" user_id="11" status="init" />
</dataset>
</init>
<init>
<dataset>
<data order_id="1000" user_id="10" status="init" />
</dataset>
</init>
<init>
<dataset>
<data order_id="1109" user_id="11" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<data order_id="1201" user_id="12" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<t_order order_id="1001" user_id="10" status="init" />
<t_order order_id="1100" user_id="11" status="init" />
<t_order order_id="1101" user_id="11" status="init" />
<t_order order_id="1200" user_id="12" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<data order_id="1201" user_id="12" status="init" />
</dataset>
</init>
\ No newline at end of file
<init>
<dataset>
<data order_id="1201" user_id="12" status="init" />
</dataset>
</init>
\ No newline at end of file
......@@ -12,6 +12,7 @@ shardingRule:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
rangeAlgorithmClassName: io.shardingjdbc.core.fixture.RangeOrderShardingAlgorithm
tableStrategy:
inline:
shardingColumn: id
......
......@@ -12,6 +12,7 @@ shardingRule:
standard:
shardingColumn: user_id
preciseAlgorithmClassName: io.shardingjdbc.dbtest.core.yaml.fixture.SingleAlgorithm
rangeAlgorithmClassName: io.shardingjdbc.core.fixture.RangeOrderShardingAlgorithm
tableStrategy:
inline:
shardingColumn: order_id
......
......@@ -11,7 +11,7 @@ shardingRule:
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_${order_id % 2}
algorithmExpression: t_order_${order_id % 10}
t_order_item:
actualDataNodes: tbl.t_order_item_${0..9}
keyGeneratorColumnName: order_item_id
......@@ -20,7 +20,7 @@ shardingRule:
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_item_${order_id % 2}
algorithmExpression: t_order_item_${order_id % 10}
bindingTables:
- t_order,t_order_item
......
initialized=false
initialized=true
assert.path=classpath:asserts
databases=h2
......@@ -112,4 +112,6 @@
<sql-case id="tblCreateTOrderItem8" value="CREATE TABLE t_order_item_8 (item_id INT NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL,c_date DATE, PRIMARY KEY (item_id))"/>
<sql-case id="tblCreateTOrderItem9" value="CREATE TABLE t_order_item_9 (item_id INT NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL,c_date DATE, PRIMARY KEY (item_id))"/>
<sql-case id="tblCreateTConfig" value="CREATE TABLE t_config (id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (id))"/>
<sql-case id="createTLog" value="CREATE TABLE t_log(id int, status varchar(10))"/>
</sql-cases>
......@@ -115,5 +115,5 @@
<sql-case id="tblDropTOrderConfig" value="DROP TABLE t_config" />
<sql-case id="tblDropTOrderGlobal" value="DROP TABLE t_global" />
<sql-case id="dropTLog" value="DROP TABLE t_log"/>
</sql-cases>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册