[ http://issues.apache.org/jira/browse/JDO-243?page=comments#action_12360413 ]
Andy Jefferson commented on JDO-243: ------------------------------------ OK, so lets take this one step further then. I look at "SingleStringQuery" test. It requires a query with a result clause, an ordering clause and a grouping clause. The grouping provided is consistent with the result clause, but the grouping clause doesnt include the field that is required for ordering. When we convert this into a SQL SELECT, using the policy of never adding anything that the user doesnt explicitly provide we would end up with a statement SELECT a, b FROM t GROUP BY a, b ORDER BY c and Derby will promptly throw an error because "c" is not in the SELECT clause. The JDO impl could add the ordering column(s) to the SELECT clause, but then Derby will promptly throw an error because "c" is not in the GROUP BY clause. "For a SELECT list with a GROUP BY, the list may only contain grouping columns and valid aggregate expressions" So what do we do in this situation? The implementation is presumably allowed to add the ordering column(s) to the select, but isn't permitted to add it to the grouping ? > JPOX must throw JDOUserException for group by queries which select > non-grouped fields. > -------------------------------------------------------------------------------------- > > Key: JDO-243 > URL: http://issues.apache.org/jira/browse/JDO-243 > Project: JDO > Type: Bug > Components: tck20 > Reporter: Michael Watzek > Assignee: Erik Bengtson > > Test case Grouping fails for the query below. The query is expected to throw > a JDOUserException because field salary is contained in the result clause and > not contained in the group by clause. > 14:22:49,328 (main) DEBUG [org.apache.jdo.tck] - Compiling API query: SELECT > department, salary FROM org.apache.jdo.tck.pc.company.Employee GROUP BY > department > 14:22:49,328 (main) DEBUG [org.apache.jdo.tck] - Query compilation must throw > JDOUserException: null > 14:22:49,328 (main) INFO [org.apache.jdo.tck] - Exception during setUp or > runtest: > junit.framework.AssertionFailedError: Assertion A14.6.10-1 (Grouping) failed: > Query compilation must throw JDOUserException: null > at junit.framework.Assert.fail(Assert.java:47) > at org.apache.jdo.tck.JDO_Test.fail(JDO_Test.java:546) > at org.apache.jdo.tck.query.QueryTest.compile(QueryTest.java:915) > at org.apache.jdo.tck.query.QueryTest.compile(QueryTest.java:878) > at > org.apache.jdo.tck.query.QueryTest.compileAPIQuery(QueryTest.java:793) > at > org.apache.jdo.tck.query.result.Grouping.testNegative(Grouping.java:122) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at junit.framework.TestCase.runTest(TestCase.java:154) > at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.textui.TestRunner.doRun(TestRunner.java:116) > at junit.textui.TestRunner.doRun(TestRunner.java:109) > at > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120) > at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
