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

Michael Bouschen commented on JDO-194:
--------------------------------------

Interesting! Yes, I'm using Windows. I think it has to do with queries using a 
variable with the same name as a class (modulo case). The above JDOQL query
  SELECT FROM org.apache.jdo.tck.pc.company.Employee WHERE 
team.contains(employee) & employee.firstname == 'emp1First' 
defines an implicit variable called employee where Employee is the base name of 
the candidate class. It does not matter whether the variable is defined 
implicitly or explicitly. The problem disappears if I change the variable name 
to e.g. 'emp'.

The method names in the stack trace suggest that JPOX tries to resolve the 
identifier 'employee' as class name. Is that the case. Which occurrence of 
'employee' is causing the problem, the contains argument or the left hand side 
of the equals comparison?

> JPOX does not support implicit variables.
> -----------------------------------------
>
>          Key: JDO-194
>          URL: http://issues.apache.org/jira/browse/JDO-194
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Erik Bengtson

>
> JPOX throws an exception executing queries having implicit parameters (see 
> below). The bug may be reproduced executing test case 
> org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields.
> Query: SELECT FROM org.apache.jdo.tck.pc.company.Employee WHERE 
> team.contains(employee) & employee.firstname == 'emp1First' 
> org.jpox.store.exceptions.NoSuchPersistentFieldException: Field "employee" 
> does not exist in org.apache.jdo.tck.pc.company.Person or is not persistent
>       at 
> org.jpox.store.rdbms.table.ClassTable.getFieldMapping(ClassTable.java:1790)
>       at 
> org.jpox.store.expression.TableExpression.newFieldExpression(TableExpression.java:183)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileIdentifier(JDOQLQuery.java:1534)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1299)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1346)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:891)
>       at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:569)
>       at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:639)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:907)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:887)
>       at org.jpox.store.query.Query.execute(Query.java:819)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:706)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:625)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:601)
>       at 
> org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields.testPositive(VariablesAndFields.java:148)
>       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