db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Bouschen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-194) JPOX does not support implicit variables.
Date Tue, 20 Dec 2005 18:57:35 GMT
    [ 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


Mime
View raw message