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

Catalina Wei reopened OPENJPA-703:
----------------------------------


The JPQL queries are not cached until PreparedResultObjectProvider and 
SQLProjectResultObjectProvider can handle complex query results. 
Queries having following characteristics are not cached:

1. resulting entity class is not candidate type,
    select e.dept from Employee e
2: query returning any embeddable class
    select e.address from Employee e
3. query returning more than one entity class
    select d, e from Dept d, in (d.emps) e
4. query contains ORDER BY clause
    select e.name from Employee e order by e.salary
5. query returning basic types but SQL result columns don't match with JPQL 
selections
    select e.name, e.name from Employee e

6. JPQL query returning boolean value where SQL returning 0 or 1
    select e.name, e.isManager from Employee e

The revision r773404 has code in place that detects the characteristics of 
queries and not caching them,
It is to  avoid cached query returning wrong answer.

The query cache-ability detection logic may not complete (
the query example 6 is currently cached and give wrong answer).

This issue is reopened to re-evaluate the cache-ability of the queries having 
the characteristics as listed above.


> Cache ResultObjectProvider data to improve query performance
> ------------------------------------------------------------
>
>                 Key: OPENJPA-703
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-703
>             Project: OpenJPA
>          Issue Type: Improvement
>          Components: kernel
>            Reporter: Ron Pressler
>            Assignee: Pinaki Poddar
>             Fix For: 2.0.0-M1
>
>         Attachments: PreparedQueryCache.pdf
>
>
> Profiling indicated that JDBCStoreQuery.populateSelect consumes a significant 
> amount of CPU, and is executed every time a query is run. While, in fact, the 
> actual PreparedStatement is created and run only in QueryImpl.toResult. It 
> seems like the returned ResultObjectProvider from JDBCStoreQuery.executeQuery 
> can be at least partially cached, or even cached in its entirety (provided 
> care is taken with the context parameters). 
> It seems like such an improvement would significantly improve query 
> performance.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to