db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Jefferson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-243) JPOX must throw JDOUserException for group by queries which select non-grouped fields.
Date Wed, 14 Dec 2005 11:41:47 GMT
    [ 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


Mime
View raw message