db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: [jira] Commented: (JDO-243) JPOX must throw JDOUserException for group by queries which select non-grouped fields.
Date Wed, 14 Dec 2005 17:57:02 GMT
Hi Andy,

This raises some interesting questions. Thanks for persevering.

Craig

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

>     [ 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
>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message