[ 
https://issues.apache.org/jira/browse/SLING-11230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17513367#comment-17513367
 ] 

Dan Klco commented on SLING-11230:
----------------------------------

PR created: 
https://github.com/apache/sling-org-apache-sling-jcr-resource/pull/21

> Extract Limit / Start From Query Comments in JCR Resource Provider
> ------------------------------------------------------------------
>
>                 Key: SLING-11230
>                 URL: https://issues.apache.org/jira/browse/SLING-11230
>             Project: Sling
>          Issue Type: Improvement
>          Components: JCR
>    Affects Versions: JCR Resource 3.2.0
>            Reporter: Dan Klco
>            Assignee: Dan Klco
>            Priority: Minor
>             Fix For: JCR Resource 3.2.2
>
>
> *Problem Statement*
> In addition to not supporting global limits, there are good reasons that a 
> developer may want to return only a sub-set of the query results when 
> executing a query. For example returning the 10 latest uploaded files. 
> Currently this can be accomplished by executing a query and then only 
> iterating to the 10th item, however a much larger query set may be fetched 
> from the node store than required to service the intended use case. 
> In addition, to support paging, the current implementation would require 
> retrieving and iterating over the Resources until the desired start point is 
> found then reading the subsequent Resources.
> _However_ changing the API contract for the ResourceResolver to either add a 
> new method with the start and limit values would have a non-insignificant 
> ripple effect into the implementations, mocks and providers which would be 
> required to support this new method.
> *Recommended Solution*
> Instead, support parsing the start and limit values from the query via a 
> comment at the end of the query in the form:
> /* slingQueryStart=9, slingQueryLimit=10 */
> This has the advantage of already being ignored by the Oak implementation of 
> JCR-SQL2 and would be relatively easy to parse.
> The JCR Resource Provider's Query Language Provider could then remove the 
> comment from the original query and set the limit and start values 
> appropriately. 
> *Alternative*
> Understandably, manipulating queries may not be desirable and there's a not 
> insignificant possibility of backwards compatibility impact. As an 
> alternative, I would recommend adding a new package to the API specifically 
> for query support and in that provide a service interface and SPI for 
> providers to implement which supports:
>  - Queries with limits and offsets
>  - Queries returning Streams as well as Iterators
>  - Queries which automatically Adapt the result to the desired type
>  - A SPI class for lazy adaptation of Stream and Iterators



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to