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) ;
+ }
}