You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/09/09 11:24:07 UTC

[2/5] jena git commit: Debug support

Debug support

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/20f17a1a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/20f17a1a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/20f17a1a

Branch: refs/heads/master
Commit: 20f17a1a7667035b0856415cbb1f49a8cc7f718e
Parents: 5379024
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Sep 9 09:14:58 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Sep 9 09:14:58 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/sparql/engine/join/Join.java    | 45 +++++++++++++++++++-
 1 file changed, 43 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/20f17a1a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/Join.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/Join.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/Join.java
index 0ccde01..6820c43 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/Join.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/Join.java
@@ -23,6 +23,8 @@ import java.util.List ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.DS ;
 import org.apache.jena.sparql.algebra.Algebra ;
+import org.apache.jena.sparql.algebra.Table ;
+import org.apache.jena.sparql.algebra.TableFactory ;
 import org.apache.jena.sparql.engine.ExecutionContext ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
@@ -37,8 +39,8 @@ public class Join {
     // See also package org.apache.jena.sparql.engine.index
     // The anti-join code for MINUS
     
-    private final static boolean useNestedLoopJoin = false ;
-    private final static boolean useNestedLoopLeftJoin = false ;
+    private final static boolean useNestedLoopJoin      = false ;
+    private final static boolean useNestedLoopLeftJoin  = false ;
 
     /**
      * Standard entry point to a join of two streams.
@@ -50,6 +52,9 @@ public class Join {
      * @return QueryIterator
      */
     public static QueryIterator join(QueryIterator left, QueryIterator right, ExecutionContext execCxt) {
+        if ( false )
+            return debug(left, right, execCxt,
+                         (_left, _right)->hashJoin(_left, _right, execCxt)) ;
         if ( useNestedLoopJoin )
             return nestedLoopJoin(left, right, execCxt) ;
         return hashJoin(left, right, execCxt) ;
@@ -66,12 +71,24 @@ public class Join {
      * @return QueryIterator
      */
     public static QueryIterator leftJoin(QueryIterator left, QueryIterator right, ExprList conditions, ExecutionContext execCxt) {
+        if ( false )
+            return debug(left, right, execCxt, 
+                         (_left, _right)->nestedLoopLeftJoin(_left, _right, conditions, execCxt)) ;
+        // XXX When had left join ready ...
 //        if ( useNestedLoopJoin )
 //            return nestedLoopLeftJoin(left, right, conditions, execCxt) ;
 //        return hashLeftJoin(left, right, execCxt) ;
         return nestedLoopLeftJoin(left, right, conditions, execCxt) ;
     }
 
+    /* Debug.
+     * Print inputs and outputs.
+     * This involves materializing the iterators.   
+     */
+    interface JoinOp { 
+        public QueryIterator exec(QueryIterator left, QueryIterator right) ;
+    }
+    
     /** Inner loop join.
      *  Cancellable.
      * @param left      Left hand side
@@ -173,4 +190,28 @@ public class Join {
             qIter = new QueryIterFilterExpr(qIter, expr, execCxt) ;
         return qIter ;
     }
+
+    private static QueryIterator debug(QueryIterator left, QueryIterator right, ExecutionContext execCxt, JoinOp action) {
+            Table t1 = TableFactory.create(left) ;
+            Table t2 = TableFactory.create(right) ;
+    
+            left = t1.iterator(execCxt) ;
+            right = t2.iterator(execCxt) ;
+    
+            QueryIterator qIter = action.exec(left, right) ;
+            Table t3 = TableFactory.create(qIter) ;
+            System.out.println("** Left") ;
+            System.out.println(t1) ;
+            System.out.println("** Right") ;
+            System.out.println(t2) ;
+            System.out.println("** ") ;
+            System.out.println(t3) ;
+    //        // Could do again here, different algoithm for comparison.
+    //        left = t1.iterator(execCxt) ;
+    //        right = t2.iterator(execCxt) ;
+    //        System.out.println("** nestedLoopJoin") ;
+    //        Table t4 = TableFactory.create(?????) ;
+    //        System.out.println(t4) ;
+            return t3.iterator(execCxt) ;
+        }
 }