]> git.sur5r.net Git - openldap/commitdiff
ITS#7604 fix modrdn, base-scope search
authorHoward Chu <hyc@openldap.org>
Fri, 24 May 2013 18:08:25 +0000 (11:08 -0700)
committerHoward Chu <hyc@openldap.org>
Fri, 24 May 2013 18:08:25 +0000 (11:08 -0700)
servers/slapd/back-mdb/add.c
servers/slapd/back-mdb/dn2id.c
servers/slapd/back-mdb/modrdn.c
servers/slapd/back-mdb/proto-mdb.h
servers/slapd/back-mdb/search.c
servers/slapd/back-mdb/tools.c

index 332d5c6b210c9f87b83919d299471e62b2604804..289eb321a272d4368d7c9c4543fd55e07ac462f6 100644 (file)
@@ -338,7 +338,7 @@ txnReturn:
        op->ora_e->e_id = eid;
 
        /* dn2id index */
-       rs->sr_err = mdb_dn2id_add( op, mcd, mcd, pid, 1, op->ora_e );
+       rs->sr_err = mdb_dn2id_add( op, mcd, mcd, pid, 1, 1, op->ora_e );
        mdb_cursor_close( mcd );
        if ( rs->sr_err != 0 ) {
                Debug( LDAP_DEBUG_TRACE,
index 22187b957a502238b6523bb485bf410231b8f5f4..d630741ef1ac78f88c42a70f23e786063f58f18b 100644 (file)
@@ -86,6 +86,7 @@ mdb_dn2id_add(
        MDB_cursor      *mcd,
        ID pid,
        ID nsubs,
+       int upsub,
        Entry           *e )
 {
        struct mdb_info *mdb = (struct mdb_info *) op->o_bd->be_private;
@@ -156,7 +157,7 @@ mdb_dn2id_add(
        op->o_tmpfree( d, op->o_tmpmemctx );
 
        /* Add our subtree count to all superiors */
-       if ( rc == 0 && nsubs && pid ) {
+       if ( rc == 0 && upsub && pid ) {
                ID subs;
                nid = pid;
                do {
index de3a219721d181c318b437b07237ef5885595626..f70457bdafc9201ea7b764436b192c6a9168e263 100644 (file)
@@ -492,7 +492,7 @@ txnReturn:
 
        /* add new DN */
        rs->sr_err = mdb_dn2id_add( op, mc, mc, np ? np->e_id : p->e_id,
-               np ? nsubs : 0, &dummy );
+               nsubs, np != NULL, &dummy );
        if ( rs->sr_err != 0 ) {
                Debug(LDAP_DEBUG_TRACE,
                        "<=- " LDAP_XSTRING(mdb_modrdn)
index a0d84da3ebc7b24a909989bdd397680aa7ea0545..5228d26a82eb43166e800f0e56f22204d969771e 100644 (file)
@@ -82,6 +82,7 @@ int mdb_dn2id_add(
        MDB_cursor *mcd,
        ID pid,
        ID nsubs,
+       int upsub,
        Entry *e );
 
 int mdb_dn2id_delete(
index 24f3ee4cbcd8457dd65c8d7c9344f1ddf50ec649..286d5e734eb516af3db310d1e33ecd6f4697bffc 100644 (file)
@@ -538,6 +538,7 @@ dn2entry_retry:
        /* select candidates */
        if ( op->oq_search.rs_scope == LDAP_SCOPE_BASE ) {
                rs->sr_err = base_candidate( op->o_bd, base, candidates );
+               scopes[0].mid = 0;
                ncand = 1;
        } else {
                if ( op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
index 10e40f706d089cd431d1d4461d49eb7b6a698c10..7c3a423b68bcc9de13ea40685ac490f6f3f259ac 100644 (file)
@@ -471,7 +471,7 @@ static int mdb_tool_next_id(
                        "=> mdb_tool_next_id: %s\n", text->bv_val, 0, 0 );
                        return rc;
                }
-               rc = mdb_dn2id_add( op, mcp, mcd, pid, 1, e );
+               rc = mdb_dn2id_add( op, mcp, mcd, pid, 1, 1, e );
                if ( rc ) {
                        snprintf( text->bv_val, text->bv_len,
                                "dn2id_add failed: %s (%d)",