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;
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 ) {
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
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,