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 2008/01/22 23:19:36 UTC
svn commit: r614357 - in /cayenne/main/tags/3.0M3/cayenne:
docs/doc/src/main/resources/
framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/
framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/
fr...
Author: aadamchik
Date: Tue Jan 22 14:19:34 2008
New Revision: 614357
URL: http://svn.apache.org/viewvc?rev=614357&view=rev
Log:
CAY-974 Subquery EJBQL returns wrong entity in the result - need to patch it for M3
Modified:
cayenne/main/tags/3.0M3/cayenne/docs/doc/src/main/resources/RELEASE-NOTES.txt
cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryTest.java
cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLSubqueryTest.xml
Modified: cayenne/main/tags/3.0M3/cayenne/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/tags/3.0M3/cayenne/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=614357&r1=614356&r2=614357&view=diff
==============================================================================
--- cayenne/main/tags/3.0M3/cayenne/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/tags/3.0M3/cayenne/docs/doc/src/main/resources/RELEASE-NOTES.txt Tue Jan 22 14:19:34 2008
@@ -54,6 +54,7 @@
CAY-926 Refactoring class generator classes
CAY-932 Cancel doesn't cancel when quitting CM with a modified model
CAY-967 Caching doesn't work for paginated queries
+CAY-974 Subquery EJBQL returns wrong entity in the result
----------------------------------
Release: 3.0M2
Modified: cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
URL: http://svn.apache.org/viewvc/cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java?rev=614357&r1=614356&r2=614357&view=diff
==============================================================================
--- cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java (original)
+++ cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java Tue Jan 22 14:19:34 2008
@@ -327,7 +327,9 @@
@Override
public boolean visitIdentifier(EJBQLExpression expression) {
- rootId = normalizeIdPath(expression.getText());
+ if (appendingResultColumns) {
+ rootId = normalizeIdPath(expression.getText());
+ }
return false;
}
Modified: cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryTest.java?rev=614357&r1=614356&r2=614357&view=diff
==============================================================================
--- cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryTest.java (original)
+++ cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryTest.java Tue Jan 22 14:19:34 2008
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Set;
+import org.apache.art.Artist;
import org.apache.cayenne.DataObjectUtils;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.query.EJBQLQuery;
@@ -35,6 +36,31 @@
deleteTestData();
}
+ public void testDifferentEntity() throws Exception {
+ createTestData("prepare");
+
+ String ejbql = "SELECT a FROM Artist a"
+ + " WHERE EXISTS ("
+ + " SELECT DISTINCT p1 FROM Painting p1"
+ + " WHERE p1.toArtist = a"
+ + ")";
+
+ EJBQLQuery query = new EJBQLQuery(ejbql);
+ List objects = createDataContext().performQuery(query);
+ assertEquals(1, objects.size());
+
+ Set ids = new HashSet();
+ Iterator it = objects.iterator();
+ while (it.hasNext()) {
+ Object id = DataObjectUtils.pkForObject((Persistent) it.next());
+ ids.add(id);
+ }
+
+ assertTrue(ids.contains(33001l));
+
+ assertTrue("" + objects.get(0), objects.get(0) instanceof Artist);
+ }
+
public void testExists() throws Exception {
createTestData("prepare");
@@ -59,12 +85,12 @@
assertTrue(ids.contains(new Integer(33001)));
assertTrue(ids.contains(new Integer(33003)));
}
-
+
public void testAll() throws Exception {
- if(!getAccessStackAdapter().supportsAllAnySome()) {
+ if (!getAccessStackAdapter().supportsAllAnySome()) {
return;
}
-
+
createTestData("prepare");
String ejbql = "SELECT p FROM Painting p"
@@ -87,12 +113,12 @@
assertTrue(ids.contains(new Integer(33003)));
assertTrue(ids.contains(new Integer(33004)));
}
-
+
public void testAny() throws Exception {
- if(!getAccessStackAdapter().supportsAllAnySome()) {
+ if (!getAccessStackAdapter().supportsAllAnySome()) {
return;
}
-
+
createTestData("prepare");
String ejbql = "SELECT p FROM Painting p"
@@ -116,12 +142,12 @@
assertTrue(ids.contains(new Integer(33003)));
assertTrue(ids.contains(new Integer(33004)));
}
-
+
public void testSome() throws Exception {
- if(!getAccessStackAdapter().supportsAllAnySome()) {
+ if (!getAccessStackAdapter().supportsAllAnySome()) {
return;
}
-
+
createTestData("prepare");
String ejbql = "SELECT p FROM Painting p"
Modified: cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLSubqueryTest.xml
URL: http://svn.apache.org/viewvc/cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLSubqueryTest.xml?rev=614357&r1=614356&r2=614357&view=diff
==============================================================================
--- cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLSubqueryTest.xml (original)
+++ cayenne/main/tags/3.0M3/cayenne/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLSubqueryTest.xml Tue Jan 22 14:19:34 2008
@@ -3,14 +3,27 @@
<beans default-lazy-init="true">
+ <bean id="A1" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
+ <constructor-arg><value>
+ insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33001, 'artist1')
+ </value></constructor-arg>
+ </bean>
+ <bean id="A2" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
+ <constructor-arg><value>
+ insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33002, 'artist2')
+ </value></constructor-arg>
+ </bean>
+
<bean id="P1" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
<constructor-arg type="java.lang.Class">
<value>org.apache.art.Painting</value>
</constructor-arg>
<constructor-arg>
<value>
- INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE)
- VALUES (33001, 'P1', 3000)
+ INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE, ARTIST_ID)
+ VALUES (33001, 'P1', 3000, 33001)
</value>
</constructor-arg>
</bean>
@@ -21,8 +34,8 @@
</constructor-arg>
<constructor-arg>
<value>
- INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE)
- VALUES (33002, 'P2', 4000)
+ INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE, ARTIST_ID)
+ VALUES (33002, 'P2', 4000, 33001)
</value>
</constructor-arg>
</bean>
@@ -59,6 +72,8 @@
<bean id="prepare" class="java.util.ArrayList">
<constructor-arg>
<list>
+ <ref bean="A1" />
+ <ref bean="A2" />
<ref bean="P1" />
<ref bean="P2" />
<ref bean="P3" />