You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ca...@apache.org on 2018/11/06 02:25:13 UTC
svn commit: r1845863 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
Author: catholicon
Date: Tue Nov 6 02:25:13 2018
New Revision: 1845863
URL: http://svn.apache.org/viewvc?rev=1845863&view=rev
Log:
OAK-7605: Giving multiple result when executing query (for a constraints with OR condition) for Facetextraction
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java?rev=1845863&r1=1845862&r2=1845863&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java Tue Nov 6 02:25:13 2018
@@ -425,7 +425,8 @@ public class QueryImpl implements Query
for (int i = 0; i < columns.length; i++) {
ColumnImpl c = columns[i];
boolean distinct = true;
- if (QueryConstants.JCR_SCORE.equals(c.getPropertyName())) {
+ String propName = c.getPropertyName();
+ if (QueryConstants.JCR_SCORE.equals(propName) || propName.startsWith(QueryConstants.REP_FACET + "(")) {
distinct = false;
}
distinctColumns[i] = distinct;
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java?rev=1845863&r1=1845862&r2=1845863&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java Tue Nov 6 02:25:13 2018
@@ -756,6 +756,26 @@ public class FacetTest extends AbstractQ
assertEquals("Unexpected facet count", 1, facet.getCount());
}
+ // OAK-7605
+ public void testDistinctUnionWithDifferentFacetsOnSubQueries() throws Exception {
+ Node n1 = testRootNode.addNode("node1");
+ n1.setProperty("text", "t1");
+ n1.setProperty("name","Node1");
+ // make sure that facet values from both ends of OR clause are different
+ // the test is essentially that facet columns don't define uniqueness of a row
+ Node n3 = testRootNode.addNode("node3");
+ n3.setProperty("text", "t1");
+ n3.setProperty("name","Node3");
+ superuser.save();
+
+ String xpath = "//*[@text = 't1' or @name = 'Node1']/(rep:facet(text))";
+ Query q = qm.createQuery(xpath, Query.XPATH);
+ QueryResult result = q.execute();
+ RowIterator rows=result.getRows();
+
+ assertEquals(2, rows.getSize());
+ }
+
public Node deny(Node node) throws RepositoryException {
AccessControlUtils.deny(node, "anonymous", Privilege.JCR_ALL);
return node;