Hi Andy,

This raises some interesting questions. Thanks for persevering.

Craig

On Dec 14, 2005, at 3:41 AM, Andy Jefferson (JIRA) wrote:


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
     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:
-
For more information on JIRA, see:


Craig Russell

Architect, Sun Java Enterprise System http://java.sun.com/products/jdo

408 276-5638 mailto:[EMAIL PROTECTED]

P.S. A good JDO? O, Gasp!


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to