Details
Description
In case of more complex xpath queries with a mix of ORs, ANDs and
full-text the returned resultset is wrong. Some of the conditions are
lost during the query execution. Most probably during the Filter
creation.
The query is:
/jcr:root/test//element(*, nt:unstructured)[ ( jcr:contains(., 'cinema') or @tags = 'architecture-keywords:building/cinema' or @tags = '/tags/architecture-keywords/building/cinema' ) and @status = 'amber' and ( not(@id) and ( not(@types) or ( not(@types = 'published') and not(@types = 'page') and not(@types = 'asset') ) ) )]
In this case if you replace the @tags conditions with a
jcr:contains rather than = it will make the query works. Which
suggests the same root cause of OAK-2660.
OAK-2660 was indirectly addressed by OAK-1617 but the OR->UNION
conversion is not applied to subqueries of a UNION set.
See attached patch for a reproducing test case.