[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Some openldap fixes... (fwd)

On Wed, Sep 20, 2000 at 07:34:15AM -0700, Kurt D. Zeilenga wrote:
> At 08:07 PM 9/19/00 +0200, Marijn Meijles wrote:
> >I hope this is clear enough :)
> I understand DB_SET_RANGE... I'm just having a tough time
> convincing myself that this use of it correct for subtree
> searches.  Let me run through some examples...
> 1) search base is parent of an entry containing the value
> the key for this parent is returned, it only contains IDs
> only for immediate children of the base with the value.
> You say you merge IDLs for <base dn*>.  I assume this
> means that for each value the server reads additional keys
> and merging IDLs until the key is outside of scope.  This
> would means that the server needs to fetch and merge a key
> for each container in scope which contains one or more
> matching entries.  This can get quite expensive.  Is this
> correct?
true,.. this now takes something like:
O( E_i E_{j<i} n_j + n_i)

however,.. if i change the idl_union call to idl_cat
and post process with qsort it will be like:
O( i + m ln(m)) where: m = E_i n_i

which is much nicer :)
> 2) search base is parent of the parent of an entry
> containing the value.  The first key as it's greater
> than the search key.  Otherwise same as above.
> 3) search base is child of the parent of an entry
> containing the value.   The key is not returned as
> it's less than the search base.  Is this correct?
you got me here :)

however we're building candidate tables, thus one needs
only provide an upper bound. so my proposition would be
to always include the base id.