Skip to content

Commit

Permalink
Use mdb_stat for db.len()
Browse files Browse the repository at this point in the history
Closes #56
  • Loading branch information
Kerollmops committed Jul 6, 2022
1 parent 28c4b56 commit f3213da
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
22 changes: 10 additions & 12 deletions heed/src/db/polymorph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -596,24 +596,22 @@ impl PolyDatabase {
/// assert_eq!(ret, 3);
///
/// wtxn.commit()?;
///
/// # Ok(()) }
/// ```
pub fn len<'txn>(&self, txn: &'txn RoTxn) -> Result<usize> {
pub fn len<'txn>(&self, txn: &'txn RoTxn) -> Result<u64> {
assert_eq!(self.env_ident, txn.env.env_mut_ptr() as usize);

let mut cursor = RoCursor::new(txn, self.dbi)?;
let mut count = 0;
let mut db_stat = mem::MaybeUninit::uninit();
let result = unsafe { mdb_result(ffi::mdb_stat(txn.txn, self.dbi, db_stat.as_mut_ptr())) };

match cursor.move_on_first()? {
Some(_) => count += 1,
None => return Ok(0),
}

while let Some(_) = cursor.move_on_next()? {
count += 1;
match result {
Ok(()) => {
let stats = unsafe { db_stat.assume_init() };
Ok(stats.ms_entries as u64)
}
Err(e) => Err(e.into()),
}

Ok(count)
}

/// Returns `true` if and only if this database is empty.
Expand Down
2 changes: 1 addition & 1 deletion heed/src/db/uniform.rs
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ impl<KC, DC> Database<KC, DC> {
/// wtxn.commit()?;
/// # Ok(()) }
/// ```
pub fn len<'txn>(&self, txn: &'txn RoTxn) -> Result<usize> {
pub fn len<'txn>(&self, txn: &'txn RoTxn) -> Result<u64> {
self.dyndb.len(txn)
}

Expand Down
6 changes: 3 additions & 3 deletions heed/src/mdb/lmdb_ffi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ pub use ffi::{
mdb_cursor_close, mdb_cursor_del, mdb_cursor_get, mdb_cursor_open, mdb_cursor_put,
mdb_dbi_open, mdb_del, mdb_drop, mdb_env_close, mdb_env_copyfd2 as mdb_env_copy2fd,
mdb_env_create, mdb_env_open, mdb_env_set_mapsize, mdb_env_set_maxdbs, mdb_env_set_maxreaders,
mdb_env_sync, mdb_filehandle_t, mdb_get, mdb_put, mdb_txn_abort, mdb_txn_begin, mdb_txn_commit,
MDB_cursor, MDB_dbi, MDB_env, MDB_txn, MDB_APPEND, MDB_CP_COMPACT, MDB_CREATE, MDB_CURRENT,
MDB_RDONLY,
mdb_env_stat, mdb_env_sync, mdb_filehandle_t, mdb_get, mdb_put, mdb_stat, mdb_txn_abort,
mdb_txn_begin, mdb_txn_commit, MDB_cursor, MDB_dbi, MDB_env, MDB_stat as MDB_Stat, MDB_txn,
MDB_APPEND, MDB_CP_COMPACT, MDB_CREATE, MDB_CURRENT, MDB_RDONLY,
};
use lmdb_master3_sys as ffi;

Expand Down

0 comments on commit f3213da

Please sign in to comment.