Name Description Size
arch_migrator.rs A utility for migrating data from one LMDB environment to another. Notably, this tool can migrate data from an enviroment created with a different bit-depth than the current rkv consumer, which enables the consumer to retrieve data from an environment that can't be read directly using the rkv APIs. The utility supports both 32-bit and 64-bit LMDB source environments, and it automatically migrates data in both the default database and any named (sub) databases. It also migrates the source environment's "map size" and "max DBs" configuration options to the destination environment. The destination environment must be at the rkv consumer's bit depth and should be empty of data. It can be an empty directory, in which case the utility will create a new LMDB environment within the directory. The tool currently has these limitations: 1. It doesn't support migration from environments created with `EnvironmentFlags::NO_SUB_DIR`. To migrate such an environment, create a temporary directory, copy the environment's data file to a file called data.mdb in the temporary directory, then migrate the temporary directory as the source environment. 2. It doesn't support migration from databases created with DatabaseFlags::DUP_SORT` (with or without `DatabaseFlags::DUP_FIXED`). 3. It doesn't account for existing data in the destination environment, which means that it can overwrite data (causing data loss) or fail to migrate data if the destination environment contains existing data. ## Basic Usage Call `Migrator::new()` with the path to the source environment to create a `Migrator` instance; then call the instance's `migrate()` method with the path to the destination environment to migrate data from the source to the destination environment. For example, this snippet migrates data from the tests/envs/ref_env_32 environment to a new environment in a temporary directory: ``` use rkv::migrator::LmdbArchMigrator as Migrator; use std::path::Path; use tempfile::tempdir; let mut migrator = Migrator::new(Path::new("tests/envs/ref_env_32")).unwrap(); migrator.migrate(&tempdir().unwrap().path()).unwrap(); ``` Both `Migrator::new()` and `migrate()` return a `MigrateResult` that is either an `Ok()` result or an `Err<MigrateError>`, where `MigrateError` is an enum whose variants identify specific kinds of migration failures. 36612
arch_migrator_error.rs 2093
cursor.rs 2269
database.rs 759
environment.rs 9426
error.rs 2285
flags.rs 4593
info.rs 1065
iter.rs 1564
stat.rs 1132
transaction.rs 3317