return correct path for in-place migration
This commit is contained in:
parent
ac82a838b8
commit
868624c6a9
@ -269,7 +269,7 @@ impl Manager {
|
|||||||
|
|
||||||
let db_root = database_path(old_path);
|
let db_root = database_path(old_path);
|
||||||
let mut temp_idx = TempIndex::One;
|
let mut temp_idx = TempIndex::One;
|
||||||
let mut temp_path = temp_idx.path(&db_root);
|
let mut temp_path = old_path.to_path_buf();
|
||||||
|
|
||||||
// start with the old db.
|
// start with the old db.
|
||||||
let old_path_str = old_path.to_str().ok_or(Error::MigrationImpossible)?;
|
let old_path_str = old_path.to_str().ok_or(Error::MigrationImpossible)?;
|
||||||
@ -280,10 +280,11 @@ impl Manager {
|
|||||||
// Change number of columns in new db
|
// Change number of columns in new db
|
||||||
let current_columns = db_config.columns;
|
let current_columns = db_config.columns;
|
||||||
db_config.columns = migration.columns();
|
db_config.columns = migration.columns();
|
||||||
temp_path = temp_idx.path(&db_root);
|
|
||||||
|
|
||||||
// slow migrations: alter existing data.
|
// slow migrations: alter existing data.
|
||||||
if migration.alters_existing() {
|
if migration.alters_existing() {
|
||||||
|
temp_path = temp_idx.path(&db_root);
|
||||||
|
|
||||||
// open the target temporary database.
|
// open the target temporary database.
|
||||||
let temp_path_str = temp_path.to_str().ok_or(Error::MigrationImpossible)?;
|
let temp_path_str = temp_path.to_str().ok_or(Error::MigrationImpossible)?;
|
||||||
let mut new_db = Database::open(&db_config, temp_path_str).map_err(Error::Custom)?;
|
let mut new_db = Database::open(&db_config, temp_path_str).map_err(Error::Custom)?;
|
||||||
|
@ -243,6 +243,8 @@ fn change_columns() {
|
|||||||
|
|
||||||
let new_path = manager.execute(&db_path, 0).unwrap();
|
let new_path = manager.execute(&db_path, 0).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(db_path, new_path, "Changing columns is an in-place migration.");
|
||||||
|
|
||||||
let config = DatabaseConfig::with_columns(Some(4));
|
let config = DatabaseConfig::with_columns(Some(4));
|
||||||
let db = Database::open(&config, new_path.to_str().unwrap()).unwrap();
|
let db = Database::open(&config, new_path.to_str().unwrap()).unwrap();
|
||||||
assert_eq!(db.num_columns(), 4);
|
assert_eq!(db.num_columns(), 4);
|
||||||
|
Loading…
Reference in New Issue
Block a user