jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Davide Giannella (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (OAK-4934) Query shapes for JCR Query
Date Tue, 04 Jun 2019 15:38:09 GMT

     [ https://issues.apache.org/jira/browse/OAK-4934?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Davide Giannella updated OAK-4934:
    Fix Version/s:     (was: 1.14.0)

> Query shapes for JCR Query
> --------------------------
>                 Key: OAK-4934
>                 URL: https://issues.apache.org/jira/browse/OAK-4934
>             Project: Jackrabbit Oak
>          Issue Type: Wish
>          Components: query
>            Reporter: Chetan Mehrotra
>            Priority: Major
>             Fix For: 1.16.0
> For certain requirements it would be good to have a notion/support to deduce query shape
> {quote}
>  A combination of query predicate, sort, and projection specifications.
> For the query predicate, only the structure of the predicate, including the field names,
are significant; the values in the query predicate are insignificant. As such, a query predicate
\{ type: 'food' \} is equivalent to the query predicate \{ type: 'utensil' \} for a query
> {quote}
> So transforming that to Oak the shape should represent a JCR-SQL2 query string (xpath
query gets transformed to SQL2) which is a *canonical* representation of actual query ignoring
the property restriction values. 
> Example we have 2 queries
> * SELECT   * FROM [app:Asset] AS a WHERE  a.[jcr:content/metadata/status] = 'published'
> * SELECT   * FROM [app:Asset] AS a WHERE  a.[jcr:content/metadata/status] = 'disabled'
> The query shape would be 
> SELECT * FROM [app:Asset] AS a WHERE  a.[jcr:content/metadata/status] = 'A'. The plan
for query having given shape would remain same irrespective of value of property restrictions.
Path restriction can cause some difference though
> The shape can then be used for
> * Stats Collection - Currently stats collection gets overflown if same query with different
value gets invoked
> * Allow configuring hints - See support in Mongo [2] for an example. One specify via
config that for a query of such and such shape this index should be used
> * Less noisy diagnostics - If a query gets invoked with bad plan the QE can log the warning
once instead of logging it for each query invocation involving different values.
> [1] https://docs.mongodb.com/manual/reference/glossary/#term-query-shape
> [2] https://docs.mongodb.com/manual/reference/command/planCacheSetFilter/

This message was sent by Atlassian JIRA

View raw message