[ 
https://issues.apache.org/jira/browse/JENA-885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Buquor updated JENA-885:
-----------------------------
    Description: 
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}

  was:
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


> 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:
> {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)

Reply via email to