Details

Type: Test

Status: Closed

Priority: Major

Resolution: Fixed

Affects Version/s: None

Fix Version/s: JDO 2 maintenance release 1 (2.1)

Component/s: tck

Labels:None
Description
Test org.apache.jdo.tck.query.api.ChangeQuery expects 3 result objects:
List expectedResult = Arrays.asList(new Object[]
{ new FullName("emp1First", "emp1Last"), new FullName("emp2First", "emp2Last"), new FullName("emp5First", "emp5Last")});
But actually there should be 4 result objects:
List expectedResult = Arrays.asList(new Object[]
{ new FullName("emp1First", "emp1Last"), new FullName("emp2First", "emp2Last"), new FullName("emp2First", "emp2Last"), new FullName("emp5First", "emp5Last")});
because the result is not specified as DISTINCT.
Right.
The query is
"SELECT firstname, lastname INTO FullName FROM FullTimeEmployee " +
"WHERE salary > 1000 & projects.contains(p) & " +
"p.budget > limit " +
"VARIABLES Project p PARAMETERS BigDecimal limit " +
"ORDER BY personid ASCENDING RANGE 0, 5";
Evaluation is done by 14.6.9:
The candidate tuples are
the cartesian product of the candidate class and all variables used in the result. The result tuples are
the tuples of the candidate class and all variables used in the result that satisfy the filter. The result
is the collection of result expressions projected from the result tuples.
The candidate tuples (the cartesian product of the three full time employees (1, 2, 5) with the three projects (1, 2, 3)) has nine tuples.
Of these nine, the result tuples are only
{(emp1, proj1), (emp2, proj1), (emp2, proj2), (emp5, proj3)}, that satisfy the condition.
The projection should have four result objects.