[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#7570) fix MDB_GET_MULTIPLE and MDB_NEXT_MULTIPLE behaviour
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#7570) fix MDB_GET_MULTIPLE and MDB_NEXT_MULTIPLE behaviour
- From: hyc@symas.com
- Date: Sun, 14 Apr 2013 23:56:41 GMT
- Auto-submitted: auto-generated (OpenLDAP-ITS)
hyc@symas.com wrote:
> claude.brisson@gmail.com wrote:
>> Full_Name: Claude Brisson
>> Version: HEAD
>> OS: linux 64
>> URL: ftp://ftp.openldap.org/incoming/0001-fix-MDB_GET_MULTIPLE-and-MDB_NEXT_MULTIPLE.patch
>> Submission from: (NULL) (84.103.74.130)
>>
>>
>> In a db with MDB_DUPSORT flag, when there is only one DUP data for a key,
>> F_DUPDATA is not set for this key, and there is no sub-cursor.
>>
>> In this case, the current behaviour of MDB_GET_MULTIPLE and MDB_NEXT_MULTIPLE is
>> broken because they make the assumption that there is always a sub-cursor for
>> DUP data, which is only true for keys with more than one DUP data.
>>
>> This patch address this specific issue.
>
> Something's wrong with this patch, it breaks MDB_GET_MULTIPLE/NEXT_MULTIPLE
> usage in slapd. Need to investigate further.
>
The original code is correct. GET_MULTIPLE/NEXT_MULTIPLE are only valid when
there actually are duplicate records. MDB_NEXT_MULTIPLE is essentially just a
shortcut for calling MDB_NEXT_DUP in a loop. If there are no dups, then
MDB_NEXT_DUP (and MDB_NEXT_MULTIPLE) return MDB_NOTFOUND.
This patch was in mdb.master but has now been reverted. Closing this ITS.
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/