You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2011/07/04 16:45:21 UTC

svn commit: r1142696 - in /jackrabbit/branches/2.2/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java test/java/org/apache/jackrabbit/core/query/JoinTest.java

Author: alexparvulescu
Date: Mon Jul  4 14:45:21 2011
New Revision: 1142696

URL: http://svn.apache.org/viewvc?rev=1142696&view=rev
Log:
2.2: merged revision #1142693 (JCR-3000 SQL2 Join with OR clause still has some issues)

Modified:
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/JoinTest.java

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java?rev=1142696&r1=1142695&r2=1142696&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitInfo.java Mon Jul  4 14:45:21 2011
@@ -35,9 +35,9 @@ class ConstraintSplitInfo {
     private final List<Constraint> rightConstraints;
 
     private boolean isMultiple;
-    
+
     private boolean hasLeftConstraints;
-    
+
     private boolean hasRightConstraints;
 
     private ConstraintSplitInfo leftInnerConstraints = null;
@@ -91,11 +91,15 @@ class ConstraintSplitInfo {
         ConstraintSplitInfo csi1 = new ConstraintSplitInfo(factory, source,
                 new ArrayList<Constraint>(leftConstraints),
                 new ArrayList<Constraint>(rightConstraints));
+        csi1.hasLeftConstraints = this.hasLeftConstraints;
+        csi1.hasRightConstraints = this.hasRightConstraints;
         this.leftInnerConstraints = csi1;
 
         ConstraintSplitInfo csi2 = new ConstraintSplitInfo(factory, source,
                 new ArrayList<Constraint>(leftConstraints),
                 new ArrayList<Constraint>(rightConstraints));
+        csi2.hasLeftConstraints = this.hasLeftConstraints;
+        csi2.hasRightConstraints = this.hasRightConstraints;
         this.rightInnerConstraints = csi2;
 
         this.leftConstraints.clear();

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/JoinTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/JoinTest.java?rev=1142696&r1=1142695&r2=1142696&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/JoinTest.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/JoinTest.java Mon Jul  4 14:45:21 2011
@@ -40,15 +40,20 @@ public class JoinTest extends AbstractQu
 
         n1 = node.addNode("node1", "nt:unstructured");
         n1.addMixin(NodeType.MIX_REFERENCEABLE);
+        n1.setProperty("type", "child");
+        n1.setProperty("testJoinWithOR4", "testJoinWithOR4");
 
         n2 = node.addNode("node2", "nt:unstructured");
         n2.addMixin(NodeType.MIX_REFERENCEABLE);
+        n2.setProperty("type", "child");
 
         Node n3 = node.addNode("node3", "nt:unstructured");
         n3.addMixin(NodeType.MIX_REFERENCEABLE);
         n3.setProperty("testref",
                 new String[] { n1.getIdentifier(), n2.getIdentifier() },
                 PropertyType.REFERENCE);
+        n3.setProperty("type", "parent");
+        n3.setProperty("testJoinWithOR4", "testJoinWithOR4");
 
         Node parent2 = testRootNode
                 .addNode("jointest_other", "nt:unstructured");
@@ -122,6 +127,27 @@ public class JoinTest extends AbstractQu
         checkResult(result, 1);
     }
 
+    public void testJoinWithOR4() throws Exception {
+
+        StringBuilder join = new StringBuilder(
+                "SELECT a.*, b.* FROM [nt:unstructured] AS a");
+        join.append("  INNER JOIN [nt:unstructured] AS b ON a.[jcr:uuid] = b.testref ");
+        join.append("  WHERE  ");
+        join.append("  a.type = 'child' ");
+        join.append("  AND (");
+        join.append("    CONTAINS(a.*, 'testJoinWithOR4')  ");
+        join.append("    OR ");
+        join.append("    b.type = 'parent' ");
+        join.append("    AND ");
+        join.append("    CONTAINS(b.*, 'testJoinWithOR4') ");
+        join.append("  )");
+
+        Query q = qm.createQuery(join.toString(), Query.JCR_SQL2);
+        QueryResult result = q.execute();
+        checkResult(result, 2);
+
+    }
+
     /**
      * Test case for <a
      * href="https://issues.apache.org/jira/browse/JCR-2852">JCR-2852</a> <br>