All hdb and mdb tests OK on RHEL6.3 X86_64with bdb 5.3.21.
I also successfully slapadded in a mdb database a known problematic
(with 2.4.33) database.
On Tue, Dec 11, 2012 at 12:49 AM, Quanah Gibson-Mount <quanah(a)zimbra.com>wrote:
> Current RE24 is ready for testing for the 2.4.34 release.
> Quanah Gibson-Mount
> Sr. Member of Technical Staff
> Zimbra, Inc
> A Division of VMware, Inc.
> Zimbra :: the leader in open source messaging and collaboration
In schema_init.c hashPreset() we compute the initial value of the index hash.
This includes a prefix string which is usually the attribute's canonical name,
a prefix character which is 0 or a particular substring index type, and then
the syntax OID and matching rule OID.
This is computed once per attribute. We could instead compute this one-time
only, and save the result in the Attribute structure, or the
AttributeDescription structure. (It probably makes most sense in the latter,
since the prefix also may include any tags on the attributeDescription.)
This change would require changing the signature of the indexer functions, to
pass in the AttrDesc pointer or something to convey the precomputed hash.
Or we could do away with some of this. Hashing against the syntax and mr OID
seems gratuitous, since the index values are already going to be segregated by
prefix and pre. One way or another, the hash over these two OIDs should be
factored out, because even if we want to keep them, they're constants and we
shouldn't need to keep recomputing them.
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
mdb_dcmp() returns EINVAL if no dupsort function is set.
I'm not sure it does the caller any favors in doing so: It
claims (A>B && B>A) if it gets called with both (A,B) and
(B,A). That can confuse the caller, e.g. a sort function.
I expect the sensible results without a dcmp function are
0 or a crash. Plus to document this clearly.
If that EINVAL is useful, i.e. if there are times when the
user wishes to ask if a dupsort function is set, then mdb
can grow an mdb_dbi_info(env, dbi, &result) function to
describe the database: Name, flags, sort funcs.
Unfortunately, libmdb already exists in modern linux systems as part of the
mdb-tools package. This would be a problematic conflict for getting MDB
packaged in general. As a proposal, how about liblmdb as the new name? I
haven't been able to find any instances of that existing in the wild.
Sr. Member of Technical Staff
A Division of VMware, Inc.
Zimbra :: the leader in open source messaging and collaboration