[
https://issues.apache.org/jira/browse/JENA-885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14333465#comment-14333465
]
Mark Buquor commented on JENA-885:
----------------------------------
It doesn't appear to matter. I included the "if bound" in the testcase since
it's closer to real world cases I've seen, but it reproduces without the
conditional.
{noformat}
Timeout (ms): 30000
Query: SELECT DISTINCT ?g ?bound WHERE { OPTIONAL { ?g
<http://example.com/propA> ?a . OPTIONAL { ?a <http://example.com/label> ?c . }
} BIND ( ?c as ?bound ) }
Execution time (ms): 41
Execution time (ms): 40
Execution time (ms): 42
Query: SELECT DISTINCT ?g ?bound WHERE { OPTIONAL { ?g
<http://example.com/propA> ?a . OPTIONAL { ?a <http://example.com/label> ?c . }
BIND ( ?c as ?bound ) } }
Execution time (ms): 90469
Execution time (ms): 79572
Execution time (ms): 81128
Query: SELECT DISTINCT ?g ?bound WHERE { OPTIONAL { ?g
<http://example.com/propA> ?a . OPTIONAL { ?a <http://example.com/label> ?c .
BIND ( ?c as ?bound ) } } }
Execution time (ms): 84828
Execution time (ms): 86086
Execution time (ms): 82944
{noformat}
> Poor performance and timeout failure with BIND in nested OPTIONALs
> ------------------------------------------------------------------
>
> Key: JENA-885
> URL: https://issues.apache.org/jira/browse/JENA-885
> Project: Apache Jena
> Issue Type: Bug
> Affects Versions: Jena 2.11.2
> Reporter: Mark Buquor
> Attachments: ExecuteTestQueries.java, GenerateTestDataset.java
>
>
> There appears to be a performance issue with BIND when used inside nested
> OPTIONALs. Affected queries fail to time out.
> The following patterns appear to be affected:
> {noformat}
> OPTIONAL { ... OPTIONAL { ... BIND ( ... ) } }
> OPTIONAL { ... OPTIONAL { ... } BIND ( ... ) }
> {noformat}
> The following patterns appear to be unaffected:
> {noformat}
> OPTIONAL { ... OPTIONAL { ... } } BIND ( ... )
> OPTIONAL { ... BIND ( ... ) }
> OPTIONAL { ... } BIND ( ... )
> {noformat}
> So far, users have been able to work around the performance issue by
> rewriting their queries. However, the timeout failure is still a significant
> reliability issue, since affected queries consume resources and can run
> indefinitely. I've attached a testcase that exhibits the performance and
> timeout problems. Reproduced with a recent 2.13.0-SNAPSHOT build.
> {noformat}
> Execution Timeout (ms): 30000
> Query: PREFIX ex: <http://example.com/> SELECT ?s ?valueA { OPTIONAL { ?s
> ex:propA ?a . OPTIONAL { ?a ex:label ?labelA . } } BIND ( IF ( BOUND
> (?labelA), ?labelA, ?a) as ?valueA) }
> Execution time (ms): 586
> Execution time (ms): 143
> Query: PREFIX ex: <http://example.com/> SELECT ?s ?valueA { OPTIONAL { ?s
> ex:propA ?a . OPTIONAL { ?a ex:label ?labelA . } BIND ( IF ( BOUND (?labelA),
> ?labelA, ?a) as ?valueA) } }
> Execution time (ms): 110922
> Execution time (ms): 41004
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)