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 2011/07/14 10:44:17 UTC
svn commit: r1146601 - in /incubator/jena/Jena2/ARQ/trunk: ./ src-dev/dev/
src-test/com/hp/hpl/jena/sparql/algebra/optimize/
src/com/hp/hpl/jena/sparql/engine/ src/com/hp/hpl/jena/sparql/graph/
src/com/hp/hpl/jena/sparql/sse/builders/
Author: andy
Date: Thu Jul 14 08:44:16 2011
New Revision: 1146601
URL: http://svn.apache.org/viewvc?rev=1146601&view=rev
Log:
Bug fix: Expressions in LeftJoin in sub-SELECT were not rewritten correctly.
Added:
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java (contents, props changed)
- copied, changed from r1145056, incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenamerVars.java
Removed:
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenamerVars.java
Modified:
incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
incubator/jena/Jena2/ARQ/trunk/src-dev/dev/RunARQ.java
incubator/jena/Jena2/ARQ/trunk/src-test/com/hp/hpl/jena/sparql/algebra/optimize/TestVarRename.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/VarRename.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java
incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
Modified: incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt (original)
+++ incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt Thu Jul 14 08:44:16 2011
@@ -3,7 +3,7 @@ ChangeLog for ARQ
==== ARQ 2.8.10
-+ Bug fix: ORDER BY in sub-selects didn't work if ordering by non-SELECT variables.
++ Bug fix: ORDER BY and FILTERs in sub-selects didn't work if ordering by non-SELECT variables.
+ Bug fix: Equality of algebra operator (order) wasn't checkign all aspects of the op.
+ Bug fix: SUM and AVG over errors didn't generate an error as they should do.
Modified: incubator/jena/Jena2/ARQ/trunk/src-dev/dev/RunARQ.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-dev/dev/RunARQ.java?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-dev/dev/RunARQ.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-dev/dev/RunARQ.java Thu Jul 14 08:44:16 2011
@@ -128,7 +128,7 @@ public class RunARQ
public static void main(String[] argv) throws Exception
{
//arq.sparql.main("--data=D.ttl", "--query=Q.rq") ;
- arq.qparse.main("--query=testing/ARQ/SubQuery/sub-select-03.rq", "--print=opt") ;
+ arq.qparse.main("--query=Q.rq", "--print=opt") ;
exit(0) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src-test/com/hp/hpl/jena/sparql/algebra/optimize/TestVarRename.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-test/com/hp/hpl/jena/sparql/algebra/optimize/TestVarRename.java?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-test/com/hp/hpl/jena/sparql/algebra/optimize/TestVarRename.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-test/com/hp/hpl/jena/sparql/algebra/optimize/TestVarRename.java Thu Jul 14 08:44:16 2011
@@ -59,6 +59,12 @@ public class TestVarRename extends BaseT
"(project (?s) (order (?s ?/p) (bgp (?s ?/p ?/o))))",
true,
"s") ; }
+
+ @Test public void rename_12() { rename("(leftjoin (bgp (?s ?p ?o)) (bgp (?s ?p ?o1)) () )",
+ "(leftjoin (bgp (?s ?/p ?o)) (bgp (?s ?/p ?/o1)) () )",
+ true,
+ "s", "o") ; }
+
@Test public void rename_reverse_01() { reverse("(project (?s ?/p) (bgp (?s ?/p ?/o)))",
"(project (?s ?p) (bgp (?s ?p ?o)))", true ) ; }
Copied: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java (from r1145056, incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenamerVars.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java?p2=incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java&p1=incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenamerVars.java&r1=1145056&r2=1146601&rev=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenamerVars.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java Thu Jul 14 08:44:16 2011
@@ -14,13 +14,13 @@ import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.graph.NodeTransform ;
-public class RenamerVars implements NodeTransform
+public class RenameVars implements NodeTransform
{
private final Map<Var, Var> aliases = new HashMap<Var, Var>() ;
private final Collection<Var> constants ;
private final String varPrefix ;
- public RenamerVars(Collection<Var> constants, String varPrefix)
+ public RenameVars(Collection<Var> constants, String varPrefix)
{
this.constants = constants ;
this.varPrefix = varPrefix ;
Propchange: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/RenameVars.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/VarRename.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/VarRename.java?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/VarRename.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/engine/VarRename.java Thu Jul 14 08:44:16 2011
@@ -28,19 +28,19 @@ public class VarRename
/** Rename all variables in a pattern, EXCEPT for those named as constant */
public static Op rename(Op op, Collection<Var> constants)
{
- return NodeTransformLib.transform(new RenamerVars(constants, prefix), op) ;
+ return NodeTransformLib.transform(new RenameVars(constants, prefix), op) ;
}
/** Rename all variables in an expression, EXCEPT for those named as constant */
public static ExprList rename(ExprList exprList, Set<Var> constants)
{
- NodeTransform renamer = new RenamerVars(constants, prefix) ;
+ NodeTransform renamer = new RenameVars(constants, prefix) ;
return NodeTransformLib.transform(renamer, exprList) ;
}
public static Expr rename(Expr expr, Set<Var> constants)
{
- NodeTransform renamer = new RenamerVars(constants, prefix) ;
+ NodeTransform renamer = new RenameVars(constants, prefix) ;
return NodeTransformLib.transform(renamer, expr) ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java Thu Jul 14 08:44:16 2011
@@ -22,6 +22,7 @@ import com.hp.hpl.jena.sparql.algebra.op
import com.hp.hpl.jena.sparql.algebra.op.OpFilter ;
import com.hp.hpl.jena.sparql.algebra.op.OpGraph ;
import com.hp.hpl.jena.sparql.algebra.op.OpGroup ;
+import com.hp.hpl.jena.sparql.algebra.op.OpLeftJoin ;
import com.hp.hpl.jena.sparql.algebra.op.OpOrder ;
import com.hp.hpl.jena.sparql.algebra.op.OpPath ;
import com.hp.hpl.jena.sparql.algebra.op.OpProject ;
@@ -38,6 +39,17 @@ import com.hp.hpl.jena.sparql.path.Path
class NodeTransformOp extends TransformCopy
{
+ // This finds everywhere that node can lurk in an alegra expression:
+ // BGPs, paths, triples, quads
+ // GRAPH, GRAPH{} (DatasetNames)
+ // Filters, including inside EXISTS and expressions in LeftJoin
+ // OrderBy, GroupBy
+ // Extend, Assign
+ // Tables
+ // Projects
+ // Not:
+ // Conditional (no expression)
+
private final NodeTransform transform ;
NodeTransformOp(NodeTransform transform)
{
@@ -131,6 +143,19 @@ class NodeTransformOp extends TransformC
//return null ;
}
+ @Override public Op transform(OpLeftJoin opLeftJoin, Op left, Op right)
+ {
+ ExprList exprList = opLeftJoin.getExprs() ;
+ ExprList exprList2 = exprList ;
+ if ( exprList != null )
+ exprList2 = NodeTransformLib.transform(transform, exprList) ;
+ if ( exprList2 == exprList )
+ return super.transform(opLeftJoin, left, right) ;
+ return OpLeftJoin.create(left, right, exprList2) ;
+ }
+
+ // Not OpConditional - no expression.
+
@Override public Op transform(OpProject opProject, Op subOp)
{
List<Var> x = opProject.getVars() ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java?rev=1146601&r1=1146600&r2=1146601&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java Thu Jul 14 08:44:16 2011
@@ -341,8 +341,15 @@ public class BuilderOp
Op left = build(list, 1) ;
Op right = build(list, 2) ;
Expr expr = null ;
- if ( list.size() == 4 )
- expr = buildExpr(list.get(3)) ;
+ if ( list.size() == 4 )
+ {
+ Item exprItem = list.get(3) ;
+ // Allow empty
+ if ( exprItem.isList() && exprItem.getList().isEmpty() )
+ {}
+ else
+ expr = buildExpr(exprItem) ;
+ }
Op op = OpLeftJoin.create(left, right, expr) ;
return op ;
}