Mark Buquor created JENA-885:
--------------------------------
Summary: 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
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:
OPTIONAL { ... OPTIONAL { ... BIND ( ... ) } }
OPTIONAL { ... OPTIONAL { ... } BIND ( ... ) }
The following patterns appear to be unaffected:
OPTIONAL { ... OPTIONAL { ... } } BIND ( ... )
OPTIONAL { ... BIND ( ... ) }
OPTIONAL { ... } BIND ( ... )
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.
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
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)