[ 
https://issues.apache.org/jira/browse/JENA-471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13685680#comment-13685680
 ] 

Rob Vesse commented on JENA-471:
--------------------------------

I added a specific test case for this in TestTransformQuads with an @Ignore 
attribute, I have removed the @Ignore and committed this back in now you've 
fixed this

The tests in question that caught this are actually just the DAWG tests run 
through our backend which uses Quad form algebra, if we wanted to add this to 
the ARQ regression suite we'd need a way to kick those off forcing all queries 
to be evaluated in Quad form.
                
> Regression in Algebra.toQuadForm() for nested sub-query with GRAPH clause
> -------------------------------------------------------------------------
>
>                 Key: JENA-471
>                 URL: https://issues.apache.org/jira/browse/JENA-471
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: ARQ
>    Affects Versions: Jena 2.10.1
>            Reporter: Rob Vesse
>            Assignee: Andy Seaborne
>             Fix For: Jena 2.10.2
>
>
> Our internal testing has flagged up a regression in behaviour between 2.10.0 
> and 2.10.1 with regards to Algebra.toQuadForm() when applied to sub-queries 
> nested within a GRAPH clause
> The query in question is as follows:
> {noformat}
> SELECT ?x 
> WHERE 
>   { GRAPH ?g 
>       { { SELECT ?x 
>           WHERE 
>             { ?x ?p ?g } 
>         } 
>       } 
>   } 
> {noformat}
> With 2.10.0 this produced the following algebra:
> {noformat}
> (project (?x)
>   (project (?x)
>     (quadpattern (quad ?g ?x ?p ?g))))
> {noformat}
> With 2.10.1 this now produces an exception:
> {noformat}
> com.hp.hpl.jena.sparql.ARQInternalErrorException
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVars$OpVarsPattern.visit(OpVars.java:197)
>       at com.hp.hpl.jena.sparql.algebra.op.OpProject.visit(OpProject.java:48)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpWalker$WalkerVisitor.visit1(OpWalker.java:86)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVisitorByType.visitModifer(OpVisitorByType.java:42)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVisitorByType.visit(OpVisitorByType.java:154)
>       at com.hp.hpl.jena.sparql.algebra.op.OpProject.visit(OpProject.java:48)
>       at com.hp.hpl.jena.sparql.algebra.OpWalker.walk(OpWalker.java:43)
>       at com.hp.hpl.jena.sparql.algebra.OpWalker.walk(OpWalker.java:33)
>       at com.hp.hpl.jena.sparql.algebra.OpVars.mentionedVars(OpVars.java:70)
>       at com.hp.hpl.jena.sparql.algebra.OpVars.mentionedVars(OpVars.java:62)
>       at 
> com.hp.hpl.jena.sparql.algebra.AlgebraQuad$Pusher.visit(AlgebraQuad.java:93)
>       at com.hp.hpl.jena.sparql.algebra.op.OpGraph.visit(OpGraph.java:46)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpWalker$WalkerVisitor.before(OpWalker.java:64)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpWalker$WalkerVisitor.visit1(OpWalker.java:84)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVisitorByType.visit(OpVisitorByType.java:110)
>       at com.hp.hpl.jena.sparql.algebra.op.OpGraph.visit(OpGraph.java:46)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpWalker$WalkerVisitor.visit1(OpWalker.java:85)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVisitorByType.visitModifer(OpVisitorByType.java:42)
>       at 
> com.hp.hpl.jena.sparql.algebra.OpVisitorByType.visit(OpVisitorByType.java:154)
>       at com.hp.hpl.jena.sparql.algebra.op.OpProject.visit(OpProject.java:48)
>       at com.hp.hpl.jena.sparql.algebra.OpWalker.walk(OpWalker.java:43)
>       at com.hp.hpl.jena.sparql.algebra.OpWalker.walk(OpWalker.java:38)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.applyTransformation(Transformer.java:156)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.transformation(Transformer.java:149)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.transformation(Transformer.java:138)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.transformation(Transformer.java:132)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.transform(Transformer.java:57)
>       at 
> com.hp.hpl.jena.sparql.algebra.Transformer.transformSkipService(Transformer.java:87)
>       at 
> com.hp.hpl.jena.sparql.algebra.AlgebraQuad.quadize(AlgebraQuad.java:56)
>       at com.hp.hpl.jena.sparql.algebra.Algebra.toQuadForm(Algebra.java:89)
> {noformat}
> I assume this regression happens because of the change to AlgebraQuad to use 
> OpVars.mentionedVars() in the 2.10.1 dev cycle
> While the 2.10.0 algebra may have actually been incorrect it didn't throw a 
> stack trace and I assume it is possible to make a valid quad transform on 
> this algebra.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to