You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/10/18 15:06:26 UTC

svn commit: r1023781 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join: ConstraintSplitter.java Constraints.java EquiJoinMerger.java JoinMerger.java

Author: jukka
Date: Mon Oct 18 13:06:25 2010
New Revision: 1023781

URL: http://svn.apache.org/viewvc?rev=1023781&view=rev
Log:
JCR-2715: Improved join query performance

Fix various errors

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitter.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Constraints.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/EquiJoinMerger.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/JoinMerger.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitter.java?rev=1023781&r1=1023780&r2=1023781&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitter.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/ConstraintSplitter.java Mon Oct 18 13:06:25 2010
@@ -85,7 +85,7 @@ class ConstraintSplitter {
      * @return the left constraint
      */
     public Constraint getLeftConstraint() throws RepositoryException {
-        return Constraints.and(factory,leftConstraints);
+        return Constraints.and(factory, leftConstraints);
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Constraints.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Constraints.java?rev=1023781&r1=1023780&r2=1023781&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Constraints.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Constraints.java Mon Oct 18 13:06:25 2010
@@ -37,7 +37,7 @@ public class Constraints {
             int m = n / 2;
             return factory.and(
                     and(factory, constraints.subList(0, m)),
-                    and(factory, constraints.subList(m + 1, n)));
+                    and(factory, constraints.subList(m, n)));
         }
     }
 
@@ -65,7 +65,7 @@ public class Constraints {
             int m = n / 2;
             return factory.or(
                     or(factory, constraints.subList(0, m)),
-                    or(factory, constraints.subList(m + 1, n)));
+                    or(factory, constraints.subList(m, n)));
         }
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/EquiJoinMerger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/EquiJoinMerger.java?rev=1023781&r1=1023780&r2=1023781&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/EquiJoinMerger.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/EquiJoinMerger.java Mon Oct 18 13:06:25 2010
@@ -58,8 +58,8 @@ class EquiJoinMerger extends JoinMerger 
             rightProperty = property2;
         } else if (leftSelectors.contains(property2.getSelectorName())
                 && rightSelectors.contains(property1.getSelectorName())) {
-            leftProperty = property1;
-            rightProperty = property2;
+            leftProperty = property2;
+            rightProperty = property1;
         } else {
             throw new RepositoryException("Invalid equi-join");
         }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/JoinMerger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/JoinMerger.java?rev=1023781&r1=1023780&r2=1023781&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/JoinMerger.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/JoinMerger.java Mon Oct 18 13:06:25 2010
@@ -161,8 +161,8 @@ abstract class JoinMerger {
             return mergeRight(map, rightRows);
         } else {
             Map<String, List<Row>> map = new HashMap<String, List<Row>>();
-            for (Row row : new RowIterable(leftRows)) {
-                for (String value : getLeftValues(row)) {
+            for (Row row : new RowIterable(rightRows)) {
+                for (String value : getRightValues(row)) {
                     List<Row> rows = map.get(value);
                     if (rows == null) {
                         rows = new ArrayList<Row>();
@@ -179,12 +179,16 @@ abstract class JoinMerger {
     private QueryResult mergeLeft(
             RowIterator leftRows, Map<String, List<Row>> rightRowMap,
             boolean outer) throws RepositoryException {
+        System.out.println("Available right matches " + rightRowMap.keySet());
         List<Row> rows = new ArrayList<Row>();
         for (Row leftRow : new RowIterable(leftRows)) {
+            System.out.println("Finding matchers for left row " + leftRow);
             for (String value : getLeftValues(leftRow)) {
+                System.out.println(" - checking for matches for " + value);
                 List<Row> rightRows = rightRowMap.get(value);
-                if (leftRows != null) {
+                if (rightRows != null) {
                     for (Row rightRow : rightRows) {
+                        System.out.println(" -> found matching row " + rightRow);
                         rows.add(mergeRow(leftRow, rightRow));
                     }
                 } else if (outer) {