[ https://issues.apache.org/jira/browse/JDO-568?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12562896#action_12562896 ]
Andy Jefferson commented on JDO-568: ------------------------------------ "CorrelatedSubqueriesWithParameters" has a query of Query sub = pm.newQuery(Employee.class); sub.setResult("avg(this.weeklyhours)"); sub.setFilter("this.manager == :manager"); Query apiQuery = pm.newQuery(Employee.class); apiQuery.setFilter("this.weeklyhours> averageWeeklyhours"); apiQuery.addSubquery(sub, "double averageWeeklyhours", "this.department.employees", "this.manager"); which in single-string JDOQL is SELECT FROM Employee WHERE this.weeklyhours > (SELECT AVG(e.weeklyhours) FROM this.department.employees e WHERE e.manager == this.manager) JPOX is translating this into SELECT THIS.DISCRIMINATOR,THIS.DATASTORE_IDENTITY, ... FROM datastoreidentity0.PERSONS THIS WHERE (THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.Employee'> OR THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.PartTimeEmployee'> OR THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.FullTimeEmployee'>) AND THIS.WEEKLYHOURS > ( SELECT AVG(SUB.WEEKLYHOURS) FROM datastoreidentity0.PERSONS SUB INNER JOIN datastoreidentity0.DEPARTMENTS T1 ON T1.DATASTORE_IDENTITY = SUB.DEPARTMENT WHERE (SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.Employee'> OR SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.PartTimeEmployee'> OR SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.FullTimeEmployee'>) AND T1.DATASTORE_IDENTITY = THIS.DEPARTMENT AND THIS.MANAGER = SUB.MANAGER) which is correct in my understanding of the intention of correlated subqueries and their parameters. The JPOX query returns [PartTimeEmployee(9), FullTimeEmployee(6), FullTimeEmployee(2)] whereas the query is expecting [FullTimeEmployee(2), FullTimeEmployee(6)] Anyone see the error in the query ? or the expectations? The previous test "CorrelatedSubqueries" has the same query without the manager parameter and is generating the SQL SELECT THIS.DISCRIMINATOR,THIS.DATASTORE_IDENTITY, ... FROM datastoreidentity0.PERSONS THIS WHERE (THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.Employee'> OR THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.PartTimeEmployee'> OR THIS.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.FullTimeEmployee'>) AND THIS.WEEKLYHOURS > ( SELECT AVG(SUB.WEEKLYHOURS) FROM datastoreidentity0.PERSONS SUB INNER JOIN datastoreidentity0.DEPARTMENTS T1 ON T1.DATASTORE_IDENTITY = SUB.DEPARTMENT WHERE (SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.Employee'> OR SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.PartTimeEmployee'> OR SUB.DISCRIMINATOR = <'org.apache.jdo.tck.pc.company.FullTimeEmployee'>) AND T1.DATASTORE_IDENTITY = THIS.DEPARTMENT) and gives the expected result (with JPOX SVN) > Add subquery support to JPOX > ---------------------------- > > Key: JDO-568 > URL: https://issues.apache.org/jira/browse/JDO-568 > Project: JDO > Issue Type: Task > Components: tck2, tck2-legacy > Affects Versions: JDO 2 maintenance release 1 > Reporter: Michael Bouschen > Assignee: Andy Jefferson > Fix For: JDO 2 maintenance release 1 > > Attachments: JDO-568.patch > > > The subquery test cases currently fail, because JPOX does not yet support > subqueries: > [java] RUN CorrelatedSubqueries.testPositive ERROR > [java] RUN CorrelatedSubqueriesWithParameters.testPositive ERROR > [java] RUN MultipleCallsReplaceSubquery.testPositive ERROR > [java] RUN NonCorrelatedSubqueries.testPositive ERROR > [java] RUN NullCandidateCollectionExpression.testPositive ERROR > [java] RUN NullSubqueryParameter.testPositive ERROR > [java] RUN UnmodifiedSubqueryInstance.testPositive ERROR > Here is the corresponding JPOX JIRA: > http://www.jpox.org/servlet/jira/browse/CORE-3207. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.