db-jdo-dev mailing list archives

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


Mime
View raw message