You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/01/26 13:59:34 UTC
svn commit: r903204 - in
/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java
Author: aadamchik
Date: Tue Jan 26 12:59:34 2010
New Revision: 903204
URL: http://svn.apache.org/viewvc?rev=903204&view=rev
Log:
CAY-1367 EJBQL: Implement support for relationship-ending paths in GROUP BY clause
combined patch by Ksenia Khailenko - fixing COUNT(..) syntax for Derby, et. al.
(cherry picked from commit 5fc7f8da4b335a24854eceb70a0c7e66b8b880ea)
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java?rev=903204&r1=903203&r2=903204&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java Tue Jan 26 12:59:34 2010
@@ -131,37 +131,16 @@
table.getFullyQualifiedName());
context.append(alias).append('.').append(attribute.getDbAttributeName());
}
- @Override
- public boolean visitIdentificationVariable(EJBQLExpression expression) {
-
- String idVariableAbsolutePath = idPath+"."+expression.getText();
- ClassDescriptor descriptor = context.getEntityDescriptor(idVariableAbsolutePath);
- if (descriptor != null) {
- this.lastAlias = context.getTableAlias(idVariableAbsolutePath, descriptor.getEntity().getDbEntityName());
- }
-
- this.lastPathComponent = expression.getText();
-
- return true;
- }
@Override
protected void processTerminatingRelationship(ObjRelationship relationship) {
-
Collection<DbAttribute> dbAttr = ((ObjEntity) relationship
.getTargetEntity()).getDbEntity().getAttributes();
- DbRelationship dbRelationship = relationship.getDbRelationships().get(0);
- DbEntity table = (DbEntity) dbRelationship.getTargetEntity();
-
if (dbAttr.size() > 0) {
this.resolveJoin(false);
}
-
- String alias = this.lastAlias != null ? lastAlias : context
- .getTableAlias(idPath, table.getFullyQualifiedName());
-
- context.append(alias).append(".*");
+ context.append('*');
}
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java?rev=903204&r1=903203&r2=903204&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java Tue Jan 26 12:59:34 2010
@@ -227,12 +227,20 @@
public void testGroupByJoinedEntityInCount() throws Exception {
createTestData("testGroupByEntities");
EJBQLQuery query = new EJBQLQuery(
- "SELECT COUNT(p.toArtist) FROM Painting p GROUP BY p.toArtist");
- List<Long> data = createDataContext().performQuery(query);
+ "SELECT COUNT(p.toArtist), p.paintingTitle FROM Painting p " +
+ "GROUP BY p.paintingTitle " +
+ "HAVING p.paintingTitle LIKE 'P1%'");
+ List<Object[]> data = createDataContext().performQuery(query);
assertNotNull(data);
assertEquals(3, data.size());
- for(Long result:data){
- assertTrue(result==3L||result==2L);
+
+ HashSet<List> expectedResults=new HashSet<List>();
+ expectedResults.add(Arrays.asList(1L, "P1"));
+ expectedResults.add(Arrays.asList(1L, "P111"));
+ expectedResults.add(Arrays.asList(1L, "P112"));
+
+ for(Object[] row:data){
+ assertFalse(expectedResults.add(Arrays.asList(row[0], row[1])));
}
}