Skip to content

Commit

Permalink
Add test cases for #490.
Browse files Browse the repository at this point in the history
  • Loading branch information
haocao committed Dec 15, 2017
1 parent 739db57 commit 1fd2bf9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,25 @@
<data parameter="4,1" expected="select/oracle/SelectSingleTablePagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>

<sql id="assertSelectPaginationWithTopAndRangeWithEqual">
<sharding-rule>
<data parameter="4,10,19,1000,1909,3" expected="select/sqlserver/SelectPagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectSingleTablePaginationWithTopAndRangeWithEqual">
<sharding-rule>
<data parameter="4,3" expected="select/sqlserver/SelectSingleTablePagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectPaginationWithRowNumberAndRangeWithEqual">
<sharding-rule>
<data parameter="10,19,1000,1909,4,3" expected="select/oracle/SelectPagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectSingleTablePaginationWithRowNumberAndRangeWithEqual">
<sharding-rule>
<data parameter="4,2" expected="select/oracle/SelectSingleTablePagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
</sqls>
19 changes: 19 additions & 0 deletions sharding-jdbc-core/src/test/resources/parser/select_pagination.xml
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,25 @@
</order-by-columns>
<limit offset="6" offset-index="5" row-count-index="0" row-count="3" />
</assert>
<assert id="assertSelectSingleTablePaginationWithTopAndRange" parameters="3,1">
<tables>
<table name="t_order" alias="o" />
</tables>
<table-tokens>
<table-token begin-position="157" original-literals="t_order" />
</table-tokens>
<items-token begin-position="152">
<items>
<item>o.order_id AS ORDER_BY_DERIVED_0 </item>
</items>
</items-token>
<offset-token begin-position="197" offset="1" />
<row-count-token begin-position="27" row-count="3" />
<order-by-columns>
<order-by-column name="order_id" owner="o" alias="ORDER_BY_DERIVED_0" order-by-type="DESC" />
</order-by-columns>
<limit offset="1" offset-index="1" row-count-index="0" row-count="3" />
</assert>
<assert id="assertSelectPaginationWithRowNumber" parameters="1,2,9,10,3">
<tables>
<table name="t_order" alias="order0_" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
<sql id="assertSelectSingleTablePaginationWithLimit" value="SELECT o.* FROM `t_order` o ORDER BY o.order_id DESC LIMIT %s, %s" type="MySQL,H2" />
<sql id="assertSelectPaginationWithOffsetAndLimit" 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 WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s ORDER BY i.item_id DESC OFFSET %s LIMIT %s" type="PostgreSQL" />
<sql id="assertSelectPaginationWithTopAndRange" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as 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 WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s) AS row_ WHERE row_.rownum_ &gt; %s" type="SQLServer" />
<sql id="assertSelectPaginationWithTopAndRangeWithEqual" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as 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 WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s) AS row_ WHERE row_.rownum_ &gt; %s" type="SQLServer" />
<sql id="assertSelectSingleTablePaginationWithTopAndRange" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY o.order_id DESC) AS rownum_, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o) AS row_ WHERE row_.rownum_ &gt; %s" type="SQLServer" />
<sql id="assertSelectSingleTablePaginationWithTopAndRangeWithEqual" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY o.order_id DESC) AS rownum_, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o) AS row_ WHERE row_.rownum_ &gt;= %s" type="SQLServer" />
<sql id="assertSelectPaginationWithRowNumberAndRange" value="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT 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 &lt;= %s) t WHERE t.rownum_ &gt; %s" type="Oracle" />
<sql id="assertSelectPaginationWithRowNumberAndRangeWithEqual" value="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT 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 &lt;= %s) t WHERE t.rownum_ &gt;= %s" type="Oracle" />
<sql id="assertSelectSingleTablePaginationWithRowNumberAndRange" value="SELECT * FROM (SELECT t.*, ROWNUM rownum_ FROM (SELECT * FROM t_order ORDER BY order_id DESC) t WHERE ROWNUM &lt; %s) row_ WHERE row_.rownum_ &gt; %s" type="Oracle" />
<sql id="assertSelectSingleTablePaginationWithRowNumberAndRangeWithEqual" value="SELECT * FROM (SELECT t.*, ROWNUM rownum_ FROM (SELECT * FROM t_order ORDER BY order_id DESC) t WHERE ROWNUM &lt;= %s) row_ WHERE row_.rownum_ &gt;= %s" type="Oracle" />
</sqls>

0 comments on commit 1fd2bf9

Please sign in to comment.