Prepared SQL cache ordering problem with subqueries. 
-----------------------------------------------------

                 Key: OPENJPA-1719
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1719
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 2.0.0
            Reporter: Michael Dick
             Fix For: 2.0.1, 2.1.0


I've found what appears to be an ordering issue with subqueries and the 
prepared SQL cache. The attached patch shows where I think the problem lies and 
adds a test method that shows the problem. 

To summarize: When the prepared SQL cache is enabled we reorder the parameter 
values provided by the user. If a query contains named parameters and a 
subquery which also contains named parameters the placement of the subquery 
becomes important. 

The following query will work : 
SELECT p FROM Person p WHERE p.id IN (SELECT p1.id FROM Person p1 WHERE 
p1.lastUpdated >= :date ) AND p.name = :name

But this one fails with a SQLDataException.
SELECT p FROM Person p WHERE  p.name = :name AND p.id IN (SELECT p1.id FROM 
Person p1 WHERE p1.lastUpdated >= :date )

Assuming that the query is executed something like this : 
        Query query = em.createQuery(query);
        query.setParameter("name", "mike");
        query.setParameter("date", new java.sql.Date(1005397));  



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