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

Craig Russell commented on JDO-310:
-----------------------------------

>From the JPOX log, the query:

SELECT distinct e FROM org.apache.jdo.tck.pc.company.Department WHERE deptid==2 
& employees.contains(e) VARIABLES Employee e 

generates this SQL:

SELECT DISTINCT UNBOUND_E.DATASTORE_IDENTITY FROM 
datastoreidentity0.DEPARTMENTS THIS,datastoreidentity0.PERSONS UNBOUND_E WHERE 
EXISTS (SELECT 1 FROM datastoreidentity0.PERSONS THIS_EMPLOYEES_E WHERE 
THIS_EMPLOYEES_E.DEPARTMENT = THIS.DATASTORE_IDENTITY AND 
THIS_EMPLOYEES_E.DEPARTMENT = THIS.DATASTORE_IDENTITY AND THIS.ID = <2>

[The subselect doesn't use the same variables so it's not a correlated 
query.The UNBOUND_E doesn't correlate with THIS_EMPLOYEES_E in the subquery]

followed by two queries loading the state each of the instances found

SELECT 
THIS.BIRTHDATE,THIS.FIRSTNAME,THIS.LASTNAME,THIS.PERSONID,THIS.HIREDATE,THIS.WEEKLYHOURS,THIS.WAGE
 FROM datastoreidentity0.PERSONS THIS WHERE (THIS.DATASTORE_IDENTITY=<15235>
SELECT "TYPE",PHONENO FROM datastoreidentity0.EMPLOYEE_PHONENO_TYPE WHERE EMPID 
= <15235> AND "TYPE" IS NOT NULL  -- 1 PS parameters


> JPOX fails test VariableInResult.testDistinctNoNavigation with 
> JDODataStoreException from Derby
> -----------------------------------------------------------------------------------------------
>
>          Key: JDO-310
>          URL: http://issues.apache.org/jira/browse/JDO-310
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Bouschen
>     Assignee: Erik Bengtson
>      Fix For: JDO 2 final
>  Attachments: variables.patch
>
> Test methods testDistinctNoNavigation and testNoNavigation of 
> org.apache.jdo.tck.query.result.VariableInResult fail throwing a 
> JDODataStoreException.  The error messages says: "ERROR 42972: An ON clause 
> associated with a JOIN operator is not valid.".
> Here is the stacktace for method testDistinctNoNavigation, the other 
> stacktrace is the same:
> 1) 
> testDistinctNoNavigation(org.apache.jdo.tck.query.result.VariableInResult)javax.jdo.JDODataStoreException:
>  Error executing JDOQL query "SELECT DISTINCT UNBOUND_P.PROJID FROM 
> applicationidentity0.PERSONS THIS,applicationidentity0.PROJECTS UNBOUND_P 
> WHERE EXISTS (SELECT 1 FROM applicationidentity0.PROJECT_MEMBER 
> THIS_PROJECTS_P LEFT OUTER JOIN applicationidentity0.PROJECTS UNBOUND_P_NAME 
> ON UNBOUND_P.PROJID = UNBOUND_P_NAME.PROJID WHERE THIS_PROJECTS_P."MEMBER" = 
> THIS.PERSONID AND THIS_PROJECTS_P."MEMBER" = THIS.PERSONID AND 
> UNBOUND_P.PROJID = THIS_PROJECTS_P.PROJID AND UNBOUND_P_NAME."NAME" = ? AND 
> (THIS.DISCRIMINATOR = ? OR THIS.DISCRIMINATOR = ? OR THIS.DISCRIMINATOR = 
> ?))" : An ON clause associated with a JOIN operator is not valid.
> ERROR 42972: An ON clause associated with a JOIN operator is not valid.
>       at org.apache.derby.iapi.error.StandardException.newException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.compile.JoinNode.deferredBindExpressions(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.JoinNode.bindResultColumns(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.FromList.bindResultColumns(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.compile.SelectNode.bindResultColumns(Unknown Source)
>       at 
> org.apache.derby.impl.sql.compile.SubqueryNode.bindExpression(Unknown Source)
>       at org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.ReadCursorNode.bind(Unknown Source)
>       at org.apache.derby.impl.sql.compile.CursorNode.bind(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:241)
>       at org.jpox.store.rdbms.RDBMSManager.getStatement(RDBMSManager.java:355)
>       at org.jpox.store.StatementText.prepareStatement(StatementText.java:204)
>       at org.jpox.store.query.Query.getStatement(Query.java:797)
>       at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:516)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:1113)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:1086)
>       at org.jpox.store.query.Query.execute(Query.java:1009)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1192)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1070)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:1007)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:987)
>       at 
> org.apache.jdo.tck.query.result.VariableInResult.testDistinctNoNavigation(VariableInResult.java:138)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>       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:570)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:1113)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:1086)
>       at org.jpox.store.query.Query.execute(Query.java:1009)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1192)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:1070)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:1007)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:987)
>       at 
> org.apache.jdo.tck.query.result.VariableInResult.testDistinctNoNavigation(VariableInResult.java:138)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>       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