[core] Set schema version to 3 after upgrading
The migration was upgrading the schema, but not the schema version. As a result, the (expensive) migration was running every time an OfflineDatabase was constructed with a v2 database. Fixes #4501
This commit is contained in:
@@ -111,6 +111,7 @@ void OfflineDatabase::removeExisting() {
|
||||
void OfflineDatabase::migrateToVersion3() {
|
||||
db->exec("PRAGMA auto_vacuum = INCREMENTAL");
|
||||
db->exec("VACUUM");
|
||||
db->exec("PRAGMA user_version = 3");
|
||||
}
|
||||
|
||||
OfflineDatabase::Statement OfflineDatabase::getStatement(const char * sql) {
|
||||
|
||||
@@ -669,6 +669,13 @@ static int databasePageCount(const std::string& path) {
|
||||
return stmt.get<int>(0);
|
||||
}
|
||||
|
||||
static int databaseUserVersion(const std::string& path) {
|
||||
mapbox::sqlite::Database db(path, mapbox::sqlite::ReadOnly);
|
||||
mapbox::sqlite::Statement stmt = db.prepare("pragma user_version");
|
||||
stmt.run();
|
||||
return stmt.get<int>(0);
|
||||
}
|
||||
|
||||
TEST(OfflineDatabase, MigrateFromV2Schema) {
|
||||
using namespace mbgl;
|
||||
|
||||
@@ -685,6 +692,7 @@ TEST(OfflineDatabase, MigrateFromV2Schema) {
|
||||
}
|
||||
}
|
||||
|
||||
EXPECT_EQ(3, databaseUserVersion("test/fixtures/offline/v3.db"));
|
||||
EXPECT_LT(databasePageCount("test/fixtures/offline/v3.db"),
|
||||
databasePageCount("test/fixtures/offline/v2.db"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user