On Wed, Jun 15, 2011 at 3:04 PM, Emmanuel Lécharny <elecharny@apache.org> wrote:
> On 6/15/11 2:01 PM, Alex Karasulu wrote:
>>
>> On Wed, Jun 15, 2011 at 2:53 PM, Emmanuel Lecharny<elecharny@gmail.com>
>> wrote:
>>>
>>> Hi,
>>>
>>> I'm wondering if the following code snippet is just a bug, or if this was
>>> intended :
>>>
>>> public PresenceEvaluator( PresenceNode node, Store<Entry, ID> db,
>>> SchemaManager schemaManager )
>>> throws Exception
>>> {
>>> this.db = db;
>>> this.node = node;
>>> this.schemaManager = schemaManager;
>>> this.attributeType = node.getAttributeType();
>>>
>>> if ( db.hasUserIndexOn( attributeType ) )
>>> {
>>> idx = db.getPresenceIndex();
>>> }
>>> else
>>> {
>>> idx = null;
>>> }
>>> }
>>>
>>> In my case, the AttributeType is ObjectClass, which is a System index. I
>>> find it extremely doubtful that we want to set idx to null in this very
>>> case.
>>
>> This is valid code for the general case when you don't know what the
>> attributeType is. If the attributeType is not indexed then we cannot
>> use the presence index for =* evaluation. In the case of objectClass
>> this does seem moot but this code operates on all cases so it's valid.
>>
>> Does this explanation make sense?
>
> Yes, but the ObjectClass AT *is* indexed, so why don't we set the idx to
> point on the ObjectClass index ? This is what I don't understand.
>
> I was expecting such code :
>
>
>
> if ( db.hasUserIndexOn( attributeType ) || ( db.hasSystemIndexOn(
> attributeType ) )
> {
> idx = db.getPresenceIndex();
> }
> else
> {
> idx = null;
> }
OK I see what you mean. ObjectClass is a system index. Yes you are
right here. We changed this and did not update this code. I did not
understand this situation in my last post - my apologies.
Great catch!
Alex