Bug 39980

GemStone/S 64 Bit

2.3.1.6, 2.3.1, 2.3, 2.2.5.4, 2.2.5.3, 2.2.3, 2.2.x, 2.2, 2.1.x, 2.1

All

2.4

SelectBlock queries may error due to incorrect method names

Certain queries using select blocks may encounter does not understand errors, due to incorrectly updated method names.

Only a few specific queries are affected; queries with multiple
terms, of which two are internally condensed into a range query,
and in which the internal evaluation order results in the range
query not being the first predicate evaluated.

Workaround

file in the following as SystemUser and commit:

category: 'Indexing Support'
method: Object
_idxGreaterThanAndLessThanValues: valueArray

"This comparison operation is by the indexing subsystem to determine if the
receiver is within the given range of values.  The 'valueArray' argument is a
four-element Array consisting of #[ val1, bool1, val2, bool2 ].  val1 is the
lower bound value and bool1 specifies whether equal values are allowed.  val2
is the upper value and bool2 specifies whether equal values are allowed.
Returns true if the receiver satisfies the criteria."

(valueArray at: 2)
    ifTrue: [
        (self _idxForCompareGreaterThanOrEqualTo: (valueArray at: 1))
            ifTrue: [
                (valueArray at: 4)
                    ifTrue: [ ^ self _idxForCompareLessThanOrEqualTo: (valueArray at: 3) ]
                    ifFalse: [ ^ self _idxForCompareLessThan: (valueArray at: 3) ]
            ]
            ifFalse: [ ^ false ]
    ]
    ifFalse: [
          (self _idxForCompareGreaterThan: (valueArray at: 1))
            ifTrue: [
                (valueArray at: 4)
                    ifTrue: [ ^ self _idxForCompareLessThanOrEqualTo: (valueArray at: 3) ]
                    ifFalse: [ ^ self _idxForCompareLessThan: (valueArray at: 3) ]
            ]
            ifFalse: [ ^ false ]
    ]
%


Last updated: 5/19/09