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

Andy Jefferson commented on JDO-248:
------------------------------------

The test has  a query "SELECT phoneNumbers FROM FullTimeEmployee INTO 
java.util.Map
where "phoneNumbers" is a Map field.

The test seems to think that selecting a field that is a Map will mean that 
this will be loaded into the result class Map for each result row. That is not 
my understanding of why java.util.Map was added to the JDO2 spec as a valid 
result class. It was added so that all fields/columns in the result spec can be 
added to the Map using the put(key, value) method with the key being the field 
name. Perhaps the test should be changed to select some real fields and then 
test that they have been loaded into the result Map correctly.

> JPOX generates illegal SQL for queries using result class java.util.Map.
> ------------------------------------------------------------------------
>
>          Key: JDO-248
>          URL: http://issues.apache.org/jira/browse/JDO-248
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> Test case ResultClassRequirements fails because JPOX generates illegal SQL 
> for the query below. The query uses result class java.util.Map. The FROM 
> caluse of the generated SQL is empty.
> 14:23:04,625 (main) DEBUG [org.apache.jdo.tck] - Executing API query: SELECT 
> phoneNumbers INTO java.util.Map FROM 
> org.apache.jdo.tck.pc.company.FullTimeEmployee 
> 14:23:04,687 (main) INFO  [org.apache.jdo.tck] - Exception during setUp or 
> runtest: 
> javax.jdo.JDODataStoreException: Error executing JDOQL query "SELECT  FROM 
> applicationidentity0.PERSONS THIS WHERE THIS.DISCRIMINATOR = ?" : Syntax 
> error: Encountered "FROM" at line 1, column 9.
> ERROR 42X01: Syntax error: Encountered "FROM" at line 1, column 9.
>       at org.apache.derby.iapi.error.StandardException.newException(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(Unknown 
> Source)
>       at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
>       at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
>       at 
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
>  Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown 
> Source)
>       at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown 
> Source)
>       at 
> com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:190)
>       at org.jpox.store.StatementText.prepareStatement(StatementText.java:199)
>       at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:678)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:966)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:939)
>       at org.jpox.store.query.Query.execute(Query.java:862)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1151)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1029)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:966)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:946)
>       at 
> org.apache.jdo.tck.query.result.ResultClassRequirements.executeQuery(ResultClassRequirements.java:464)
>       at 
> org.apache.jdo.tck.query.result.ResultClassRequirements.testMap(ResultClassRequirements.java:424)
>       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)
> .
>       at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:747)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:966)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:939)
>       at org.jpox.store.query.Query.execute(Query.java:862)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1151)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1029)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:966)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:946)
>       at 
> org.apache.jdo.tck.query.result.ResultClassRequirements.executeQuery(ResultClassRequirements.java:464)
>       at 
> org.apache.jdo.tck.query.result.ResultClassRequirements.testMap(ResultClassRequirements.java:424)
>       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