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