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

Linear time searches with ldbm backend



	Dear all,

I don't manage to convince slapd not to do linear searches for such a
trivial query like '(cn = cn=bla)'. This is such a basic goal that I
must be doing something wrong somewhere. Still, I have been checking
the documentation, analyzing the detailed log, and even running slapd
under gdb to understand what he was doing. The indexed search *does*
works fine, but is combined improperly with a linear subtree search
(wrong search order?). Any help to trick sldapd to do it right would
be very welcome.

Here are the details: I am running a small slapd server from
openldap-2.1.29, compiled with -ggdb and without optimization, and
configured as follow (see attached slapd.conf and ldif and slapd log
for full details):
------------------------------------------------------------------------------
database  ldbm
suffix    "O=TestPKI"
rootdn    "CN=root,O=TestPKI"
rootpw	  "root"
index cn  eq,pres,sub
------------------------------------------------------------------------------
The database essentially contains n entries under ou=Groups,o=TestPKI such as:
------------------------------------------------------------------------------
dn: ou=GROUP section1,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP section1
cn: cn=bla
cn: cn=ble
cn: cn=bli
param2: blabla
structuralObjectClass: organizationalUnit
------------------------------------------------------------------------------
For the tests, n=5, but the goal is n=1000000.

I run slapd with:
------------------------------------------------------------------------------
> /usr/local/libexec/slapd -f /tmp/IDX-test-17754-0/slapd.conf -d33 -h ldap://localhost:17711/ >! slapdlog 2>&1
------------------------------------------------------------------------------


