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/03/22 12:33:32 UTC
svn commit: r1459732 - in /jena/trunk/jena-arq/src:
main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java
Author: andy
Date: Fri Mar 22 11:33:31 2013
New Revision: 1459732
URL: http://svn.apache.org/r1459732
Log:
JENA-419
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java?rev=1459732&r1=1459731&r2=1459732&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java Fri Mar 22 11:33:31 2013
@@ -148,7 +148,10 @@ public class SyntaxVarScope
if ( query.hasGroupBy() )
{
VarExprList groupKey = query.getGroupBy() ;
- List<Var> groupVars = groupKey.getVars() ;
+
+ // Copy - we need to add variables
+ // SELECT (count(*) AS ?C) (?C+1 as ?D)
+ List<Var> inScopeVars = new ArrayList<Var>(groupKey.getVars()) ;
VarExprList exprList = query.getProject() ;
for ( Iterator<Var> iter = exprList.getVars().iterator() ; iter.hasNext() ; )
@@ -158,7 +161,7 @@ public class SyntaxVarScope
Expr e = exprList.getExpr(v) ;
if ( e == null )
{
- if ( ! groupVars.contains(v) )
+ if ( ! inScopeVars.contains(v) )
throw new QueryParseException("Non-group key variable in SELECT: "+v, -1 , -1) ;
}
else
@@ -166,10 +169,11 @@ public class SyntaxVarScope
Set<Var> eVars = e.getVarsMentioned() ;
for ( Var v2 : eVars )
{
- if ( ! groupVars.contains(v2) )
+ if ( ! inScopeVars.contains(v2) )
throw new QueryParseException("Non-group key variable in SELECT: "+v2+" in expression "+e , -1 , -1) ;
}
}
+ inScopeVars.add(v) ;
}
}
}
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java?rev=1459732&r1=1459731&r2=1459732&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/lang/TestVarScope.java Fri Mar 22 11:33:31 2013
@@ -44,18 +44,24 @@ public class TestVarScope extends BaseTe
public void scope_05() { scope("SELECT (?o+1 AS ?x) (?o+1 AS ?x) { ?s ?p ?o }") ; }
@Test public void scope_06() { scope("SELECT (?z+1 AS ?x) { ?s ?p ?o } GROUP BY (?o+5 AS ?z)") ; }
-
+
@Test(expected=QueryException.class)
public void scope_07() { scope("SELECT (?o+1 AS ?x) { ?s ?p ?o } GROUP BY (?o+5 AS ?x)") ; }
+
+ @Test public void scope_08() { scope("SELECT (count(*) AS ?X) (?X+1 AS ?Z) { ?s ?p ?o }") ; }
+
+ @Test public void scope_09() { scope("SELECT (count(*) AS ?X) (?X+?o AS ?Z) { ?s ?p ?o } GROUP BY ?o") ; }
- @Test public void scope_08() { scope("SELECT (?o+1 AS ?x) { ?s ?p ?o MINUS { ?s ?p ?x} } ") ; }
+ @Test public void scope_10() { scope("SELECT (?o+1 AS ?x) { ?s ?p ?o MINUS { ?s ?p ?x} } ") ; }
@Test(expected=QueryException.class)
- public void scope_09() { scope("SELECT (?o+1 AS ?x) { { SELECT (123 AS ?x) {?s ?p ?o } } } ") ; }
+ public void scope_15() { scope("SELECT (?o+1 AS ?x) { { SELECT (123 AS ?x) {?s ?p ?o } } } ") ; }
- @Test public void scope_10() { scope("SELECT (?o+1 AS ?o) { { SELECT (123 AS ?x) {?s ?p ?o } } } ") ; }
- @Test public void scope_11() { scope("SELECT (?o+1 AS ?o) { { SELECT (123 AS ?x) {?s ?p ?o FILTER(?x > 57)} } } ") ; }
+ @Test public void scope_16() { scope("SELECT (?o+1 AS ?o) { { SELECT (123 AS ?x) {?s ?p ?o } } } ") ; }
+
+ @Test public void scope_17() { scope("SELECT (?o+1 AS ?o) { { SELECT (123 AS ?x) {?s ?p ?o FILTER(?x > 57)} } } ") ; }
+
@Test public void scope_20() { scope("SELECT ?x { ?x ?p ?o } GROUP BY ?x") ; }
@Test (expected=QueryException.class)