]> git.sur5r.net Git - openldap/commitdiff
Omit transaction support when running with SLAP_TOOL_QUICK
authorHoward Chu <hyc@openldap.org>
Mon, 24 Jan 2005 01:37:38 +0000 (01:37 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 24 Jan 2005 01:37:38 +0000 (01:37 +0000)
servers/slapd/back-bdb/back-bdb.h
servers/slapd/back-bdb/dbcache.c
servers/slapd/back-bdb/init.c
servers/slapd/back-bdb/tools.c

index d788665c3c044442d6eb556d4f986f522b306065..44517010fbf96dc4a03df63506efe0e59928b83e 100644 (file)
@@ -241,7 +241,7 @@ struct bdb_op_info {
 #if DB_VERSION_FULL >= 0x04010011
 #undef DB_OPEN
 #define        DB_OPEN(db, file, name, type, flags, mode) \
-       (db)->open(db, NULL, file, name, type, (flags)|DB_AUTO_COMMIT, mode)
+       (db)->open(db, NULL, file, name, type, flags, mode)
 #endif
 
 #endif
index adcdf463a7790cfcfca3a30b57250406edc18244..3885b4c09a0e828db6ffc86cd776deacec7e95b5 100644 (file)
@@ -63,7 +63,7 @@ bdb_db_cache(
        const char *name,
        DB **dbout )
 {
-       int i;
+       int i, flags;
        int rc;
        struct bdb_info *bdb = (struct bdb_info *) be->be_private;
        struct bdb_db_info *db;
@@ -118,11 +118,15 @@ bdb_db_cache(
 
 #ifdef HAVE_EBCDIC
        __atoe( file );
+#endif
+       flags = DB_CREATE | DB_THREAD;
+#ifdef DB_AUTO_COMMIT
+       if ( !( slapMode & SLAP_TOOL_QUICK ))
+               flags |= DB_AUTO_COMMIT;
 #endif
        rc = DB_OPEN( db->bdi_db,
                file, NULL /* name */,
-               BDB_INDEXTYPE, bdb->bi_db_opflags | DB_CREATE | DB_THREAD,
-               bdb->bi_dbenv_mode );
+               BDB_INDEXTYPE, bdb->bi_db_opflags | flags, bdb->bi_dbenv_mode );
 
        ch_free( file );
 
index 188464e42affe255161a26b5f555bf5a97b38b3f..cb5616bd2cf061f6c3dc7aa2f1e35ec01c37207f 100644 (file)
@@ -138,8 +138,10 @@ bdb_db_open( BackendDB *be )
                return rc;
        }
 
-       flags = DB_INIT_MPOOL | DB_THREAD | DB_CREATE
-               | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN;
+       flags = DB_INIT_MPOOL | DB_THREAD | DB_CREATE | DB_INIT_LOCK;
+
+if ( !( slapMode & SLAP_TOOL_QUICK ))
+               flags |= DB_INIT_LOG | DB_INIT_TXN;
        
 #if 0
        /* Never do automatic recovery, must perform it manually.
@@ -273,6 +275,11 @@ bdb_db_open( BackendDB *be )
 
        flags = DB_THREAD | bdb->bi_db_opflags;
 
+#ifdef DB_AUTO_COMMIT
+       if ( !( slapMode & SLAP_TOOL_QUICK ))
+               flags |= DB_AUTO_COMMIT;
+#endif
+
        bdb->bi_databases = (struct bdb_db_info **) ch_malloc(
                BDB_INDICES * sizeof(struct bdb_db_info *) );
 
index f65d4b99d4b96edba4797c13104c88e24e0a8fc8..395c57e55ef9ba0cdab0218bae66550237f9e324 100644 (file)
@@ -307,6 +307,7 @@ ID bdb_tool_entry_put(
        Debug( LDAP_DEBUG_TRACE, "=> " LDAP_XSTRING(bdb_tool_entry_put)
                "( %ld, \"%s\" )\n", (long) e->e_id, e->e_dn, 0 );
 
+       if (! (slapMode & SLAP_TOOL_QUICK)) {
        rc = TXN_BEGIN( bdb->bi_dbenv, NULL, &tid, 
                bdb->bi_db_opflags );
        if( rc != 0 ) {
@@ -318,6 +319,7 @@ ID bdb_tool_entry_put(
                         text->bv_val, 0, 0 );
                return NOID;
        }
+       }
 
        op.o_hdr = &ohdr;
        op.o_bd = be;
@@ -356,6 +358,7 @@ ID bdb_tool_entry_put(
 
 done:
        if( rc == 0 ) {
+               if ( !( slapMode & SLAP_TOOL_QUICK )) {
                rc = TXN_COMMIT( tid, 0 );
                if( rc != 0 ) {
                        snprintf( text->bv_val, text->bv_len,
@@ -366,8 +369,10 @@ done:
                                text->bv_val, 0, 0 );
                        e->e_id = NOID;
                }
+               }
 
        } else {
+               if ( !( slapMode & SLAP_TOOL_QUICK )) {
                TXN_ABORT( tid );
                snprintf( text->bv_val, text->bv_len,
                        "txn_aborted! %s (%d)",
@@ -375,6 +380,7 @@ done:
                Debug( LDAP_DEBUG_ANY,
                        "=> " LDAP_XSTRING(bdb_tool_entry_put) ": %s\n",
                        text->bv_val, 0, 0 );
+               }
                e->e_id = NOID;
        }