I do the query with:
------------------------------------------------------------------------------
> ldapsearch -vvv -LLL -H ldap://localhost:17711/ -x '(cn=cn=bla)' -b 'ou=Groups, O=TestPKI'
ldap_initialize( ldap://localhost:17711/ )
filter: (cn=cn=bla)
requesting: ALL
dn: ou=GROUP section1,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP section1
cn: cn=bla
cn: cn=ble
cn: cn=bli
param2: blabla
------------------------------------------------------------------------------

Here is how slapd seems to proceed:

 - It converts the filter into:

 (AND (DN SUBTREE: O=TestPKI) #1
      (EQUALITY:   cn=cn=bla) #2)

 - It solves #1 by returning some kind of iterator over the elements
   in this subtree (if I understood properly what idl's are)

 - It solves #2 by doing an indexed search
   (this works fine: it finds the proper number of candidates)

 - It builds an iterator on the intersection idl_intersection( #1, #2 );

So far, so good.

However, slapd then proceeds by iterating through all the elements of
#1, and checking if they satisfy #2, which results in a linear search!
I the converse: iterating through the (few) elements of #2, and double
checking if they are indeed in the subtree.

Is there any way to force slapd to do it, apart from patching the code
to reverse the order in the AND?

I have been wondering if the problem could come from the strange
entries we use (extensibleObjects with project-specific attributes),
or from specialized search strategies for small n. However the
debugger did not show me any special behavior with those.

Many thanks in advance,

Best regards,
					Nicolas
-- 
Nicolas M. Thiéry "Isil" <nthiery@users.sf.net>
http://www.lapcs.univ-lyon1.fr/~nthiery/
LaPCS, Université Claude Bernard Lyon I, Bâtiment recherche [B]
50, avenue Tony-Garnier, Domaine de Gerland, 69366 Lyon Cedex 07 
tel: +33 4 37 28 74 51 fax: +33 4 37 28 74 80
@(#) $OpenLDAP: slapd 2.1.29 (Apr  5 2004 12:43:02) $
	nthiery@localhost:/home/nthiery/openldap-2.1.29/servers/slapd
daemon_init: listen on ldap://localhost:17711/
daemon_init: 1 listeners to open...
ldap_url_parse_ext(ldap://localhost:17711/)
daemon: initialized ldap://localhost:17711/
daemon_init: 1 listeners opened
slapd init: initiated server.
slap_sasl_init: initialized!
bdb_initialize: initialize BDB backend
bdb_initialize: Sleepycat Software: Berkeley DB 4.1.25: (October 24, 2003)
>>> dnNormalize: <cn=Subschema>
=> ldap_bv2dn(cn=Subschema,0)
<= ldap_bv2dn(cn=Subschema,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=subschema,272)=0
<<< dnNormalize: <cn=subschema>
>>> dnPrettyNormal: <O=TestPKI>
=> ldap_bv2dn(O=TestPKI,0)
<= ldap_bv2dn(O=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(o=testpki,272)=0
<<< dnPrettyNormal: <o=TestPKI>, <o=testpki>
>>> dnPrettyNormal: <O=TestPKI>
=> ldap_bv2dn(O=TestPKI,0)
<= ldap_bv2dn(O=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(o=testpki,272)=0
<<< dnPrettyNormal: <o=TestPKI>, <o=testpki>
>>> dnPrettyNormal: <CN=root,O=TestPKI>
=> ldap_bv2dn(CN=root,O=TestPKI,0)
<= ldap_bv2dn(CN=root,O=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=root,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=root,o=testpki,272)=0
<<< dnPrettyNormal: <cn=root,o=TestPKI>, <cn=root,o=testpki>
matching_rule_use_init
    1.2.840.113556.1.4.804 (integerBitOrMatch): matchingRuleUse: ( 1.2.840.113556.1.4.804 NAME 'integerBitOrMatch' APPLIES ( oncRpcNumber $ ipProtocolNumber $ ipServicePort $ shadowFlag $ shadowExpire $ shadowInactive $ shadowWarning $ shadowMax $ shadowMin $ shadowLastChange $ gidNumber $ uidNumber $ mailPreferenceOption $ supportedLDAPVersion ) )
    1.2.840.113556.1.4.803 (integerBitAndMatch): matchingRuleUse: ( 1.2.840.113556.1.4.803 NAME 'integerBitAndMatch' APPLIES ( oncRpcNumber $ ipProtocolNumber $ ipServicePort $ shadowFlag $ shadowExpire $ shadowInactive $ shadowWarning $ shadowMax $ shadowMin $ shadowLastChange $ gidNumber $ uidNumber $ mailPreferenceOption $ supportedLDAPVersion ) )
    1.3.6.1.4.1.1466.109.114.2 (caseIgnoreIA5Match): matchingRuleUse: ( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match' APPLIES ( rfc822MailMember $ mailRoutingAddress $ mailHost $ mailLocalAddress $ nisMapEntry $ bootFile $ macAddress $ ipNetmaskNumber $ ipNetworkNumber $ ipHostNumber $ memberNisNetgroup $ memberUid $ loginShell $ homeDirectory $ gecos $ janetMailbox $ cNAMERecord $ sOARecord $ nSRecord $ mXRecord $ mDRecord $ aRecord $ email $ associatedDomain $ dc $ mail $ altServer ) )
    1.3.6.1.4.1.1466.109.114.1 (caseExactIA5Match): matchingRuleUse: ( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match' APPLIES ( rfc822MailMember $ mailRoutingAddress $ mailHost $ mailLocalAddress $ nisMapEntry $ bootFile $ macAddress $ ipNetmaskNumber $ ipNetworkNumber $ ipHostNumber $ memberNisNetgroup $ memberUid $ loginShell $ homeDirectory $ gecos $ janetMailbox $ cNAMERecord $ sOARecord $ nSRecord $ mXRecord $ mDRecord $ aRecord $ email $ associatedDomain $ dc $ mail $ altServer ) )
    2.5.13.34 (certificateExactMatch): matchingRuleUse: ( 2.5.13.34 NAME 'certificateExactMatch' APPLIES ( cACertificate $ userCertificate ) )
    2.5.13.30 (objectIdentifierFirstComponentMatch): matchingRuleUse: ( 2.5.13.30 NAME 'objectIdentifierFirstComponentMatch' APPLIES ( supportedApplicationContext $ ldapSyntaxes $ matchingRuleUse $ objectClasses $ attributeTypes $ matchingRules $ supportedFeatures $ supportedExtension $ supportedControl $ structuralObjectClass $ objectClass ) )
    2.5.13.29 (integerFirstComponentMatch): matchingRuleUse: ( 2.5.13.29 NAME 'integerFirstComponentMatch' APPLIES ( oncRpcNumber $ ipProtocolNumber $ ipServicePort $ shadowFlag $ shadowExpire $ shadowInactive $ shadowWarning $ shadowMax $ shadowMin $ shadowLastChange $ gidNumber $ uidNumber $ mailPreferenceOption $ supportedLDAPVersion ) )
    2.5.13.27 (generalizedTimeMatch): matchingRuleUse: ( 2.5.13.27 NAME 'generalizedTimeMatch' APPLIES ( modifyTimestamp $ createTimestamp ) )
    2.5.13.24 (protocolInformationMatch): matchingRuleUse: ( 2.5.13.24 NAME 'protocolInformationMatch' APPLIES protocolInformation )
    2.5.13.23 (uniqueMemberMatch): matchingRuleUse: ( 2.5.13.23 NAME 'uniqueMemberMatch' APPLIES uniqueMember )
    2.5.13.22 (presentationAddressMatch): matchingRuleUse: ( 2.5.13.22 NAME 'presentationAddressMatch' APPLIES presentationAddress )
    2.5.13.20 (telephoneNumberMatch): matchingRuleUse: ( 2.5.13.20 NAME 'telephoneNumberMatch' APPLIES ( pager $ mobile $ homePhone $ telephoneNumber ) )
    2.5.13.17 (octetStringMatch): matchingRuleUse: ( 2.5.13.17 NAME 'octetStringMatch' APPLIES userPassword )
    2.5.13.16 (bitStringMatch): matchingRuleUse: ( 2.5.13.16 NAME 'bitStringMatch' APPLIES x500UniqueIdentifier )
    2.5.13.14 (integerMatch): matchingRuleUse: ( 2.5.13.14 NAME 'integerMatch' APPLIES ( oncRpcNumber $ ipProtocolNumber $ ipServicePort $ shadowFlag $ shadowExpire $ shadowInactive $ shadowWarning $ shadowMax $ shadowMin $ shadowLastChange $ gidNumber $ uidNumber $ mailPreferenceOption $ supportedLDAPVersion ) )
    2.5.13.13 (booleanMatch): matchingRuleUse: ( 2.5.13.13 NAME 'booleanMatch' APPLIES hasSubordinates )
    2.5.13.11 (caseIgnoreListMatch): matchingRuleUse: ( 2.5.13.11 NAME 'caseIgnoreListMatch' APPLIES ( homePostalAddress $ registeredAddress $ postalAddress ) )
    2.5.13.8 (numericStringMatch): matchingRuleUse: ( 2.5.13.8 NAME 'numericStringMatch' APPLIES ( internationaliSDNNumber $ x121Address ) )
    2.5.13.7 (caseExactSubstringsMatch): matchingRuleUse: ( 2.5.13.7 NAME 'caseExactSubstringsMatch' APPLIES ( dnQualifier $ destinationIndicator $ serialNumber ) )
    2.5.13.6 (caseExactOrderingMatch): matchingRuleUse: ( 2.5.13.6 NAME 'caseExactOrderingMatch' APPLIES ( dnQualifier $ destinationIndicator $ serialNumber ) )
    2.5.13.5 (caseExactMatch): matchingRuleUse: ( 2.5.13.5 NAME 'caseExactMatch' APPLIES ( param51 $ param50 $ param49 $ param48 $ param47 $ param46 $ param45 $ param44 $ param43 $ param42 $ param41 $ param40 $ param39 $ param38 $ param37 $ param36 $ param35 $ param34 $ param33 $ param32 $ param31 $ param30 $ param29 $ param28 $ param27 $ param26 $ param25 $ param24 $ param23 $ param22 $ param21 $ param20 $ param19 $ param18 $ param17 $ param16 $ param15 $ param14 $ param13 $ param12 $ param11 $ param10 $ param9 $ param8 $ param7 $ param6 $ param5 $ param4 $ param3 $ param2 $ param1 $ nisMapName $ ipServiceProtocol $ preferredLanguage $ employeeType $ employeeNumber $ displayName $ departmentNumber $ carLicense $ documentPublisher $ buildingName $ organizationalStatus $ uniqueIdentifier $ co $ personalTitle $ documentLocation $ documentVersion $ documentTitle $ documentIdentifier $ host $ userClass $ roomNumber $ drink $ info $ textEncodedORAddress $ uid $ labeledURI $ dmdName $ houseIdentifier $ dnQualifier $ generationQualifier $ initials $ givenName $ destinationIndicator $ physicalDeliveryOfficeName $ postOfficeBox $ postalCode $ businessCategory $ description $ title $ ou $ o $ street $ st $ l $ c $ serialNumber $ sn $ knowledgeInformation $ cn $ name $ ref $ vendorVersion $ vendorName $ supportedSASLMechanisms ) )
    2.5.13.3 (caseIgnoreOrderingMatch): matchingRuleUse: ( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' APPLIES ( dnQualifier $ destinationIndicator $ serialNumber ) )
    2.5.13.2 (caseIgnoreMatch): matchingRuleUse: ( 2.5.13.2 NAME 'caseIgnoreMatch' APPLIES ( param51 $ param50 $ param49 $ param48 $ param47 $ param46 $ param45 $ param44 $ param43 $ param42 $ param41 $ param40 $ param39 $ param38 $ param37 $ param36 $ param35 $ param34 $ param33 $ param32 $ param31 $ param30 $ param29 $ param28 $ param27 $ param26 $ param25 $ param24 $ param23 $ param22 $ param21 $ param20 $ param19 $ param18 $ param17 $ param16 $ param15 $ param14 $ param13 $ param12 $ param11 $ param10 $ param9 $ param8 $ param7 $ param6 $ param5 $ param4 $ param3 $ param2 $ param1 $ nisMapName $ ipServiceProtocol $ preferredLanguage $ employeeType $ employeeNumber $ displayName $ departmentNumber $ carLicense $ documentPublisher $ buildingName $ organizationalStatus $ uniqueIdentifier $ co $ personalTitle $ documentLocation $ documentVersion $ documentTitle $ documentIdentifier $ host $ userClass $ roomNumber $ drink $ info $ textEncodedORAddress $ uid $ labeledURI $ dmdName $ houseIdentifier $ dnQualifier $ generationQualifier $ initials $ givenName $ destinationIndicator $ physicalDeliveryOfficeName $ postOfficeBox $ postalCode $ businessCategory $ description $ title $ ou $ o $ street $ st $ l $ c $ serialNumber $ sn $ knowledgeInformation $ cn $ name $ ref $ vendorVersion $ vendorName $ supportedSASLMechanisms ) )
    2.5.13.1 (distinguishedNameMatch): matchingRuleUse: ( 2.5.13.1 NAME 'distinguishedNameMatch' APPLIES ( dITRedirect $ associatedName $ secretary $ documentAuthor $ manager $ seeAlso $ roleOccupant $ owner $ member $ distinguishedName $ aliasedObjectName $ namingContexts $ subschemaSubentry $ modifiersName $ creatorsName ) )
    2.5.13.0 (objectIdentifierMatch): matchingRuleUse: ( 2.5.13.0 NAME 'objectIdentifierMatch' APPLIES ( supportedApplicationContext $ supportedFeatures $ supportedExtension $ supportedControl $ structuralObjectClass $ objectClass ) )
slapd startup: initiated.
slapd starting
ldap_pvt_gethostbyname_a: host=localhost, r=0
str2filter "(objectclass=*)"
put_filter: "(objectclass=*)"
put_filter: simple
put_simple_filter: "objectclass=*"
begin get_filter
PRESENT
ber_scanf fmt (m) ber:
end get_filter 0
connection_get(7): got connid=0
connection_read(7): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 12 contents:
do_bind
ber_get_next
ber_get_next on fd 7 failed errno=11 (Resource temporarily unavailable)
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
>>> dnPrettyNormal: <>
<<< dnPrettyNormal: <>, <>
do_bind: version=3 dn="" method=128
send_ldap_result: conn=0 op=0 p=3
send_ldap_response: msgid=1 tag=97 err=0
ber_flush: 14 bytes to sd 7
do_bind: v3 anonymous bind
connection_get(7): got connid=0
connection_read(7): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 58 contents:
ber_get_next
ber_get_next on fd 7 failed errno=11 (Resource temporarily unavailable)
do_search
ber_scanf fmt ({miiiib) ber:
>>> dnPrettyNormal: <ou=Groups, O=TestPKI>
=> ldap_bv2dn(ou=Groups, O=TestPKI,0)
<= ldap_bv2dn(ou=Groups, O=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=Groups,o=TestPKI>, <ou=groups,o=testpki>
begin get_filter
EQUALITY
ber_scanf fmt ({mm}) ber:
end get_filter 0
ber_scanf fmt ({M}}) ber:
=> ldbm_back_search
dn2entry_r: dn: "ou=groups,o=testpki"
=> dn2id( "ou=groups,o=testpki" )
=> ldbm_cache_open( "dn2id.dbb", 73, 600 )
<= ldbm_cache_open (opened 0)
<= dn2id 2
=> id2entry_r( 2 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (opened 1)
=> str2entry
>>> dnPrettyNormal: <ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=Groups,o=TestPKI>, <ou=groups,o=testpki>
<= str2entry(ou=Groups,o=TestPKI) -> 0x822f338
<= id2entry_r( 2 ) 0x822f338 (disk)
search_candidates: base="ou=groups,o=testpki" s=2 d=0
=> filter_candidates
	AND
=> list_candidates 0xa0
=> filter_candidates
	DN SUBTREE
=> dn2idl( "@ou=groups,o=testpki" )
=> ldbm_cache_open( "dn2id.dbb", 73, 600 )
<= ldbm_cache_open (cache 0)
<= filter_candidates 8
=> filter_candidates
	OR
=> list_candidates 0xa1
=> filter_candidates
	EQUALITY
=> equality_candidates
=> ldbm_cache_open( "nextid.dbb", 73, 600 )
<= ldbm_cache_open (opened 2)
<= equality_candidates: index_param returned=18
<= filter_candidates 10
=> filter_candidates
	EQUALITY
=> equality_candidates
=> ldbm_cache_open( "cn.dbb", 73, 600 )
<= ldbm_cache_open (opened 3)
=> key_read
<= index_read 1 candidates
<= equality_candidates 1
<= filter_candidates 1
<= list_candidates 10
<= filter_candidates 10
<= list_candidates 8
<= filter_candidates 8
====> cache_return_entry_r( 2 ): created (0)
=> id2entry_r( 2 )
====> cache_find_entry_id( 2 ) "ou=Groups,o=TestPKI" (found) (1 tries)
<= id2entry_r( 2 ) 0x822f338 (cache)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 2 does not match filter
====> cache_return_entry_r( 2 ): returned (0)
=> id2entry_r( 3 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP 1,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP 1,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP 1,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP 1,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group 1,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP 1,ou=Groups,o=TestPKI>, <ou=group 1,ou=groups,o=testpki>
<= str2entry(ou=GROUP 1,ou=Groups,o=TestPKI) -> 0x822f200
<= id2entry_r( 3 ) 0x822f200 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 3 does not match filter
====> cache_return_entry_r( 3 ): created (0)
=> id2entry_r( 4 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP 2,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP 2,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP 2,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP 2,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group 2,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP 2,ou=Groups,o=TestPKI>, <ou=group 2,ou=groups,o=testpki>
<= str2entry(ou=GROUP 2,ou=Groups,o=TestPKI) -> 0x8230968
<= id2entry_r( 4 ) 0x8230968 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 4 does not match filter
====> cache_return_entry_r( 4 ): created (0)
=> id2entry_r( 5 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP 3,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP 3,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP 3,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP 3,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group 3,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP 3,ou=Groups,o=TestPKI>, <ou=group 3,ou=groups,o=testpki>
<= str2entry(ou=GROUP 3,ou=Groups,o=TestPKI) -> 0x8231128
<= id2entry_r( 5 ) 0x8231128 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 5 does not match filter
====> cache_return_entry_r( 5 ): created (0)
=> id2entry_r( 6 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP 4,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP 4,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP 4,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP 4,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group 4,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP 4,ou=Groups,o=TestPKI>, <ou=group 4,ou=groups,o=testpki>
<= str2entry(ou=GROUP 4,ou=Groups,o=TestPKI) -> 0x8231898
<= id2entry_r( 6 ) 0x8231898 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 6 does not match filter
====> cache_return_entry_r( 6 ): created (0)
=> id2entry_r( 7 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP 5,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP 5,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP 5,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP 5,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group 5,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP 5,ou=Groups,o=TestPKI>, <ou=group 5,ou=groups,o=testpki>
<= str2entry(ou=GROUP 5,ou=Groups,o=TestPKI) -> 0x8231fb0
<= id2entry_r( 7 ) 0x8231fb0 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 7 does not match filter
====> cache_return_entry_r( 7 ): created (0)
=> id2entry_r( 8 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP section1,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP section1,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP section1,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP section1,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group section1,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP section1,ou=Groups,o=TestPKI>, <ou=group section1,ou=groups,o=testpki>
<= str2entry(ou=GROUP section1,ou=Groups,o=TestPKI) -> 0x82326a8
<= id2entry_r( 8 ) 0x82326a8 (disk)
=> test_filter
    EQUALITY
<= test_filter 6
=> send_search_entry: dn="ou=GROUP section1,ou=Groups,o=TestPKI"
ber_flush: 182 bytes to sd 7
<= send_search_entry
====> cache_return_entry_r( 8 ): created (0)
=> id2entry_r( 9 )
=> ldbm_cache_open( "id2entry.dbb", 73, 600 )
<= ldbm_cache_open (cache 1)
=> str2entry
>>> dnPrettyNormal: <ou=GROUP section2,ou=Groups,o=TestPKI>
=> ldap_bv2dn(ou=GROUP section2,ou=Groups,o=TestPKI,0)
<= ldap_bv2dn(ou=GROUP section2,ou=Groups,o=TestPKI,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=GROUP section2,ou=Groups,o=TestPKI,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=group section2,ou=groups,o=testpki,272)=0
<<< dnPrettyNormal: <ou=GROUP section2,ou=Groups,o=TestPKI>, <ou=group section2,ou=groups,o=testpki>
<= str2entry(ou=GROUP section2,ou=Groups,o=TestPKI) -> 0x8232738
<= id2entry_r( 9 ) 0x8232738 (disk)
=> test_filter
    EQUALITY
<= test_filter 5
ldbm_search: candidate entry 9 does not match filter
====> cache_return_entry_r( 9 ): created (0)
send_search_result: err=0 matched="" text=""
send_ldap_response: msgid=2 tag=101 err=0
ber_flush: 14 bytes to sd 7
connection_get(7): got connid=0
connection_read(7): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 5 contents:
do_unbind
ber_get_next
ber_get_next on fd 7 failed errno=0 (Success)
connection_read(7): input error=-2 id=0, closing.
connection_closing: readying conn=0 sd=7 for close
connection_close: deferring conn=0 sd=7
connection_resched: attempting closing conn=0 sd=7
connection_close: deferring conn=0 sd=7
connection_resched: attempting closing conn=0 sd=7
connection_close: conn=0 sd=7
daemon: shutdown requested and initiated.
slapd shutdown: waiting for 0 threads to terminate
slapd shutdown: initiated
ldbm backend syncing
ldbm flushing db (dn2id.dbb)
ldbm closing db (dn2id.dbb)
ldbm flushing db (id2entry.dbb)
ldbm closing db (id2entry.dbb)
ldbm flushing db (nextid.dbb)
ldbm closing db (nextid.dbb)
ldbm flushing db (cn.dbb)
ldbm closing db (cn.dbb)
ldbm backend done syncing
====> cache_release_all
slapd shutdown: freeing system resources.
slapd stopped.
# Configuration file auto-generated by src/perllib/IDX/ConfigBenchmarks.t for an LDAP server. Do not edit.
#
# This code was developped by IDEALX (http://IDEALX.org/).
# 
# Copyright © 2000-2003 IDEALX
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.

# See slapd.conf(5) for details on configuration options.

# Slapd is stupid enough to erase its PID file even before having freed
# its network resources. We therefore have to use our own PID file
# in IDEALX software.
pidfile		/tmp/IDX-test-17754-0/slapd_DONOTUSE.pid
argsfile	/tmp/IDX-test-17754-0/slapd.args


allow     bind_v2 update_anon

include		/usr/local/etc/openldap/schema/core.schema
include		/usr/local/etc/openldap/schema/cosine.schema
include		/usr/local/etc/openldap/schema/inetorgperson.schema
include		/usr/local/etc/openldap/schema/nis.schema
include		/usr/local/etc/openldap/schema/misc.schema
include		/usr/local/etc/openldap/schema/openldap.schema

schemacheck on
loglevel 0
defaultsearchbase O=TestPKI


attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.1 NAME 'param1'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.2 NAME 'param2'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.3 NAME 'param3'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.4 NAME 'param4'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.5 NAME 'param5'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.6 NAME 'param6'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.7 NAME 'param7'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.8 NAME 'param8'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.9 NAME 'param9'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.10 NAME 'param10'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.11 NAME 'param11'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.12 NAME 'param12'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.13 NAME 'param13'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.14 NAME 'param14'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.15 NAME 'param15'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.16 NAME 'param16'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.17 NAME 'param17'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.18 NAME 'param18'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.19 NAME 'param19'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.20 NAME 'param20'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.21 NAME 'param21'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.22 NAME 'param22'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.23 NAME 'param23'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.24 NAME 'param24'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.25 NAME 'param25'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.26 NAME 'param26'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.27 NAME 'param27'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.28 NAME 'param28'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.29 NAME 'param29'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.30 NAME 'param30'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.31 NAME 'param31'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.32 NAME 'param32'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.33 NAME 'param33'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.34 NAME 'param34'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.35 NAME 'param35'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.36 NAME 'param36'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.37 NAME 'param37'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.38 NAME 'param38'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.39 NAME 'param39'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.40 NAME 'param40'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.41 NAME 'param41'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.42 NAME 'param42'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.43 NAME 'param43'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.44 NAME 'param44'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.45 NAME 'param45'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.46 NAME 'param46'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.47 NAME 'param47'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.48 NAME 'param48'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.49 NAME 'param49'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.50 NAME 'param50'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )

attributetype ( 1.3.6.1.4.1.7102.368.2.5.4.51 NAME 'param51'
	DESC 'RFC2256: locality which this object resides in'
	SUP name )


access to * by * write
access to * by anonymous write
#defaultaccess write


# LDBM or shell database definitions go below.
# An LDBM database for testing
# LDBM database definitions.
database	ldbm
suffix      "O=TestPKI"
directory	/tmp/IDX-test-17754-0/ldbm

# Aaargh, the wide-open access in the main config file still is not
# enough to change the suffix node!
rootdn "CN=root,O=TestPKI"
rootpw "root"

cachesize       100000
dbcachesize    1000000
index cn      eq,pres,sub
dn: o=TestPKI
objectClass: organization
o: TestPKI
structuralObjectClass: organization
entryUUID: 5ecfcf20-1b4e-1028-9325-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0001#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=Groups,o=TestPKI
objectClass: organizationalUnit
ou: Groups
structuralObjectClass: organizationalUnit
entryUUID: 5ed610ec-1b4e-1028-9326-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0002#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP 1,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP 1
param31: Ths|vmQnzo_VQ@^NnlRc
param24: bcBEyAGoO@UR}``DGmYD
param49: Fmc_gDwqO\FRUUHXHUHN
param34: IS^BzFBDrVcDYzThNWQ^
param34: RHnPNhUK`eLrPIs@EPd{
param41: vv@]\ae_s|fJCxE[|\kP
param17: cJCXCWQyC`HYgAjP{^sa
param13: QGj_CLfll]^brcMlYThW
param5: N}e{ISZTmpNjb_DzqVS_
param39: lLvFbQ`_k`b_QhUAnIzP
structuralObjectClass: organizationalUnit
entryUUID: 5edb8676-1b4e-1028-9327-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0003#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP 2,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP 2
param44: dUdlTvXbOoGJRNvaoSwW
param26: SS\@fGi{RREfLieMuSQ_
param16: Kkt}wrSDE^uw]jtdCinn
param48: rk}V}xD@wXdjv\JPWSFC
param10: dCOMhJ|JO[V]M@cuUkvk
param39: ]BhifzVNx^aSdqUQ[nxD
param24: EZoJIMg\NJM|UswprDGb
param7: mrepqCvQL|PPWIuBNRjd
param33: CAjsK`O[nDFPoOEmuKKb
param3: eHIVBXdLuai[`odYSNT[
structuralObjectClass: organizationalUnit
entryUUID: 5ede4492-1b4e-1028-9328-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0004#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP 3,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP 3
param17: \_Y}g_mkG|PFJgn{D\gj
param46: VnLcKDPCCupFGer\zr{Z
param5: SxGILIsYy__eEwdoWdZx
param24: oCprykYth\xgAlvXDEEY
param28: DRD`vBPwXgBfMp\cJ\Gq
param8: WnpYxN{YzrQwVo\oM[w\
param50: nVP}ILmNqZT_|uhLOQZ]
param47: gioyf^ZX|hZUNKhUpDWr
param16: T^I`IJHddkx\yVP@MabJ
param38: cyjtau\boESLP|ZvPTrP
structuralObjectClass: organizationalUnit
entryUUID: 5ee63148-1b4e-1028-9329-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0005#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP 4,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP 4
param5: gfjmH{QfRyXDnTTwuYSm
param20: lV|LftDrwnnvcsvOqhkK
param20: hzulcqvUuUgu{yoSYGlh
param21: ^JiVMqeDXLXNlBdBl`mG
param31: CW]atoJcD{bX^hscWoVS
param8: a}UFeUOcYev\tfdPWvhC
param44: \Wst\@QZ][A|Gd^uLXtH
param50: hOYhf`m^DUybYaUAZfdH
param27: vo_TAAoJG^myO`pvDitM
param29: CZuUCfs\qtbJGbSKp^yT
structuralObjectClass: organizationalUnit
entryUUID: 5eeea24c-1b4e-1028-932a-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0006#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP 5,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP 5
param8: QytPlbTb_YoRIa`}C[kY
param45: EUlfjIzCBzJNEh[zFvhe
param40: \naliADg]wgxjHcuk]FH
param24: PpafqD]]sdwLSSdxLNd}
param24: cy|lEUSsBswLSctNeDRn
param46: \VT|_o_zju\gKhn[CxBR
param11: IuZRmXCuTYONaZwUyVMJ
param44: lKoj`]hkjQTqUGfnGCc[
param26: GPm_MlYu|NKmYkbdB[[I
param20: RLGY{F^WIYXl@Tpei@g^
structuralObjectClass: organizationalUnit
entryUUID: 5ef008d0-1b4e-1028-932b-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0007#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP section1,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP section1
cn: cn=bla
cn: cn=ble
cn: cn=bli
param2: blabla
structuralObjectClass: organizationalUnit
entryUUID: 5ef3973e-1b4e-1028-932c-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0008#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z

dn: ou=GROUP section2,ou=Groups,o=TestPKI
objectClass: organizationalUnit
objectClass: extensibleObject
ou: GROUP section2
cn: cn=blo
structuralObjectClass: organizationalUnit
entryUUID: 5efa4cbe-1b4e-1028-932d-dd263fb72f3a
creatorsName: cn=root,o=TestPKI
createTimestamp: 20040405131035Z
entryCSN: 2004040513:10:35Z#0x0009#0#0000
modifiersName: cn=root,o=TestPKI
modifyTimestamp: 20040405131035Z