]> git.sur5r.net Git - openldap/commitdiff
Fix prev commit
authorHoward Chu <hyc@openldap.org>
Sun, 18 Sep 2011 21:47:41 +0000 (14:47 -0700)
committerHoward Chu <hyc@openldap.org>
Sun, 18 Sep 2011 21:47:41 +0000 (14:47 -0700)
Don't truncate all indices if specific indices were given.

servers/slapd/back-mdb/attr.c
servers/slapd/back-mdb/tools.c

index 842456c5f190ccee12e25d62b062e79e26acad1c..14e67d884eb6da5fd10a3e21ba6b910ad2be81ed 100644 (file)
@@ -133,20 +133,6 @@ mdb_attr_dbs_open(
                                cr->msg, 0, 0 );
                        break;
                }
-               if (slapMode & SLAP_TRUNCATE_MODE) {
-                       rc = mdb_drop( txn, mdb->mi_attrs[i]->ai_dbi, 0 );
-                       if ( rc ) {
-                               snprintf( cr->msg, sizeof(cr->msg), "database \"%s\": "
-                                       "mdb_drop(%s) failed: %s (%d).",
-                                       be->be_suffix[0].bv_val,
-                                       mdb->mi_attrs[i]->ai_desc->ad_type->sat_cname.bv_val,
-                                       mdb_strerror(rc), rc );
-                               Debug( LDAP_DEBUG_ANY,
-                                       LDAP_XSTRING(mdb_attr_dbs) ": %s\n",
-                                       cr->msg, 0, 0 );
-                               break;
-                       }
-               }
        }
 
        /* Only commit if this is our txn */
index 1d2c625ad86162bdc65c58eb45b2c43c945ae6f0..c1ccfd518e9e4a529843f0d9b32dce9b2e53cf73 100644 (file)
@@ -689,6 +689,22 @@ int mdb_tool_entry_reindex(
                mi->mi_nattrs = i;
        }
 
+       if ( slapMode & SLAP_TRUNCATE_MODE ) {
+               int i;
+               for ( i=0; i < mi->mi_nattrs; i++ ) {
+                       rc = mdb_drop( txn, mi->mi_attrs[i]->ai_dbi, 0 );
+                       if ( rc ) {
+                               Debug( LDAP_DEBUG_ANY,
+                                       LDAP_XSTRING(mdb_tool_entry_reindex)
+                                       ": (Truncate) mdb_drop(%s) failed: %s (%d)\n",
+                                       mi->mi_attrs[i]->ai_desc->ad_type->sat_cname.bv_val,
+                                       mdb_strerror(rc), rc );
+                               return -1;
+                       }
+               }
+               slapMode ^= SLAP_TRUNCATE_MODE;
+       }
+
        e = mdb_tool_entry_get( be, id );
 
        if( e == NULL ) {