You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Vikas Saurabh (JIRA)" <ji...@apache.org> on 2018/11/15 23:28:00 UTC

[jira] [Commented] (OAK-7897) Queries with OR simplified to IN shouldn't have alternative UNION query

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

Vikas Saurabh commented on OAK-7897:
------------------------------------

[~tmueller], I understand why a flow of getting the query in description via {{QueryEngineImpl#parseQuery}} \[0] is giving original query with {{IN}} clause and an alternative {{UNION}} version. The situation is (I don't know if it's really an issue or not) is that {{parseQuery}} parses the query via {{SQL2Parser}} with {{init=false}} \[1]. This keeps the original query as is (with {{OR}} clause). This query when optimized for {{UNION}} indeed gives an alternate version. Both of these queries are then init-ed \[2].

If this issue is considered worth solving, then the only way I can think of is to initialize the query during parsing itself. That would result in original query to be converted with one with {{IN}} clause and hence the optimized query would not have a {{UNION}}.

All that said, I'm really not comfortable of why the code is the way it is currently. So, [~tmueller], it'd be great if you can pick this one up - it is way outside of my comfort zone.

\[0]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java#L144
\[1]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java#L174
\[2]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java#L219

> Queries with OR simplified to IN shouldn't have alternative UNION query
> -----------------------------------------------------------------------
>
>                 Key: OAK-7897
>                 URL: https://issues.apache.org/jira/browse/OAK-7897
>             Project: Jackrabbit Oak
>          Issue Type: Sub-task
>          Components: lucene
>            Reporter: Vikas Saurabh
>            Assignee: Vikas Saurabh
>            Priority: Minor
>
> Queries like {noformat} SELECT [rep:facet(text)] FROM [nt:base] WHERE [name] = 'Node1' OR [name] = 'Node2' {noformat} which would get simplified to {{IN}} clause still weigh in cost of alternative query with {{UNION}}. We should avoid that.
> /cc [~tmueller]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)