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

ASF subversion and git services commented on JENA-692:
------------------------------------------------------

Commit 1594256 from [~rvesse] in branch 'jena/trunk'
[ https://svn.apache.org/r1594256 ]

Improvements for filter implicit join to address the bug identified as JENA-692
The transformation is now more careful about checking whether it is valid to 
apply over union
It is also now capable of special casing unions where one branch can be seen to 
always evaluate to false in advance

Add various tests cases for these changes

> Filter implicit join optimization incorrect
> -------------------------------------------
>
>                 Key: JENA-692
>                 URL: https://issues.apache.org/jira/browse/JENA-692
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: ARQ
>    Affects Versions: Jena 2.11.0, Jena 2.11.1
>            Reporter: Andy Seaborne
>         Attachments: D.ttl, Q.rq
>
>
> (Starts at 2.11.0; 2.10.* is OK)
> The filter implicit join optimization misoptimizes the example - it pushes in 
> the equality but each arm is missing one of the variables.
> {noformat}
> PREFIX : <http://example.org/>
> SELECT *
> {
>   { ?a :p :o1 }
>   UNION
>   { ?b :p ?a }
>   FILTER ( ?a = ?b )
> }
> {noformat}
> The first arm of the UNION does include ?b and so {{( ?a = ?b )}} is false by 
> being an error with unbound {{?b}}
> Algebra translation:
> {noformat}
> (prefix ((: <http://example.org/>))
>   (filter (= ?a ?b)
>     (union
>       (bgp (triple ?a :p :o1))
>       (bgp (triple ?b :p ?a)))))
> {noformat}
> the optimization creates:
> {noformat}
> (prefix ((: <http://example.org/>))
>   (assign ((?a ?b))
>     (union
>       (bgp (triple ?b :p :o1))
>       (bgp (triple ?b :p ?b)))))
> {noformat}
> which has replaces the {{?a}} with {{?b}} in the first arm.
> {noformat}
> sparql --set arq:optImplicitJoin=false --file Q.rq --data D.ttl
> {noformat}
> yields the correct answers.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to