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 2016/01/23 00:08:34 UTC
jena git commit: Short cut MINUS evaluation when the RHS is empty.
Repository: jena
Updated Branches:
refs/heads/master 9230bbdc8 -> 7c8ba9198
Short cut MINUS evaluation when the RHS is empty.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/7c8ba919
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/7c8ba919
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/7c8ba919
Branch: refs/heads/master
Commit: 7c8ba91980ec7a130e3b79f3a60b7ba6ad5d8ad7
Parents: 9230bbd
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jan 22 16:16:12 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jan 22 16:16:12 2016 +0000
----------------------------------------------------------------------
.../sparql/engine/iterator/QueryIterMinus.java | 91 +++++++++-----------
.../jena/sparql/engine/main/OpExecutor.java | 2 +-
2 files changed, 44 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/7c8ba919/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterMinus.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterMinus.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterMinus.java
index fe47d89..2ae1ce1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterMinus.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterMinus.java
@@ -18,72 +18,67 @@
package org.apache.jena.sparql.engine.iterator;
-import java.util.Map;
-import java.util.Set ;
+import java.util.Set;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.index.IndexFactory ;
-import org.apache.jena.sparql.engine.index.IndexTable ;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.ExecutionContext;
+import org.apache.jena.sparql.engine.QueryIterator;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.engine.index.IndexFactory;
+import org.apache.jena.sparql.engine.index.IndexTable;
/** Minus by materializing the RHS - this is not streamed on the right */
-public class QueryIterMinus extends QueryIter2
-{
- private IndexTable tableRight;
- private Map<Var, Integer> varColumns ;
- private Set<Node[]> rightTable;
- Binding slot = null ;
+public class QueryIterMinus extends QueryIter2 {
+ private final IndexTable tableRight;
+ private Binding slot = null;
- public QueryIterMinus(QueryIterator left, QueryIterator right, Set<Var> commonVars, ExecutionContext qCxt)
- {
- super(left, right, qCxt) ;
- tableRight = IndexFactory.createIndex(commonVars, right) ;
+ public static QueryIterator create(QueryIterator left, QueryIterator right, Set<Var> commonVars, ExecutionContext qCxt) {
+ if ( ! right.hasNext() )
+ // Empty MINUS left
+ return left ;
+ return new QueryIterMinus(left, right, commonVars, qCxt) ;
+ }
+
+ private QueryIterMinus(QueryIterator left, QueryIterator right, Set<Var> commonVars, ExecutionContext qCxt) {
+ super(left, right, qCxt);
+ tableRight = IndexFactory.createIndex(commonVars, right);
}
- protected Binding getNextSlot(Binding bindingLeft)
- {
+ protected Binding getNextSlot(Binding bindingLeft) {
if ( tableRight.containsCompatibleWithSharedDomain(bindingLeft) )
- return null ;
-
+ return null;
return bindingLeft;
}
@Override
- protected final void closeSubIterator() { }
-
+ protected final void closeSubIterator() {}
+
@Override
- protected void requestSubCancel() { }
-
+ protected void requestSubCancel() {}
+
@Override
- protected final boolean hasNextBinding()
- {
+ protected final boolean hasNextBinding() {
if ( slot != null )
- return true ;
-
- while ( getLeft().hasNext() )
- {
- Binding bindingLeft = getLeft().nextBinding() ;
- slot = getNextSlot(bindingLeft) ;
- if ( slot != null )
- {
- slot = bindingLeft ;
- return true ;
+ return true;
+
+ while (getLeft().hasNext()) {
+ Binding bindingLeft = getLeft().nextBinding();
+ slot = getNextSlot(bindingLeft);
+ if ( slot != null ) {
+ slot = bindingLeft;
+ return true;
}
}
- getLeft().close() ;
- return false ;
+ getLeft().close();
+ return false;
}
@Override
- protected final Binding moveToNextBinding()
- {
- if ( ! hasNextBinding() )
- return null ;
- Binding x = slot ;
- slot = null ;
- return x ;
+ protected final Binding moveToNextBinding() {
+ if ( !hasNextBinding() )
+ return null;
+ Binding x = slot;
+ slot = null;
+ return x;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/7c8ba919/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/OpExecutor.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/OpExecutor.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/OpExecutor.java
index 3929975..d301a38 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/OpExecutor.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/OpExecutor.java
@@ -263,7 +263,7 @@ public class OpExecutor
Set<Var> commonVars = OpVars.visibleVars(lhsOp) ;
commonVars.retainAll(OpVars.visibleVars(rhsOp)) ;
- return new QueryIterMinus(left, right, commonVars, execCxt) ;
+ return QueryIterMinus.create(left, right, commonVars, execCxt) ;
}
protected QueryIterator execute(OpDisjunction opDisjunction, QueryIterator input) {