You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-dev@db.apache.org by "Michael Watzek (JIRA)" <ji...@apache.org> on 2005/10/06 17:47:47 UTC

[jira] Created: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

JPOX fails on a query comparing the result of Map.get with an expression.
-------------------------------------------------------------------------

         Key: JDO-174
         URL: http://issues.apache.org/jira/browse/JDO-174
     Project: JDO
        Type: Bug
    Reporter: Michael Watzek
 Assigned to: Erik Bengtson 


JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:

SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 

org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
	at org.jpox.store.query.Query.execute(Query.java:803)
	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
	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


[jira] Resolved: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

Posted by "Andy Jefferson (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/JDO-174?page=all ]
     
Andy Jefferson resolved JDO-174:
--------------------------------

    Resolution: Fixed
     Assign To: Andy Jefferson  (was: Erik Bengtson)

Fixed in JPOX CVS

> JPOX fails on a query comparing the result of Map.get with an expression.
> -------------------------------------------------------------------------
>
>          Key: JDO-174
>          URL: http://issues.apache.org/jira/browse/JDO-174
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Andy Jefferson

>
> JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:
> SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 
> org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
> 	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
> 	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
> 	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
> 	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
> 	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
> 	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
> 	at org.jpox.store.query.Query.execute(Query.java:803)
> 	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
> 	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


[jira] Updated: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

Posted by "Michael Watzek (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/JDO-174?page=all ]

Michael Watzek updated JDO-174:
-------------------------------

    Component: tck20

Component set to tck20.


> JPOX fails on a query comparing the result of Map.get with an expression.
> -------------------------------------------------------------------------
>
>          Key: JDO-174
>          URL: http://issues.apache.org/jira/browse/JDO-174
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:
> SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 
> org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
> 	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
> 	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
> 	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
> 	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
> 	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
> 	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
> 	at org.jpox.store.query.Query.execute(Query.java:803)
> 	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
> 	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


[jira] Commented: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

Posted by "Craig Russell (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/JDO-174?page=comments#action_12332264 ] 

Craig Russell commented on JDO-174:
-----------------------------------

The information needed by the implementation is in the metadata for the class. I think the implementation should be able to do the cast itself based on the metadata, which in this case identifies the value-type (the return type of "get") as a String.

I could look at adding some more detail in the specification if you think it is useful, but the intent of the metadata is to allow specifying as much detail as is known about the types of the persistent fields.

I would agree with Erik if the value-type were not specific enough (for example, if the value-type were a superclass and the expression needed a subclass type).

        <class name="Person"
            identity-type="application"
            objectid-class="org.apache.jdo.tck.pc.company.Person$Oid">
            <field name="personid" primary-key="true"/>
            <field name="middlename" default-fetch-group="false"/>
            <field name="address"
                   persistence-modifier="persistent"/>
	    <field name="phoneNumbers" persistence-modifier="persistent">
                <map key-type="String" value-type="String"/>
            </field>
        </class>


> JPOX fails on a query comparing the result of Map.get with an expression.
> -------------------------------------------------------------------------
>
>          Key: JDO-174
>          URL: http://issues.apache.org/jira/browse/JDO-174
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:
> SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 
> org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
> 	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
> 	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
> 	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
> 	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
> 	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
> 	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
> 	at org.jpox.store.query.Query.execute(Query.java:803)
> 	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
> 	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


[jira] Commented: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

Posted by "Erik Bengtson (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/JDO-174?page=comments#action_12332209 ] 

Erik Bengtson commented on JDO-174:
-----------------------------------

Should you cast in the get return?

((String)phoneNumbers.get('home')) == '1111' 

> JPOX fails on a query comparing the result of Map.get with an expression.
> -------------------------------------------------------------------------
>
>          Key: JDO-174
>          URL: http://issues.apache.org/jira/browse/JDO-174
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:
> SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 
> org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
> 	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
> 	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
> 	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
> 	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
> 	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
> 	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
> 	at org.jpox.store.query.Query.execute(Query.java:803)
> 	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
> 	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


[jira] Commented: (JDO-174) JPOX fails on a query comparing the result of Map.get with an expression.

Posted by "Erik Bengtson (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/JDO-174?page=comments#action_12332268 ] 

Erik Bengtson commented on JDO-174:
-----------------------------------

Right, I forgot about this detail. We will cast it to the metadata type

> JPOX fails on a query comparing the result of Map.get with an expression.
> -------------------------------------------------------------------------
>
>          Key: JDO-174
>          URL: http://issues.apache.org/jira/browse/JDO-174
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> JPOX fails on a query comparing the result of Map.get with an expression. This bug may be reproduced applying patch JDO-159. The following query fails throwing an exception:
> SELECT FROM org.apache.jdo.tck.pc.company.Person WHERE phoneNumbers.get('home') == '1111' 
> org.jpox.store.expression.ScalarExpression$IllegalOperationException: Cannot perform operation "==" on ObjectExpression "THIS_PHONENUMBERS.PHONENO" and StringLiteral "'1111'"
> 	at org.jpox.store.expression.ScalarExpression.eq(ScalarExpression.java:325)
> 	at org.jpox.store.expression.ObjectExpression.eq(ObjectExpression.java:228)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1105)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1087)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1075)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1063)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1051)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1033)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1010)
> 	at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:888)
> 	at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:566)
> 	at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:636)
> 	at org.jpox.store.query.Query.executeWithMap(Query.java:891)
> 	at org.jpox.store.query.Query.executeWithArray(Query.java:871)
> 	at org.jpox.store.query.Query.execute(Query.java:803)
> 	at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:639)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:559)
> 	at org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:535)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.executeQuery(SupportedMapMethods.java:142)
> 	at org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods.testGet(SupportedMapMethods.java:115)
> 	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