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;