You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Allen Laack (JIRA)" <ji...@apache.org> on 2018/08/09 16:38:00 UTC

[jira] [Commented] (OLINGO-1183) JPAPage - Load all entities from DB, no paging on DB query

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

Allen Laack commented on OLINGO-1183:
-------------------------------------

I'm using olingo 2.0.6 and face the same issue. Salesforce.com's odata client sends both $top and $inlinecount for certain queries. When $inlinecount is passed, olingo ends up doing pagination in memory from all the db results so that it can also get a total record count for inlinecount. Eventually JVM out of memory issues appear. I think it would be better if olingo ran a count(*) from the db first to get the value for inlinecount and another query to get the result set using db pagination. FYI: I have olingo paired with eclipselink using an Oracle DB. DB pagination works, but only when $inlinecount isn't passed into olingo. Unfortunately, salesforce is passing it and I can't change salesforce.

> JPAPage - Load all entities from DB, no paging on DB query
> ----------------------------------------------------------
>
>                 Key: OLINGO-1183
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1183
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-jpa
>    Affects Versions: V2 2.0.8, V2 2.0.9
>            Reporter: Francesco longhitano
>            Priority: Major
>
> If i using the paging with $top, $skip and $inlinecount=allpages the class JPAPage load all entities from DB (howewer filtered by the where), no setting on top and skip for paginated query directly from db. That's a problem if the query return many result (in our case ~100000 of complex entity).
> I'm looking into the code and the problem is not so easy to resolve. The inlinecount is managed by ODataJPAResponseBuilderDefault, as an size() called on the result of query. Then if there is top or skip the class do a filter on the result list, to return to client only the correct entities. So even if i correct set top and skip on JPAPage modifing the method handlePaging using an custom implementation of JPAProcessor, then the result __count show an wrong result.
> Example URL
> Entities?$skip=10&$top=10&$inlinecount=allpages



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)