From 370f89228f7fa681438dbd59d4ed8e25e291a265 Mon Sep 17 00:00:00 2001 From: haocao Date: Thu, 29 Jun 2017 15:50:23 +0800 Subject: [PATCH] Add subquery relative test cases. --- RELEASE-NOTES.md | 1 - .../rdb/integrate/sql/oracle/OracleSQLTestSQL.java | 2 +- ...ngTablesOnlyForPreparedStatementWithSelectTest.java | 10 +++++++--- .../dialect/mysql/statement/select_sub_query.xml | 5 ++--- .../select/oracle/SelectLimitWithBindingTable.xml | 4 ++++ 5 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 sharding-jdbc-core/src/test/resources/integrate/dataset/tbl/expect/select/oracle/SelectLimitWithBindingTable.xml diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 357efd75cf..fa663f770d 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -14,7 +14,6 @@ next = "/00-overview/contribution/" 1. [ISSUE #239](https://github.com/dangdangdotcom/sharding-jdbc/issues/239) LIMIT路由至多查询结果集,若只有一个不为空的结果集,分页结果不正确 1. [ISSUE #263](https://github.com/dangdangdotcom/sharding-jdbc/issues/263) 分片列和逻辑表配置可忽略大小写 -1. [ISSUE #274](https://github.com/dangdangdotcom/sharding-jdbc/issues/274) 去除pom文件中多余的依赖 ## 1.5.0.M1 diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/sql/oracle/OracleSQLTestSQL.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/sql/oracle/OracleSQLTestSQL.java index b0c944166e..475a0bb790 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/sql/oracle/OracleSQLTestSQL.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/sql/oracle/OracleSQLTestSQL.java @@ -22,7 +22,7 @@ import com.dangdang.ddframe.rdb.integrate.sql.AbstractDatabaseTestSQL; public final class OracleSQLTestSQL extends AbstractDatabaseTestSQL { private static final String SELECT_LIMIT_WITH_BINDING_TABLE_SQL = "SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT" - + " order0_.order_id as order_id1_0_, order0_.status as status2_0_, order0_.user_id as user_id3_0_" + + " order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id" + " FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id" + " WHERE order0_.user_id IN (%s, %s) AND order0_.order_id BETWEEN %s AND %s ORDER BY i.item_id DESC) row_ WHERE rownum <= ?) WHERE rownum > ?"; diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/tbl/pstatement/ShardingTablesOnlyForPreparedStatementWithSelectTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/tbl/pstatement/ShardingTablesOnlyForPreparedStatementWithSelectTest.java index e03be7830c..199b531d75 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/tbl/pstatement/ShardingTablesOnlyForPreparedStatementWithSelectTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/tbl/pstatement/ShardingTablesOnlyForPreparedStatementWithSelectTest.java @@ -73,17 +73,21 @@ public final class ShardingTablesOnlyForPreparedStatementWithSelectTest extends @Test public void assertSelectLimitWithBindingTable() throws SQLException, DatabaseUnitException { if (!SQLServer.name().equalsIgnoreCase(currentDbType())) { - String expectedDataSetFile = PostgreSQL.name().equalsIgnoreCase(currentDbType()) ? TABLE_ONLY_PREFIX + "/expect/select/postgresql/SelectLimitWithBindingTable.xml" - : TABLE_ONLY_PREFIX + "/expect/select/SelectLimitWithBindingTable.xml"; if (PostgreSQL.name().equalsIgnoreCase(currentDbType())) { + String expectedDataSetFile = TABLE_ONLY_PREFIX + "/expect/select/postgresql/SelectLimitWithBindingTable.xml"; assertDataSet(expectedDataSetFile, getShardingDataSource().getConnection(), "t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLimitWithBindingTableSql()), 10, 19, 1000, 1909, 1.5, 2.4); + } else if (Oracle.name().equalsIgnoreCase(currentDbType())) { + String expectedDataSetFile = TABLE_ONLY_PREFIX + "/expect/select/oracle/SelectLimitWithBindingTable.xml"; + assertDataSet(expectedDataSetFile, getShardingDataSource().getConnection(), + "t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLimitWithBindingTableSql()), 10, 19, 1000, 1909, 2, 2); } else { + String expectedDataSetFile = TABLE_ONLY_PREFIX + "/expect/select/SelectLimitWithBindingTable.xml"; assertDataSet(expectedDataSetFile, getShardingDataSource().getConnection(), "t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLimitWithBindingTableSql()), 10, 19, 1000, 1909, 2, 2); } assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), - "t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLimitWithBindingTableSql()), 10, 19, 1000, 1909, 10000, 2); + "t_order_item", replacePreparedStatement(getDatabaseTestSQL().getSelectLimitWithBindingTableSql()), 10, 19, 1000, 1909, 1000, 2000); } } diff --git a/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/statement/select_sub_query.xml b/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/statement/select_sub_query.xml index 8f11ec38e8..248301facd 100644 --- a/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/statement/select_sub_query.xml +++ b/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/statement/select_sub_query.xml @@ -1,6 +1,6 @@ -