From 94a162f4471ec6e4798721894b4a5a583ad71370 Mon Sep 17 00:00:00 2001 From: Yuriy M <95305560+yuremm@users.noreply.github.com> Date: Thu, 18 Aug 2022 21:25:33 +0300 Subject: [PATCH] fix: don't execute next paged search if current result count less than (#2171) allowed row count Co-authored-by: Yuriy Movchan --- .../impl/CouchbaseOperationServiceImpl.java | 14 +++++++------- .../impl/SpannerOperationServiceImpl.java | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/jans-orm/couchbase/src/main/java/io/jans/orm/couchbase/operation/impl/CouchbaseOperationServiceImpl.java b/jans-orm/couchbase/src/main/java/io/jans/orm/couchbase/operation/impl/CouchbaseOperationServiceImpl.java index 9ca6b1d5a97..57a563440be 100644 --- a/jans-orm/couchbase/src/main/java/io/jans/orm/couchbase/operation/impl/CouchbaseOperationServiceImpl.java +++ b/jans-orm/couchbase/src/main/java/io/jans/orm/couchbase/operation/impl/CouchbaseOperationServiceImpl.java @@ -518,7 +518,7 @@ private PagedResult searchImpl(BucketMapping bucketMapping, Stri StringBuilder query = null; int currentLimit; - int lastResultCount = 0; + int lastCountRows = 0; try { List lastSearchResultList; do { @@ -539,26 +539,26 @@ private PagedResult searchImpl(BucketMapping bucketMapping, Stri } lastSearchResultList = lastResult.rowsAsObject(); - lastResultCount = lastSearchResultList.size(); + lastCountRows = lastSearchResultList.size(); if (batchOperation != null) { - collectSearchResult = batchOperation.collectSearchResult(lastResultCount); + collectSearchResult = batchOperation.collectSearchResult(lastCountRows); } if (collectSearchResult) { searchResultList.addAll(lastSearchResultList); } - if ((batchOperation != null) && (lastResultCount > 0)) { + if ((batchOperation != null) && (lastCountRows > 0)) { List entries = batchOperationWraper.createEntities(lastSearchResultList); batchOperation.performAction(entries); } - totalEntriesCount += lastResultCount; + totalEntriesCount += lastCountRows; - if ((count > 0) && (totalEntriesCount >= count)) { + if ((count > 0) && (totalEntriesCount >= count) || (lastCountRows < currentLimit)) { break; } - } while (lastResultCount > 0); + } while (lastCountRows > 0); } catch (CouchbaseException ex) { throw new SearchException("Failed to search entries. Query: '" + query + "'", ex); } diff --git a/jans-orm/spanner/src/main/java/io/jans/orm/cloud/spanner/operation/impl/SpannerOperationServiceImpl.java b/jans-orm/spanner/src/main/java/io/jans/orm/cloud/spanner/operation/impl/SpannerOperationServiceImpl.java index 0877ba0e0cc..368c5cf61e6 100644 --- a/jans-orm/spanner/src/main/java/io/jans/orm/cloud/spanner/operation/impl/SpannerOperationServiceImpl.java +++ b/jans-orm/spanner/src/main/java/io/jans/orm/cloud/spanner/operation/impl/SpannerOperationServiceImpl.java @@ -653,7 +653,7 @@ private PagedResult searchImpl(TableMapping tableMapping, String resultCount += lastCountRows; - if ((count > 0) && (resultCount >= count)) { + if ((count > 0) && (resultCount >= count) || (lastCountRows < currentLimit)) { break; } } while (lastCountRows > 0);