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 2020/01/13 12:14:18 UTC

[jena] branch master updated: JENA-1813: GRAPH and sub-query

This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/master by this push:
     new a34ad74  JENA-1813: GRAPH and sub-query
     new f7a3f40  Merge pull request #670 from afs/jena1813-opt-assign
a34ad74 is described below

commit a34ad74791394fad5e1cb64fb948d2699e9794c8
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sun Jan 12 17:50:35 2020 +0000

    JENA-1813: GRAPH and sub-query
---
 .../apache/jena/sparql/engine/main/JoinClassifier.java | 18 ++++++++++++------
 .../org/apache/jena/sparql/algebra/TestClassify.java   |  6 ++++++
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
index 58b1773..9a11a47 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
@@ -203,13 +203,19 @@ public class JoinClassifier
         return result ;
     }
 
-    /** Find the "effective op" - ie. the one that may be sensitive to linearization */
+    /** Find the "effective op" - i.e. the one that may be sensitive to linearization */
     private static Op effectiveOp(Op op) {
-        if ( op instanceof OpExt )
-            op = ((OpExt)op).effectiveOp() ;
-        while (safeModifier(op))
-            op = ((OpModifier)op).getSubOp() ;
-        return op ;
+        for (;;) {
+            if ( op instanceof OpExt )
+                op = ((OpExt)op).effectiveOp() ;
+            else if (safeModifier(op))
+                op = ((OpModifier)op).getSubOp() ;
+            // JENA-1813, temporary fix.
+            else if (op instanceof OpGraph )
+                op = ((OpGraph)op).getSubOp() ;
+            else
+                return op;
+        }
     }
 
     /** Helper - test for "safe" modifiers */
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 05db391..9eacff3 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
@@ -159,6 +159,12 @@ public class TestClassify extends BaseTest
         TestClassify.classifyJ(x1, false);
     }
 
+    // JENA-1813
+    @Test public void testClassify_Join_54() {
+         String x1 = "{ ?s  ?p  ?V GRAPH ?g { SELECT (?w AS ?V) { ?t  ?q  ?w } GROUP BY ?w } }";
+          TestClassify.classifyJ(x1, false);
+    }
+    
     public static void classifyJ(String pattern, boolean expected)
     {
         String qs1 = "PREFIX : <http://example/>\n" ;