[389-devel] Please review (revised): [Bug 506786] Index maintenance mechanism causes wrong search results when modifying attributes with subtypes

Rich Megginson rmeggins at redhat.com
Tue Aug 11 14:16:29 UTC 2009


Noriko Hosoi wrote:
> Summary: Index maintenance mechanism causes wrong search results when 
> modifying attributes with subtypes
>
> https://bugzilla.redhat.com/show_bug.cgi?id=506786
>
> There was a not-working case found in my previous proposal.
>
> The problem is if these attribute value pairs exist in an entry:
>   mail: abc
>   mail;en: abc
>   mail;fr: xyz
> removing mail=abc or mail;en=abc, should not remove =abc from the 
> mail.db#.  My previous fix worked only when removing "mail;en=abc", 
> but not when removing "mail=abc".
>
> [Problem Description]
>
> When adding a value to an attribute with subtype indexed on equality 
> and then
> deleting this attribute subtype the index is not maintained correctly 
> which
> results in wrong search results afterwards. After stopping the server and
> reindexing with db2index everything works correctly again. The 
> unindexed and
> substring searches do not seem to be concerned.
>
> [Fix Description]
> When there are identical attribute value pairs except subtypes exist
> in an entry, if one of the pairs are deleted, it should not affect the
> index the attribute value is the key.
>
> e.g.,
>  mail: abc
>  mail;en: abc
>  mail;fr: xyz
>
>  removing mail=abc or mail;en=abc, should not remove =abc from the
>  mail.db#.
>
> This fix uses the value array evals to determine if the equality key
> in the index should be deleted or not.  The value array evals stores
> the values of the attribute in the entry after the deletion is done.
> If evals is empty, it means the to-be-deleted attribute value pair is
> the only pair in the entry.  Thus, the equality key can be removed fom
> the index.
>
> If evals has values, then the to-be-deleted attribute (curr_attr,
> which was retrieved from the old entry) value needs to be checked if
> it's in evals or not.  If it is in evals, the equality key is still
> used by other pair(s).  So, leave it.  Otherwise, the key can be
> removed.
>
> In the above example, let's assume removing mail=abc.  evals holds
> {"abc", "xyz"}.  curr_attr abc is in evals, thus =abc will not be
> removed.
ack
>
> ------------------------------------------------------------------------
>
> --
> 389-devel mailing list
> 389-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-directory-devel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3258 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/fedora-directory-devel/attachments/20090811/f546cdeb/attachment.bin>


More information about the Fedora-directory-devel mailing list