You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by re...@apache.org on 2024/07/17 12:57:56 UTC
(sling-org-apache-sling-resourceresolver) 01/01: SLING-12384: ResourceResolver: paged query for sling:alias will miss entries where 'first(sling:alias)' is empty
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch SLING-12384
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit 9d04953af64e4510febfbc8a342994693e060c95
Author: Julian Reschke <re...@apache.org>
AuthorDate: Wed Jul 17 13:57:36 2024 +0100
SLING-12384: ResourceResolver: paged query for sling:alias will miss entries where 'first(sling:alias)' is empty
---
.../sling/resourceresolver/impl/mapping/MapEntries.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index ee62ea1..3372fd6 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -1156,7 +1156,7 @@ public class MapEntries implements
Iterator<Resource> it;
try {
- final String queryStringWithSort = baseQueryString + " AND FIRST([sling:alias]) > '%s' ORDER BY FIRST([sling:alias])";
+ final String queryStringWithSort = baseQueryString + " AND FIRST([sling:alias]) %s '%s' ORDER BY FIRST([sling:alias])";
it = new PagedQueryIterator("alias", "sling:alias", resolver, queryStringWithSort, 2000);
} catch (QuerySyntaxException ex) {
log.debug("sort with first() not supported, falling back to base query", ex);
@@ -1317,7 +1317,7 @@ public class MapEntries implements
/**
* @param subject name of the query, will be used only for logging
- * @param propertyName name of multivalued string property to query on
+ * @param propertyName name of multivalued string property to query on (used for diagnostics)
* @param resolver resource resolver
* @param query query string in SQL2 syntax
* @param pageSize page size (start a new query after page size is exceeded)
@@ -1333,7 +1333,10 @@ public class MapEntries implements
private void nextPage() {
count = 0;
- String tquery = String.format(query, queryLiteral(lastValue));
+ // first query is ">=" to include empty property values, subsequent
+ // queries then use ">"
+ String op = lastValue.isEmpty() ? ">=" : ">";
+ String tquery = String.format(query, op, queryLiteral(lastValue));
log.debug("start {} query (page {}): {}", subject, page, tquery);
long queryStart = System.nanoTime();
this.it = resolver.findResources(tquery, "JCR-SQL2");
@@ -1399,7 +1402,7 @@ public class MapEntries implements
boolean supportsSort = true;
Iterator<Resource> it;
try {
- final String queryStringWithSort = baseQueryString + " AND FIRST([sling:vanityPath]) > '%s' ORDER BY FIRST([sling:vanityPath])";
+ final String queryStringWithSort = baseQueryString + " AND FIRST([sling:vanityPath]) %s '%s' ORDER BY FIRST([sling:vanityPath])";
it = new PagedQueryIterator("vanity path", PROP_VANITY_PATH, resolver, queryStringWithSort, 2000);
} catch (QuerySyntaxException ex) {
log.debug("sort with first() not supported, falling back to base query", ex);