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

Andy Seaborne edited comment on JENA-432 at 12/24/13 4:38 PM:
--------------------------------------------------------------

I realize the scope is different, but I don't see why the query is semantically 
different. There is nothing in the filter clause which refers to anything in 
the second part of the query. Besides, if you comment out the FILTER 
constraint, you get again a plan which makes sense (even without the block)

I agree the query is contrived, but the original was way too complex to show 
here and also shows proprietary stuff. But I don't see why it matters. The 
following plan:

{noformat}
(project (?test ?s1)
  (disjunction
    (table empty)
    (table empty)))
{noformat}

is never correct.


was (Author: shelsen):
I realize the scope is different, but I don't see why the query is semantically 
different. There is nothing in the filter clause which refers to anything in 
the second part of the query. Besides, if you comment out the FILTER 
constraint, you get again a plan which makes sense (even without the block)

I agree the query is contrived, but the original was way too complex to show 
here and also shows proprietary stuff. But I don't see why it matters. The 
following plan:

(project (?test ?s1)
  (disjunction
    (table empty)
    (table empty)))

is never correct.

> Filter optimization messes up when a nested select is present in the same 
> block
> -------------------------------------------------------------------------------
>
>                 Key: JENA-432
>                 URL: https://issues.apache.org/jira/browse/JENA-432
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: ARQ, Optimizer
>    Affects Versions: Jena 2.10.0
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>             Fix For: Jena 2.10.1
>
>
> The following test query:
> {noformat}
> SELECT ?test ?s1
> WHERE {
>   ?test ?p1 ?o1.
>   FILTER ( ?test = <http://localhost/t1> || ?test = <http://localhost/t2> )  
>   OPTIONAL {
>     SELECT ?s1
>     { ?s1 ?p2 ?o2 }
>   }
> }
> {noformat}
> produces the following plan:
> {noformat}
> (project (?test ?s1)
>   (disjunction
>     (table empty)
>     (table empty)))
> {noformat}
> Something goes wrong with the FILTER expansion. As a workaround, we observed 
> that the following variation:
> {noformat}
> SELECT ?test ?s1
> WHERE {
>   { ?test ?p1 ?o1.
>     FILTER ( ?test = <http://localhost/t1> || ?test = <http://localhost/t2> ) 
>  
>   }
>   OPTIONAL {
>     SELECT ?s1
>     { ?s1 ?p2 ?o2 }
>   }
> }
> {noformat}
> produces the correct plan:
> {noformat}
> (project (?test ?s1)
>   (leftjoin
>     (disjunction
>       (assign ((?test <http://localhost/t1>))
>         (bgp (triple <http://localhost/t1> ?p1 ?o1)))
>       (assign ((?test <http://localhost/t2>))
>         (bgp (triple <http://localhost/t2> ?p1 ?o1))))
>     (project (?s1)
>       (bgp (triple ?s1 ?/p2 ?/o2)))))
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to