olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allen Laack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OLINGO-1183) JPAPage - Load all entities from DB, no paging on DB query
Date Thu, 09 Aug 2018 16:38:00 GMT

    [ 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)

Mime
View raw message