[ http://issues.apache.org/jira/browse/JDO-243?page=comments#action_12360314 ]
Michael Bouschen commented on JDO-243: -------------------------------------- my $0.02: I think it is dangerous to automatically add the field to the grouping, because this changes the semantics of the query as specified by the user. How do you know that the user forgot to add the field to the grouping. Maybe the error is a missing aggregate for the result field: "SELECT department, AVG(salary) FROM ...". I would prefer throwing an error and let the user fix the query. > 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