From 5f37ad6f0b259406a24b7dbba336dd96b6f5924f Mon Sep 17 00:00:00 2001 From: terrymanu Date: Fri, 15 Dec 2017 11:58:59 +0800 Subject: [PATCH] for #490 --- .../pagination/RowNumberDecoratorResultSetMerger.java | 7 ++++++- .../TopAndRowNumberDecoratorResultSetMerger.java | 7 ++++++- .../test/resources/integrate/assert/select_pagination.xml | 4 ++-- .../src/test/resources/sql/dql/select_pagination.xml | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/RowNumberDecoratorResultSetMerger.java b/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/RowNumberDecoratorResultSetMerger.java index d10ce31dd1132..3eeba44abb04e 100644 --- a/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/RowNumberDecoratorResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/RowNumberDecoratorResultSetMerger.java @@ -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; diff --git a/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/TopAndRowNumberDecoratorResultSetMerger.java b/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/TopAndRowNumberDecoratorResultSetMerger.java index d0f89e7687832..436b1bc6231b1 100644 --- a/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/TopAndRowNumberDecoratorResultSetMerger.java +++ b/sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/pagination/TopAndRowNumberDecoratorResultSetMerger.java @@ -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; diff --git a/sharding-jdbc-core/src/test/resources/integrate/assert/select_pagination.xml b/sharding-jdbc-core/src/test/resources/integrate/assert/select_pagination.xml index e29d5c7b9bb34..2e61f62da8e4e 100644 --- a/sharding-jdbc-core/src/test/resources/integrate/assert/select_pagination.xml +++ b/sharding-jdbc-core/src/test/resources/integrate/assert/select_pagination.xml @@ -48,12 +48,12 @@ - + - + diff --git a/sharding-jdbc-core/src/test/resources/sql/dql/select_pagination.xml b/sharding-jdbc-core/src/test/resources/sql/dql/select_pagination.xml index 08ebdba8744c1..67c12c6f4c0bb 100644 --- a/sharding-jdbc-core/src/test/resources/sql/dql/select_pagination.xml +++ b/sharding-jdbc-core/src/test/resources/sql/dql/select_pagination.xml @@ -8,7 +8,7 @@ - +