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/28 09:30:24 UTC
svn commit: r903998 - in /cayenne/main/branches/STABLE-3.0:
docs/doc/src/main/resources/
framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/
framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/
Author: aadamchik
Date: Thu Jan 28 08:30:24 2010
New Revision: 903998
URL: http://svn.apache.org/viewvc?rev=903998&view=rev
Log:
CAY-1377 EJBQLQuery: when using relationships in the SELECT clause, must generate INNER, not OUTER JOINS
patch by Ksenia Khailenko with some edits
Modified:
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
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/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.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/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=903998&r1=903997&r2=903998&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt Thu Jan 28 08:30:24 2010
@@ -19,7 +19,6 @@
CAY-1326 Document Cayenne Embeddables Feature
CAY-1352 in "code generation" dialog add generation embeddables
CAY-1366 EJBQL: Support for fetch joins
-CAY-1371 EJBQL query doesn't preserve grouping by brackets
Bug Fixes Since 3.0RC1:
@@ -34,6 +33,8 @@
CAY-1367 EJBQL: Implement support for relationship-ending paths in GROUP BY clause
CAY-1368 Left Join and Prefetches do not work together
CAY-1369 EJBQL: Fix likeIgnoreCase issues
+CAY-1371 EJBQL query doesn't preserve grouping by brackets
+CAY-1377 EJBQLQuery: when using relationships in the SELECT clause, must generate INNER, not OUTER JOINS
----------------------------------
Release: 3.0 RC 1
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=903998&r1=903997&r2=903998&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 Thu Jan 28 08:30:24 2010
@@ -138,7 +138,7 @@
.getTargetEntity()).getDbEntity().getAttributes();
if (dbAttr.size() > 0) {
- this.resolveJoin(false);
+ this.resolveJoin(true);
}
context.append('*');
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.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/EJBQLJoinAppender.java?rev=903998&r1=903997&r2=903998&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java Thu Jan 28 08:30:24 2010
@@ -164,7 +164,7 @@
}
- context.append(" LEFT OUTER JOIN ");
+ context.append(" JOIN ");
context.append(subqueryTargetTableName).append(' ').append(
subqueryTargetAlias);
generateJoiningExpression(
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.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/EJBQLPathTranslator.java?rev=903998&r1=903997&r2=903998&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java Thu Jan 28 08:30:24 2010
@@ -137,6 +137,16 @@
}
}
else {
+ Relationship lastRelationship = currentEntity
+ .getRelationship(lastPathComponent);
+
+ ObjEntity targetEntity = null;
+ if (lastRelationship != null) {
+ targetEntity = (ObjEntity) lastRelationship.getTargetEntity();
+ }
+ else {
+ targetEntity = currentEntity;
+ }
// register join
if (inner) {
@@ -144,8 +154,6 @@
joinMarker,
new EJBQLTableId(idPath),
new EJBQLTableId(fullPath));
- this.lastAlias = context.getTableAlias(fullPath, currentEntity
- .getDbEntity().getFullyQualifiedName());
}
else {
joinAppender.appendOuterJoin(
@@ -153,14 +161,12 @@
new EJBQLTableId(idPath),
new EJBQLTableId(fullPath));
- Relationship lastRelationship = currentEntity
- .getRelationship(lastPathComponent);
- ObjEntity targetEntity = (ObjEntity) lastRelationship.getTargetEntity();
-
- this.lastAlias = context.getTableAlias(fullPath, targetEntity
- .getDbEntity().getFullyQualifiedName());
}
+ this.lastAlias = context.getTableAlias(fullPath, targetEntity
+ .getDbEntity()
+ .getFullyQualifiedName());
+
this.idPath = newPath;
}
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.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/EJBQLSelectColumnsTranslator.java?rev=903998&r1=903997&r2=903998&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java Thu Jan 28 08:30:24 2010
@@ -92,7 +92,7 @@
Iterator<DbAttribute> it = dbAttr.iterator();
if (dbAttr.size() > 0) {
- this.resolveJoin(false);
+ this.resolveJoin(true);
}
String alias = this.lastAlias != null ? lastAlias : context
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=903998&r1=903997&r2=903998&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 Thu Jan 28 08:30:24 2010
@@ -207,12 +207,9 @@
"GROUP BY p.toGallery, p.toArtist ");
List<Object[]> data = createDataContext().performQuery(query);
assertNotNull(data);
- assertEquals(5, data.size());
+ assertEquals(2, data.size());
HashSet<List> expectedResults=new HashSet<List>();
- expectedResults.add(Arrays.asList(3L, null,null));
- expectedResults.add(Arrays.asList(1L, "AA1",null));
- expectedResults.add(Arrays.asList(1L, "AA2",null));
expectedResults.add(Arrays.asList(1L, "AA2","gallery1"));
expectedResults.add(Arrays.asList(1L, "AA1","gallery2"));