stats method
Gets statistics for a specific database using an explicit transaction.
Parameters:
txn- Active transactiondbName- Optional named databaseflags- Optional operation flags
Returns detailed database statistics.
Example:
final txn = await db.txnStart(flags: LMDBFlagSet()..add(MDB_RDONLY));
try {
final stats = await db.stats(txn);
print('Entries: ${stats.entries}');
print('Tree depth: ${stats.depth}');
await db.txnCommit(txn);
} catch (e) {
await db.txnAbort(txn);
rethrow;
}
Throws StateError if database is closed Throws LMDBException if operation fails
Implementation
Future<DatabaseStats> stats(
Pointer<MDB_txn> txn, {
String? dbName,
LMDBFlagSet? flags,
}) async {
if (!isInitialized) throw StateError(_errDbNotInitialized);
final dbi = await _getDatabase(txn, name: dbName, flags: flags);
final statPtr = calloc<MDB_stat>();
try {
final result = _lib.mdb_stat(
txn,
dbi,
statPtr,
);
if (result != 0) {
throw LMDBException('Failed to get statistics', result);
}
return DatabaseStats(
pageSize: statPtr.ref.ms_psize,
depth: statPtr.ref.ms_depth,
branchPages: statPtr.ref.ms_branch_pages,
leafPages: statPtr.ref.ms_leaf_pages,
overflowPages: statPtr.ref.ms_overflow_pages,
entries: statPtr.ref.ms_entries,
);
} finally {
calloc.free(statPtr);
}
}