[ https://issues.apache.org/jira/browse/JENA-885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Buquor updated JENA-885: ----------------------------- Attachment: GenerateTestDataset.java ExecuteTestQueries.java > 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)