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 2013/10/19 18:14:18 UTC
svn commit: r1533780 -
/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
Author: andy
Date: Sat Oct 19 16:14:17 2013
New Revision: 1533780
URL: http://svn.apache.org/r1533780
Log:
Split the recursive evaluation method from the pubolic interface method.
Public -- executeOp(Op,QueryIterator) [same as before]
Recursive call -- exec(Op,QueryIterator)
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java?rev=1533780&r1=1533779&r2=1533780&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java Sat Oct 19 16:14:17 2013
@@ -93,7 +93,7 @@ public class OpExecutor
// Public interface is via QC.execute.
static QueryIterator execute(Op op, QueryIterator qIter, ExecutionContext execCxt) {
OpExecutor exec = createOpExecutor(execCxt) ;
- QueryIterator q = exec.executeOp(op, qIter) ;
+ QueryIterator q = exec.exec(op, qIter) ;
return q ;
}
@@ -118,9 +118,14 @@ public class OpExecutor
// return executeOp(op, root()) ;
// }
- // ---- The recursive step.
-
+
+ // Public interface
public QueryIterator executeOp(Op op, QueryIterator input) {
+ return exec(op, input) ;
+ }
+
+ // ---- The recursive step.
+ protected QueryIterator exec(Op op, QueryIterator input) {
level++ ;
QueryIterator qIter = dispatcher.exec(op, input) ;
// Intentionally not try/finally so exceptions leave some evidence
@@ -187,7 +192,7 @@ public class OpExecutor
protected QueryIterator execute(OpQuadBlock quadBlock, QueryIterator input) {
Op op = quadBlock.convertOp() ;
- return executeOp(op, input) ;
+ return exec(op, input) ;
}
protected QueryIterator execute(OpPath opPath, QueryIterator input) {
@@ -196,7 +201,7 @@ public class OpExecutor
protected QueryIterator execute(OpProcedure opProc, QueryIterator input) {
Procedure procedure = ProcEval.build(opProc, execCxt) ;
- QueryIterator qIter = executeOp(opProc.getSubOp(), input) ;
+ QueryIterator qIter = exec(opProc.getSubOp(), input) ;
// Delay until query starts executing.
return new QueryIterProcedure(qIter, procedure, execCxt) ;
}
@@ -204,7 +209,7 @@ public class OpExecutor
protected QueryIterator execute(OpPropFunc opPropFunc, QueryIterator input) {
Procedure procedure = ProcEval.build(opPropFunc.getProperty(), opPropFunc.getSubjectArgs(),
opPropFunc.getObjectArgs(), execCxt) ;
- QueryIterator qIter = executeOp(opPropFunc.getSubOp(), input) ;
+ QueryIterator qIter = exec(opPropFunc.getSubOp(), input) ;
return new QueryIterProcedure(qIter, procedure, execCxt) ;
}
@@ -219,13 +224,13 @@ public class OpExecutor
QueryIterator qIter1 = new QueryIterPlainWrapper(a.iterator(), execCxt) ;
QueryIterator qIter2 = new QueryIterPlainWrapper(a.iterator(), execCxt) ;
- QueryIterator left = executeOp(opJoin.getLeft(), qIter1) ;
- QueryIterator right = executeOp(opJoin.getRight(), qIter2) ;
+ QueryIterator left = exec(opJoin.getLeft(), qIter1) ;
+ QueryIterator right = exec(opJoin.getRight(), qIter2) ;
QueryIterator qIter = new QueryIterJoin(left, right, execCxt) ;
return qIter ;
}
- QueryIterator left = executeOp(opJoin.getLeft(), input) ;
- QueryIterator right = executeOp(opJoin.getRight(), root()) ;
+ QueryIterator left = exec(opJoin.getLeft(), input) ;
+ QueryIterator right = exec(opJoin.getRight(), root()) ;
QueryIterator qIter = new QueryIterJoin(left, right, execCxt) ;
return qIter ;
}
@@ -236,28 +241,28 @@ public class OpExecutor
for (Iterator<Op> iter = opSequence.iterator(); iter.hasNext();) {
Op sub = iter.next() ;
- qIter = executeOp(sub, qIter) ;
+ qIter = exec(sub, qIter) ;
}
return qIter ;
}
protected QueryIterator execute(OpLeftJoin opLeftJoin, QueryIterator input) {
- QueryIterator left = executeOp(opLeftJoin.getLeft(), input) ;
- QueryIterator right = executeOp(opLeftJoin.getRight(), root()) ;
+ QueryIterator left = exec(opLeftJoin.getLeft(), input) ;
+ QueryIterator right = exec(opLeftJoin.getRight(), root()) ;
QueryIterator qIter = new QueryIterLeftJoin(left, right, opLeftJoin.getExprs(), execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpConditional opCondition, QueryIterator input) {
- QueryIterator left = executeOp(opCondition.getLeft(), input) ;
+ QueryIterator left = exec(opCondition.getLeft(), input) ;
QueryIterator qIter = new QueryIterOptionalIndex(left, opCondition.getRight(), execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpDiff opDiff, QueryIterator input) {
- QueryIterator left = executeOp(opDiff.getLeft(), input) ;
- QueryIterator right = executeOp(opDiff.getRight(), root()) ;
+ QueryIterator left = exec(opDiff.getLeft(), input) ;
+ QueryIterator right = exec(opDiff.getRight(), root()) ;
return new QueryIterDiff(left, right, execCxt) ;
}
@@ -265,8 +270,8 @@ public class OpExecutor
Op lhsOp = opMinus.getLeft() ;
Op rhsOp = opMinus.getRight() ;
- QueryIterator left = executeOp(lhsOp, input) ;
- QueryIterator right = executeOp(rhsOp, root()) ;
+ QueryIterator left = exec(lhsOp, input) ;
+ QueryIterator right = exec(rhsOp, root()) ;
Set<Var> commonVars = OpVars.visibleVars(lhsOp) ;
commonVars.retainAll(OpVars.visibleVars(rhsOp)) ;
@@ -308,7 +313,7 @@ public class OpExecutor
ExprList exprs = opFilter.getExprs() ;
Op base = opFilter.getSubOp() ;
- QueryIterator qIter = executeOp(base, input) ;
+ QueryIterator qIter = exec(base, input) ;
for (Expr expr : exprs)
qIter = new QueryIterFilterExpr(qIter, expr, execCxt) ;
@@ -363,7 +368,7 @@ public class OpExecutor
if (!opLabel.hasSubOp())
return input ;
- return executeOp(opLabel.getSubOp(), input) ;
+ return exec(opLabel.getSubOp(), input) ;
}
protected QueryIterator execute(OpNull opNull, QueryIterator input) {
@@ -373,11 +378,11 @@ public class OpExecutor
}
protected QueryIterator execute(OpList opList, QueryIterator input) {
- return executeOp(opList.getSubOp(), input) ;
+ return exec(opList.getSubOp(), input) ;
}
protected QueryIterator execute(OpOrder opOrder, QueryIterator input) {
- QueryIterator qIter = executeOp(opOrder.getSubOp(), input) ;
+ QueryIterator qIter = exec(opOrder.getSubOp(), input) ;
qIter = new QueryIterSort(qIter, opOrder.getConditions(), execCxt) ;
return qIter ;
}
@@ -390,10 +395,10 @@ public class OpExecutor
// We leave this to do the strict case of (top N (distinct ...))
if (opTop.getSubOp() instanceof OpDistinct) {
OpDistinct opDistinct = (OpDistinct)opTop.getSubOp() ;
- qIter = executeOp(opDistinct.getSubOp(), input) ;
+ qIter = exec(opDistinct.getSubOp(), input) ;
qIter = new QueryIterTopN(qIter, opTop.getConditions(), opTop.getLimit(), true, execCxt) ;
} else {
- qIter = executeOp(opTop.getSubOp(), input) ;
+ qIter = exec(opTop.getSubOp(), input) ;
qIter = new QueryIterTopN(qIter, opTop.getConditions(), opTop.getLimit(), false, execCxt) ;
}
return qIter ;
@@ -406,7 +411,7 @@ public class OpExecutor
// More intelligent QueryIterProject needed.
if (input instanceof QueryIterRoot) {
- QueryIterator qIter = executeOp(opProject.getSubOp(), input) ;
+ QueryIterator qIter = exec(opProject.getSubOp(), input) ;
qIter = new QueryIterProject(qIter, opProject.getVars(), execCxt) ;
return qIter ;
}
@@ -417,32 +422,32 @@ public class OpExecutor
}
protected QueryIterator execute(OpSlice opSlice, QueryIterator input) {
- QueryIterator qIter = executeOp(opSlice.getSubOp(), input) ;
+ QueryIterator qIter = exec(opSlice.getSubOp(), input) ;
qIter = new QueryIterSlice(qIter, opSlice.getStart(), opSlice.getLength(), execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpGroup opGroup, QueryIterator input) {
- QueryIterator qIter = executeOp(opGroup.getSubOp(), input) ;
+ QueryIterator qIter = exec(opGroup.getSubOp(), input) ;
qIter = new QueryIterGroup(qIter, opGroup.getGroupVars(), opGroup.getAggregators(), execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpDistinct opDistinct, QueryIterator input) {
- QueryIterator qIter = executeOp(opDistinct.getSubOp(), input) ;
+ QueryIterator qIter = exec(opDistinct.getSubOp(), input) ;
qIter = new QueryIterDistinct(qIter, execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpReduced opReduced, QueryIterator input) {
- QueryIterator qIter = executeOp(opReduced.getSubOp(), input) ;
+ QueryIterator qIter = exec(opReduced.getSubOp(), input) ;
qIter = new QueryIterReduced(qIter, execCxt) ;
return qIter ;
}
protected QueryIterator execute(OpAssign opAssign, QueryIterator input) {
// Need prepare?
- QueryIterator qIter = executeOp(opAssign.getSubOp(), input) ;
+ QueryIterator qIter = exec(opAssign.getSubOp(), input) ;
qIter = new QueryIterAssign(qIter, opAssign.getVarExprList(), execCxt, false) ;
return qIter ;
}
@@ -451,7 +456,7 @@ public class OpExecutor
// We know (parse time checking) the variable is unused so far in
// the query so we can use QueryIterAssign knowing that it behaves
// the same as extend. The boolean should only be a check.
- QueryIterator qIter = executeOp(opExtend.getSubOp(), input) ;
+ QueryIterator qIter = exec(opExtend.getSubOp(), input) ;
qIter = new QueryIterAssign(qIter, opExtend.getVarExprList(), execCxt, true) ;
return qIter ;
}