You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2010/07/07 20:10:25 UTC

svn commit: r961449 - in /openjpa: branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/ trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/

Author: fancy
Date: Wed Jul  7 18:10:25 2010
New Revision: 961449

URL: http://svn.apache.org/viewvc?rev=961449&view=rev
Log:
OPENJPA-1715: OpenJPA generates wrong SQL if a result variable that references an aggregate expression is used in ORDER BY clause
add testcase.

Modified:
    openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java

Modified: openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java?rev=961449&r1=961448&r2=961449&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java Wed Jul  7 18:10:25 2010
@@ -20,6 +20,7 @@ package org.apache.openjpa.persistence.j
 
 import java.util.List;
 import javax.persistence.EntityManager;
+import javax.persistence.Query;
 
 import org.apache.openjpa.persistence.common.apps.*;
 import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
@@ -70,6 +71,22 @@ public class TestJPQLScalarExpressions e
     }
 
     @SuppressWarnings("unchecked")
+    public void testAggregateResultVariable() {
+        EntityManager em = currentEntityManager();
+        String querys[] = {
+            "SELECT c.name as name, SUM(c.age) as sage FROM CompUser c group by c.name order by sage desc, name",
+            "SELECT c.name, AVG(c.age) as age FROM CompUser c group by c.name order by age desc, c.name",
+        };
+        for (int i = 0; i < querys.length; i++) {
+            Query query = em.createQuery(querys[i]);
+            query.setFirstResult(1);
+            query.setMaxResults(4);
+            List<Object[]> rs = query.getResultList();
+            assertTrue((Long)((Object[]) rs.get(0))[1] > 0);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
     public void testMathAndAggregate() {
         EntityManager em = currentEntityManager();
         String query[] = {

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java?rev=961449&r1=961448&r2=961449&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java Wed Jul  7 18:10:25 2010
@@ -19,6 +19,8 @@
 package org.apache.openjpa.persistence.jpql.expressions;
 
 import java.util.List;
+
+import javax.persistence.Query;
 import javax.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.common.apps.*;
@@ -70,9 +72,26 @@ public class TestJPQLScalarExpressions e
     }
 
     @SuppressWarnings("unchecked")
+    public void testAggregateResultVariable() {
+        EntityManager em = currentEntityManager();
+        String querys[] = {
+            "SELECT c.name as name, SUM(c.age) as sage FROM CompUser c group by c.name order by sage desc, name",
+            "SELECT c.name, AVG(c.age) as age FROM CompUser c group by c.name order by age desc, c.name",
+        };
+        for (int i = 0; i < querys.length; i++) {
+            Query query = em.createQuery(querys[i]);
+            query.setFirstResult(1);
+            query.setMaxResults(4);
+            List<Object[]> rs = query.getResultList();
+            assertTrue((Long)((Object[]) rs.get(0))[1] > 0);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
     public void testMathAndAggregate() {
         EntityManager em = currentEntityManager();
         String query[] = {
+            "SELECT SUM(c.age) as age FROM CompUser c",
             "SELECT SUM(c.age) + SUM(c.userid) FROM CompUser c",
             "SELECT SUM(c.age) * SUM(c.userid) FROM CompUser c",
             "SELECT SUM(c.age) - MIN(c.userid) + MAX(c.userid) FROM CompUser c",