openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Di Wu Lau (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (OPENJPA-2356) Use new Offset/Limit/ROWNUM features in DB2 family of databases for range queries
Date Mon, 08 Jul 2013 22:11:48 GMT

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

Di Wu Lau updated OPENJPA-2356:
-------------------------------

    Attachment: OPENJPA-2356.patch

Fixed TestRangeQuery problem. Test now passes against Derby, DB2, Oracle, Mysql, Postgresql
and Hsql. Attached is the patch for fixing this issue.

The problem is database specific, in this case it is Derby. The number of rows get return
from Derby depends on the start and end index that was passed through setFirstResult and setMaxResults.
It then returns the total number of rows = endIdx - startIdx. This is not the actual row number
gets returned if end index < setMaxResults. That's why it needs the applyRange() method
to modify its total number of rows (count). 

On the other hand, the rest of the databases are not affected by end index. The mechanisms
they are using will always return the actual number of rows. (eg. "Limit", "Offset", "Fetch")
So they should not undergo the changes in method applyRange().

Therefore, we moved applyRange() from SelectImpl to DerbyDictionary to be specific only to
Derby. This fixed the problem. 
                
> Use new Offset/Limit/ROWNUM features in DB2 family of databases for range queries
> ---------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2356
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2356
>             Project: OpenJPA
>          Issue Type: Improvement
>            Reporter: Pinaki Poddar
>            Assignee: Pinaki Poddar
>             Fix For: 2.3.0
>
>         Attachments: graycol.gif, OPENJPA-2356.patch
>
>
> JPA queries that use setFirstResult() and/or setMaxResult() translate to some form of
Offset and Limit syntax in database SQL query. Recently DB2 and Derby has added ROWNUM and
FETCH offset respectively.
> OpenJPA should use these facilities when appropriate.   

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message