JENA-1018 : Scope details merging needs to include assignMentions. Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/eeb759c2 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/eeb759c2 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/eeb759c2
Branch: refs/heads/JENA-507 Commit: eeb759c24f985742c9386344f613928d0e26d4b5 Parents: 08ec3bb Author: Andy Seaborne <[email protected]> Authored: Tue Sep 1 11:45:13 2015 +0100 Committer: Andy Seaborne <[email protected]> Committed: Tue Sep 1 11:45:13 2015 +0100 ---------------------------------------------------------------------- .../main/java/org/apache/jena/sparql/engine/main/VarFinder.java | 4 +++- .../test/java/org/apache/jena/sparql/algebra/TestClassify.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/eeb759c2/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java index ccbb100..b5314da 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java @@ -129,6 +129,7 @@ public class VarFinder defines.addAll(usage.defines); optDefines.addAll(usage.optDefines); filterMentions.addAll(usage.filterMentions); + assignMentions.addAll(usage.assignMentions); } @Override @@ -219,7 +220,8 @@ public class VarFinder VarUsageVisitor subUsage = VarUsageVisitor.apply(opProject.getSubOp()); subUsage.defines.retainAll(vars); subUsage.optDefines.retainAll(vars); - subUsage.optDefines.retainAll(vars); + subUsage.filterMentions.retainAll(vars) ; + subUsage.assignMentions.retainAll(vars) ; defines.addAll(subUsage.defines); optDefines.addAll(subUsage.optDefines); filterMentions.addAll(subUsage.filterMentions); http://git-wip-us.apache.org/repos/asf/jena/blob/eeb759c2/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java index ad6c9ae..ac9f6cc 100644 --- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java +++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java @@ -119,6 +119,9 @@ public class TestClassify extends BaseTest @Test public void testClassify_Join_43() { classifyJ("{ ?x ?y ?z { LET(?A := ?z+2) } UNION { }}", false) ; } + @Test public void testClassify_Join_44() + { classifyJ("{ BIND(<x> AS ?typeX) { BIND(?typeX AS ?type) ?s ?p ?o FILTER(?o=?type) } }", false) ; } + private void classifyJ(String pattern, boolean expected) { String qs1 = "PREFIX : <http://example/>\n" ; @@ -126,6 +129,8 @@ public class TestClassify extends BaseTest Query query = QueryFactory.create(qs, Syntax.syntaxARQ) ; Op op = Algebra.compile(query.getQueryPattern()) ; + System.out.println(op) ; + if ( ! ( op instanceof OpJoin ) ) fail("Not a join: "+pattern) ;
