You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by an...@apache.org on 2010/03/03 15:00:40 UTC

svn commit: r918474 - in /cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/jdbc/ test/java/org/apache/cayenne/access/

Author: andrey
Date: Wed Mar  3 14:00:40 2010
New Revision: 918474

URL: http://svn.apache.org/viewvc?rev=918474&view=rev
Log:
CAY-1376 Certain EJBQL queries have mismatched table aliases.

Modified:
    cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.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/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/EJBQLGroupByTranslator.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/EJBQLGroupByTranslator.java?rev=918474&r1=918473&r2=918474&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java Wed Mar  3 14:00:40 2010
@@ -73,13 +73,14 @@
             @Override
             public boolean visitIdentificationVariable(EJBQLExpression expression) {
 
-                String idVariableAbsolutePath = idPath+"."+expression.getText();
+                String idVariableAbsolutePath = fullPath + "." + expression.getText();
                 ClassDescriptor descriptor = context.getEntityDescriptor(idVariableAbsolutePath);
                 if (descriptor != null) {
                     this.lastAlias = context.getTableAlias(idVariableAbsolutePath, descriptor.getEntity().getDbEntity().getFullyQualifiedName());
                 }
 
                 this.lastPathComponent = expression.getText();
+                this.fullPath = fullPath + '.' + lastPathComponent;
                 
                 return true;
             }

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=918474&r1=918473&r2=918474&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 Wed Mar  3 14:00:40 2010
@@ -50,7 +50,7 @@
     protected String lastAlias;
     protected String idPath;
     protected String joinMarker;
-    private String fullPath;
+    protected String fullPath;
     private boolean usingAliases;
 
     public EJBQLPathTranslator(EJBQLTranslationContext 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=918474&r1=918473&r2=918474&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 Wed Mar  3 14:00:40 2010
@@ -23,7 +23,6 @@
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.art.Artist;
 import org.apache.art.Gallery;
@@ -241,4 +240,18 @@
         }
     }
     
+    public void testGroupByChainedJoins() throws Exception {
+        createTestData("prepare");
+
+        String ejbql = "SELECT p.painting.toArtist.paintingArray FROM PaintingInfo p"
+                + " GROUP BY p.painting.toArtist.paintingArray";
+        EJBQLQuery query = new EJBQLQuery(ejbql);
+        List data = createDataContext().performQuery(query);
+        
+        ejbql = "SELECT p.painting.toArtist FROM PaintingInfo p"
+            + " GROUP BY p.painting.toArtist";
+        query = new EJBQLQuery(ejbql);
+        createDataContext().performQuery(query);
+    }
+    
 }