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/10 00:03:36 UTC
svn commit: r962708 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
Author: fancy
Date: Fri Jul 9 22:03:35 2010
New Revision: 962708
URL: http://svn.apache.org/viewvc?rev=962708&view=rev
Log:
OPENJPA-1715: OpenJPA generates wrong SQL for Oracle if a result variable that references an aggregate expression is used in ORDER BY clause
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=962708&r1=962707&r2=962708&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java Fri Jul 9 22:03:35 2010
@@ -330,11 +330,14 @@ public class OracleDictionary
int i = 0;
for (Iterator itr = aliases.iterator(); itr.hasNext(); i++) {
alias = itr.next();
+ String asString = null;
if (alias instanceof SQLBuffer)
- selectSQL.append((SQLBuffer) alias);
+ asString = ((SQLBuffer) alias).getSQL();
else
- selectSQL.append(alias.toString());
- selectSQL.append(" AS c").append(String.valueOf(i));
+ asString = alias.toString();
+ selectSQL.append(asString);
+ if (asString.indexOf(" AS ") == -1)
+ selectSQL.append(" AS c").append(String.valueOf(i));
if (itr.hasNext())
selectSQL.append(", ");
}
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=962708&r1=962707&r2=962708&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 Fri Jul 9 22:03:35 2010
@@ -75,6 +75,8 @@ public class TestJPQLScalarExpressions e
public void testAggregateResultVariable() {
EntityManager em = currentEntityManager();
String querys[] = {
+ "SELECT c.name, AVG(c.age) as age, a.city FROM CompUser c left join c.address a " +
+ " group by c.name, a.city order by age desc, c.name",
"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",
};