Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 33914 invoked from network); 10 Dec 2008 05:56:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Dec 2008 05:56:08 -0000 Received: (qmail 57574 invoked by uid 500); 10 Dec 2008 05:56:20 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 57560 invoked by uid 500); 10 Dec 2008 05:56:20 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 57551 invoked by uid 99); 10 Dec 2008 05:56:20 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Dec 2008 21:56:20 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Dec 2008 05:56:06 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 04586238887A; Tue, 9 Dec 2008 21:55:45 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r725004 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/jdbc/ test/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/unit/ test/resources/dml/ Date: Wed, 10 Dec 2008 05:55:44 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20081210055545.04586238887A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Tue Dec 9 21:55:44 2008 New Revision: 725004 URL: http://svn.apache.org/viewvc?rev=725004&view=rev Log: CAY-1144 EJBQL mixed GROUP BY clause is generated incorrectly adding comma between GROUP BY components Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/BasicCase.java cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLGroupByHavingTest.xml Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java?rev=725004&r1=725003&r2=725004&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java Tue Dec 9 21:55:44 2008 @@ -37,7 +37,12 @@ @Override public boolean visitIdentifier(EJBQLExpression expression) { - expression.visit(context.getTranslatorFactory().getIdentifierColumnsTranslator(context)); + if (itemCount++ > 0) { + context.append(','); + } + + expression.visit(context.getTranslatorFactory().getIdentifierColumnsTranslator( + context)); return false; } Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java?rev=725004&r1=725003&r2=725004&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java Tue Dec 9 21:55:44 2008 @@ -21,6 +21,7 @@ import java.math.BigDecimal; import java.util.List; +import org.apache.art.Artist; import org.apache.cayenne.query.EJBQLQuery; import org.apache.cayenne.unit.CayenneCase; @@ -80,6 +81,26 @@ assertEquals(new Long(2), row2[2]); } + public void testGroupByRelatedEntity() throws Exception { + + createTestData("testGroupByRelatedEntity"); + + String ejbql = "SELECT COUNT(p), a, a.artistName " + + "FROM Painting p INNER JOIN p.toArtist a GROUP BY a, a.artistName " + + "ORDER BY a.artistName"; + EJBQLQuery query = new EJBQLQuery(ejbql); + + List data = createDataContext().performQuery(query); + assertEquals(2, data.size()); + + assertTrue(data.get(0) instanceof Object[]); + Object[] row0 = (Object[]) data.get(0); + assertEquals(3, row0.length); + assertEquals(new Long(1), row0[0]); + assertEquals("AA1", row0[2]); + assertTrue(row0[1] instanceof Artist); + } + public void testGroupByIdVariable() throws Exception { createTestData("prepare"); Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/BasicCase.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/BasicCase.java?rev=725004&r1=725003&r2=725004&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/BasicCase.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/BasicCase.java Tue Dec 9 21:55:44 2008 @@ -32,7 +32,8 @@ public abstract class BasicCase extends TestCase { public static void assertEquals(BigDecimal d1, Object d2, double delta) { - assertTrue(d2 instanceof BigDecimal); + assertNotNull(d2); + assertTrue("d2: " + d2.getClass().getName(), d2 instanceof BigDecimal); BigDecimal d3 = d1.subtract((BigDecimal) d2); assertTrue(Math.abs(d3.doubleValue()) < delta); } Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLGroupByHavingTest.xml URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLGroupByHavingTest.xml?rev=725004&r1=725003&r2=725004&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLGroupByHavingTest.xml (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextEJBQLGroupByHavingTest.xml Tue Dec 9 21:55:44 2008 @@ -40,6 +40,48 @@ INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE) VALUES (33005, 'PZ', 1) + + + org.apache.art.Artist + + insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33001, 'AA1') + + + + + org.apache.art.Artist + + insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33002, 'AA2') + + + + + org.apache.art.Artist + + insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33003, 'BB1') + + + + + org.apache.art.Artist + + insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33004, 'BB2') + + + + + org.apache.art.Painting + + INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33007, 'P1', 33001, 3000) + + + + + org.apache.art.Painting + + INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33008, 'P2', 33002, 5000) + + @@ -56,4 +98,17 @@ + + + + + + + + + + + + + \ No newline at end of file