================================================================================
Merge Diffs: /ade/cdelahun_toplinkmain/tldev/source/essentials/oracle/toplink/essentials/queryframework/ReportQuery.java vs. /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000001/AB0952363AC40CBFE034080020E8C54E.28
Report generated at Fri Aug 11 12:38:13 2006
--------------------------------------------------------------------------------
*** /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000001/AB0952363AC40CBFE034080020E8C54E.28	Thu Aug 10 15:33:51 2006
--- /ade/cdelahun_toplinkmain/tldev/source/essentials/oracle/toplink/essentials/queryframework/ReportQuery.java	Fri Aug 11 12:38:12 2006
***************
*** 960,972 ****
                                      subSelect.setSelectionCriteria(countExp.equal(outerBuilder));
                                  }
                                  setSelectionCriteria(outerBuilder.exists(subSelect));
!                                 getItems().setElementAt(new ReportItem(countItem.getName(), outerBuilder.count()), i);
                                  setReferenceClass(newDescriptor.getJavaClass());
                                  changeDescriptor(getSession());
                              } else {
                                  // Here everything worked fine, save an empty COUNT() was being generated.
!                                 Expression newCount = countExp.prefixSQL("*").count();
!                                 getItems().setElementAt(new ReportItem(countItem.getName(), newCount), i);
                              }
                          }
                      }
--- 960,975 ----
                                      subSelect.setSelectionCriteria(countExp.equal(outerBuilder));
                                  }
                                  setSelectionCriteria(outerBuilder.exists(subSelect));
!                                 count.setBaseExpression(outerBuilder);
!                                 count.getChildren().setElementAt( outerBuilder, 0);
                                  setReferenceClass(newDescriptor.getJavaClass());
                                  changeDescriptor(getSession());
                              } else {
                                  // Here everything worked fine, save an empty COUNT() was being generated.
!                                 Expression newCountEx = countExp.prefixSQL("*");
!                                 // modify the original count expression incase it is used elsewhere - such as in a having clause
!                                 count.setBaseExpression(newCountEx);
!                                 count.getChildren().setElementAt( newCountEx, 0);
                              }
                          }
                      }
================================================================================
Merge Diffs: /ade/cdelahun_toplinkmain/tltest/source/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLComplexAggregateTestSuite.java vs. /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000002/AB0952363AC40CBFE034080020E8C54E.10
Report generated at Fri Aug 11 12:38:13 2006
--------------------------------------------------------------------------------
*** /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000002/AB0952363AC40CBFE034080020E8C54E.10	Thu Aug 10 15:34:37 2006
--- /ade/cdelahun_toplinkmain/tltest/source/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLComplexAggregateTestSuite.java	Fri Aug 11 12:38:13 2006
***************
*** 111,117 ****
          suite.setName("JUnitEJBQLComplexAggregateTestSuite");
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexAVGTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByAndHavingTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexDistinctCountTest"));
--- 111,118 ----
          suite.setName("JUnitEJBQLComplexAggregateTestSuite");
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexAVGTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByAndHavingTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByTest2"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexDistinctCountTest"));
***************
*** 119,125 ****
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexMinTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexSumTest"));
          
-         
          return new TestSetup(suite) {
       
              //This method is run at the end of the SUITE only
--- 120,125 ----
***************
*** 240,245 ****
--- 240,274 ----
          Assert.assertTrue("Complex COUNT(Distinct) with Group By test failed", comparer.compareObjects(result, expectedResult));                      
      }
      
+     /*
+      * test for gf675, using count, group by and having fails.  This test is specific for a a use case
+      * where DISTINCT is used with Count and group by
+      */
+     public void complexCountDistinctWithGroupByTest2()
+     {
+         oracle.toplink.essentials.ejb.cmp3.EntityManager em = (oracle.toplink.essentials.ejb.cmp3.EntityManager) createEntityManager();                  
+         
+         //need to set the class in the expressionbuilder, as the Count(Distinct) will cause the 
+         // query to change and be built around the Employee class instead of the Address class.  
+         ExpressionBuilder expbldr = new ExpressionBuilder(Address.class);
+             
+         ReportQuery rq = new ReportQuery(Address.class, expbldr);
+         Expression exp = expbldr.anyOf("employees");
+ 
+         Expression exp2 = expbldr.get("city");
+         rq.addAttribute("city", exp2);
+         rq.addCount("COUNT1",exp, Long.class);
+         rq.addCount("COUNT2",exp.get("lastName").distinct(),Long.class );
+         rq.addGrouping(exp2);
+         Vector expectedResult = (Vector) em.getActiveSession().executeQuery(rq);
+         
+         String ejbqlString3 = "SELECT a.city, COUNT( e ), COUNT( DISTINCT e.lastName ) FROM Address a JOIN a.employees e GROUP BY a.city";
+         Query q = em.createQuery(ejbqlString3);
+         List result = (List) q.getResultList();
+         
+         Assert.assertTrue("Complex COUNT(Distinct) with Group By test failed", comparer.compareObjects(result, expectedResult));                      
+     }
+     
      public void complexCountTest()
      {
          oracle.toplink.essentials.ejb.cmp3.EntityManager em = (oracle.toplink.essentials.ejb.cmp3.EntityManager) createEntityManager();                  
================================================================================
Merge Diffs: /ade/cdelahun_toplinkmain/tldev/source/essentials/oracle/toplink/essentials/queryframework/ReportQuery.java vs. /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000001/AB0952363AC40CBFE034080020E8C54E.28
Report generated at Fri Aug 11 12:44:18 2006
--------------------------------------------------------------------------------
*** /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000001/AB0952363AC40CBFE034080020E8C54E.28	Thu Aug 10 15:33:51 2006
--- /ade/cdelahun_toplinkmain/tldev/source/essentials/oracle/toplink/essentials/queryframework/ReportQuery.java	Fri Aug 11 12:38:12 2006
***************
*** 960,972 ****
                                      subSelect.setSelectionCriteria(countExp.equal(outerBuilder));
                                  }
                                  setSelectionCriteria(outerBuilder.exists(subSelect));
