Skip to content

Commit

Permalink
for #490
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Dec 15, 2017
1 parent 5dda0d1 commit 5f37ad6
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ public RowNumberDecoratorResultSetMerger(final ResultSetMerger resultSetMerger,
}

private boolean skipOffset() throws SQLException {
int end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
int end;
if (null == limit.getOffset()) {
end = 0;
} else {
end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
}
for (int i = 0; i < end; i++) {
if (!getResultSetMerger().next()) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ public TopAndRowNumberDecoratorResultSetMerger(final ResultSetMerger resultSetMe
}

private boolean skipOffset() throws SQLException {
int end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
int end;
if (null == limit.getOffset()) {
end = 0;
} else {
end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
}
for (int i = 0; i < end; i++) {
if (!getResultSetMerger().next()) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@
</sql>
<sql id="assertSelectSingleTablePaginationWithTopAndRange">
<sharding-rule>
<data parameter="4,2" expected="select/sqlserver/SelectSingleTablePagingWithOffsetAndRowCountSql.xml" />
<data parameter="7,3" expected="select/sqlserver/SelectSingleTablePagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectPaginationWithTopAndRangeWithEqual">
<sharding-rule>
<data parameter="7,10,19,1000,1909,3" expected="select/sqlserver/SelectPagingWithOffsetAndRowCountSql.xml" />
<data parameter="4,10,19,1000,1909,3" expected="select/sqlserver/SelectPagingWithOffsetAndRowCountSql.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectSingleTablePaginationWithTopAndRangeWithEqual">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<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="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" />
Expand Down

0 comments on commit 5f37ad6

Please sign in to comment.