[ 
http://issues.apache.org/jira/browse/JDO-243?page=comments#action_12360861 ] 

Craig Russell commented on JDO-243:
-----------------------------------

I've added this issue to the JDO specification issues list as Issue 149.

Ordering should have the same restrictions as for the Select clause. That is, 
if grouping is used, only expressions in the Grouping clause and aggregate 
expressions can be in the Ordering clause.

The JDO implementation is not permitted to modify the Select clause, the 
Grouping clause, or the Ordering clause. These are user-visible and should not 
be changed by the implementation.

However, the JDO implementation is required to construct valid SQL if the query 
is being used with a relational datastore. This means that the SQL SELECT might 
need to have expressions added to the user's Select clause to include 
expressions in the Grouping and Ordering clauses.

Today in the specification there are restrictions on the expressions that can 
be used in the Select clause if there is a Grouping clause:

<spec 14.6.10>
Only expressions in the Grouping clause and aggregate expressions can be in the 
Select clause. 
</spec 14.6.10>
A similar restriction is needed for the Ordering clause. 
<proposed>
Only expressions in the Grouping clause and aggregate expressions can be in the 
Ordering clause.
</proposed>

> 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

Reply via email to