From: Howard Chu Date: Fri, 7 Dec 2001 06:48:38 +0000 (+0000) Subject: Minor fixes for BDB_IDL_MULTI X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~724 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d0c0dfcce623977896514125b06b126e8751b4ff;p=openldap Minor fixes for BDB_IDL_MULTI --- diff --git a/servers/slapd/back-bdb/idl.c b/servers/slapd/back-bdb/idl.c index 37848f09a0..ef0889b0d7 100644 --- a/servers/slapd/back-bdb/idl.c +++ b/servers/slapd/back-bdb/idl.c @@ -319,6 +319,8 @@ bdb_idl_insert_key( data.data = &id; data.size = sizeof(id); data.flags = DB_DBT_USERMEM; + + rc = db->put( db, tid, key, &data, DB_NODUPDATA ); #else data.data = ids; data.ulen = sizeof ids; @@ -379,11 +381,10 @@ bdb_idl_insert_key( data.size = BDB_IDL_SIZEOF( ids ); } -#endif /* store the key */ rc = db->put( db, tid, key, &data, 0 ); - +#endif if( rc == DB_KEYEXIST ) rc = 0; if( rc != 0 ) { @@ -429,7 +430,8 @@ bdb_idl_delete_key( rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags ); rc = cursor->c_get( cursor, key, &data, bdb->bi_db_opflags | DB_GET_BOTH | DB_RMW ); - rc = cursor->c_del( cursor, 0 ); + if (rc == 0) + rc = cursor->c_del( cursor, 0 ); rc = cursor->c_close( cursor ); } #else diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index d57b4a8756..66eb7ce861 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -245,6 +245,13 @@ bdb_db_open( BackendDB *be ) rc = db->bdi_db->set_bt_compare( db->bdi_db, bdb_bt_compare ); } +#ifdef BDB_IDL_MULTI + if( i == BDB_DN2ID ) { + rc = db->bdi_db->set_flags( db->bdi_db, DB_DUPSORT ); + rc = db->bdi_db->set_dup_compare( db->bdi_db, + bdb_bt_compare ); + } +#endif rc = db->bdi_db->set_pagesize( db->bdi_db, BDB_PAGESIZE ); rc = db->bdi_db->open( db->bdi_db,