diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/db/statement/ShardingDataBasesOnlyForStatementWithSelectTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/db/statement/ShardingDataBasesOnlyForStatementWithSelectTest.java index 7425dc4533669..cc3287ee7b76e 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/db/statement/ShardingDataBasesOnlyForStatementWithSelectTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/integrate/db/statement/ShardingDataBasesOnlyForStatementWithSelectTest.java @@ -17,14 +17,14 @@ package com.dangdang.ddframe.rdb.integrate.db.statement; -import java.sql.SQLException; - import com.dangdang.ddframe.rdb.integrate.db.AbstractShardingDataBasesOnlyDBUnitTest; import com.dangdang.ddframe.rdb.sharding.jdbc.ShardingDataSource; import org.dbunit.DatabaseUnitException; import org.junit.Before; import org.junit.Test; +import java.sql.SQLException; + public final class ShardingDataBasesOnlyForStatementWithSelectTest extends AbstractShardingDataBasesOnlyDBUnitTest { private ShardingDataSource shardingDataSource; @@ -65,6 +65,14 @@ public void assertSelectLimitWithBindingTable() throws SQLException, DatabaseUni assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 10000, 2)); } + @Test + public void assertSelectLimitOffsetWithBindingTable() 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 ORDER BY i.item_id DESC LIMIT %s OFFSET %s"; + assertDataSet("integrate/dataset/db/expect/select/SelectLimitWithBindingTable.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 2, 2)); + assertDataSet("integrate/dataset/Empty.xml", shardingDataSource.getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 2, 10000)); + } + @Test public void assertSelectGroupByWithBindingTable() throws SQLException, DatabaseUnitException { String sql = "SELECT count(*) as items_count, o.`user_id` FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id" diff --git a/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parser/mysql/statement/select_limit.xml b/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parser/mysql/statement/select_limit.xml index 05df2b4686261..4cd4aca1a5aec 100644 --- a/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parser/mysql/statement/select_limit.xml +++ b/sharding-jdbc-core/src/test/resources/com/dangdang/ddframe/rdb/sharding/parser/mysql/statement/select_limit.xml @@ -19,4 +19,14 @@ + + + + + + + + + + diff --git a/sharding-jdbc-doc/content/post/release_notes.md b/sharding-jdbc-doc/content/post/release_notes.md index 3e81c8f997ae8..09637802c71a6 100644 --- a/sharding-jdbc-doc/content/post/release_notes.md +++ b/sharding-jdbc-doc/content/post/release_notes.md @@ -12,6 +12,7 @@ weight = 1 1. [ISSUE #36](https://github.com/dangdangdotcom/sharding-jdbc/issues/36) ShardingPreparedStatement无法反复设置参数 1. [ISSUE #114](https://github.com/dangdangdotcom/sharding-jdbc/issues/114) ShardingPreparedStatement执行批处理任务时,反复解析sql导致oom +1. [ISSUE #33](https://github.com/dangdangdotcom/sharding-jdbc/issues/33) Limit支持问题 ## 1.3.1