!                                 getItems().setElementAt(new ReportItem(countItem.getName(), outerBuilder.count()), i);
                                  setReferenceClass(newDescriptor.getJavaClass());
                                  changeDescriptor(getSession());
                              } else {
                                  // Here everything worked fine, save an empty COUNT() was being generated.
!                                 Expression newCount = countExp.prefixSQL("*").count();
!                                 getItems().setElementAt(new ReportItem(countItem.getName(), newCount), i);
                              }
                          }
                      }
--- 960,975 ----
                                      subSelect.setSelectionCriteria(countExp.equal(outerBuilder));
                                  }
                                  setSelectionCriteria(outerBuilder.exists(subSelect));
!                                 count.setBaseExpression(outerBuilder);
!                                 count.getChildren().setElementAt( outerBuilder, 0);
                                  setReferenceClass(newDescriptor.getJavaClass());
                                  changeDescriptor(getSession());
                              } else {
                                  // Here everything worked fine, save an empty COUNT() was being generated.
!                                 Expression newCountEx = countExp.prefixSQL("*");
!                                 // modify the original count expression incase it is used elsewhere - such as in a having clause
!                                 count.setBaseExpression(newCountEx);
!                                 count.getChildren().setElementAt( newCountEx, 0);
                              }
                          }
                      }
================================================================================
Merge Diffs: /ade/cdelahun_toplinkmain/tltest/source/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLComplexAggregateTestSuite.java vs. /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000002/AB0952363AC40CBFE034080020E8C54E.10
Report generated at Fri Aug 11 12:44:18 2006
--------------------------------------------------------------------------------
*** /net/stottnfs2.ca.oracle.com/vol/vol1/ade_ottawa_txn/cdelahun/cdelahun_ri_gf675_5236954_060810/ade_storage/000002/AB0952363AC40CBFE034080020E8C54E.10	Thu Aug 10 15:34:37 2006
--- /ade/cdelahun_toplinkmain/tltest/source/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLComplexAggregateTestSuite.java	Fri Aug 11 12:38:13 2006
***************
*** 111,117 ****
          suite.setName("JUnitEJBQLComplexAggregateTestSuite");
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexAVGTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByAndHavingTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexDistinctCountTest"));
--- 111,118 ----
          suite.setName("JUnitEJBQLComplexAggregateTestSuite");
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexAVGTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByAndHavingTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByTest"));
!         suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountDistinctWithGroupByTest2"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexCountWithGroupByTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexDistinctCountTest"));
***************
*** 119,125 ****
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexMinTest"));
          suite.addTest(new JUnitEJBQLComplexAggregateTestSuite("complexSumTest"));
          
-         
          return new TestSetup(suite) {
       
              //This method is run at the end of the SUITE only
--- 120,125 ----
***************
*** 240,245 ****
--- 240,274 ----
          Assert.assertTrue("Complex COUNT(Distinct) with Group By test failed", comparer.compareObjects(result, expectedResult));                      
      }
      
+     /*
+      * test for gf675, using count, group by and having fails.  This test is specific for a a use case
+      * where DISTINCT is used with Count and group by
+      */
+     public void complexCountDistinctWithGroupByTest2()
+     {
+         oracle.toplink.essentials.ejb.cmp3.EntityManager em = (oracle.toplink.essentials.ejb.cmp3.EntityManager) createEntityManager();                  
+         
+         //need to set the class in the expressionbuilder, as the Count(Distinct) will cause the 
+         // query to change and be built around the Employee class instead of the Address class.  
+         ExpressionBuilder expbldr = new ExpressionBuilder(Address.class);
+             
+         ReportQuery rq = new ReportQuery(Address.class, expbldr);
+         Expression exp = expbldr.anyOf("employees");
+ 
+         Expression exp2 = expbldr.get("city");
+         rq.addAttribute("city", exp2);
+         rq.addCount("COUNT1",exp, Long.class);
+         rq.addCount("COUNT2",exp.get("lastName").distinct(),Long.class );
+         rq.addGrouping(exp2);
+         Vector expectedResult = (Vector) em.getActiveSession().executeQuery(rq);
+         
+         String ejbqlString3 = "SELECT a.city, COUNT( e ), COUNT( DISTINCT e.lastName ) FROM Address a JOIN a.employees e GROUP BY a.city";
+         Query q = em.createQuery(ejbqlString3);
+         List result = (List) q.getResultList();
+         
+         Assert.assertTrue("Complex COUNT(Distinct) with Group By test failed", comparer.compareObjects(result, expectedResult));                      
+     }
+     
      public void complexCountTest()
      {
          oracle.toplink.essentials.ejb.cmp3.EntityManager em = (oracle.toplink.essentials.ejb.cmp3.EntityManager) createEntityManager();