Bug 9537

GemStone/S, 6.7.2, 6.7.1, 6.7, 6.6.5, 6.6.4,,, 6.6.3, 6.6.2, 6.6.1, 6.6, 6.5.8,, 6.5.7, 6.5.6, 6.5.5, 6.5.4, 6.5.2, 6.5.1, 6.5, 6.3.1, 6.3, 6.2.x, 6.2, 6.1.6, 6.1.5, 6.1.x, 6.0.x,, 5.1.5, 5.1.x, 5.0.x, 4.x


Reject queries along path containing * return wrong result

When the message reject: is along a path containing a set-valued
instance variable, such as reject: {:i|i.a.*.b=5}, the result
returned is the set difference between the receiver and a select:
using the same predicate.  An element in the collection is not
returned if any of the elements in the nested nonsequenceable
collection (represented by *) satisfies the rejection predicate.


The workaround involves two steps.  First, perform a select along
the path using the "not" of the operator in the rejection predicate.
Then, to the result of that select add all elements in the
collection that have a nil anywhere along the path of the reject.


Last updated: