Bug 9537

GemStone/S

6.7.2.1, 6.7.2, 6.7.1, 6.7, 6.6.5, 6.6.4, 6.6.3.3, 6.6.3.2, 6.6.3, 6.6.2, 6.6.1, 6.6, 6.5.8, 6.5.7.5, 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.1, 5.1.5, 5.1.x, 5.0.x, 4.x

All

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.

Workaround

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: