diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2018-08-21 16:18:51 -0700 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2018-08-28 07:14:54 -0700 |
commit | eb72fe580b61b68cb24f9ae57b210857a430bfdc (patch) | |
tree | b06a02b83f8a6e3d77f9faa8b148186ce7ad67c9 /platform/default/mbgl/storage/offline_database.cpp | |
parent | bc806d4354e037e51881cd58c1dedf18a46146f9 (diff) | |
download | qtlocation-mapboxgl-eb72fe580b61b68cb24f9ae57b210857a430bfdc.tar.gz |
Require minimum side-loaded database user_version=6
Diffstat (limited to 'platform/default/mbgl/storage/offline_database.cpp')
-rw-r--r-- | platform/default/mbgl/storage/offline_database.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp index 8256912d39..a24c0cf912 100644 --- a/platform/default/mbgl/storage/offline_database.cpp +++ b/platform/default/mbgl/storage/offline_database.cpp @@ -652,11 +652,13 @@ OfflineDatabase::mergeDatabase(const std::string& sideDatabasePath) { return unexpected<std::exception_ptr>(std::current_exception()); } try { - // Attaching an accessible path without a db file creates a new temporary - //database and attaches it. Check for matching schema version. + // Support sideloaded databases at user_version = 6. Future schema version + // changes will need to implement migration paths for sideloaded databases at + // version 6. auto sideUserVersion = static_cast<int>(getPragma<int64_t>("PRAGMA side.user_version")); - if (sideUserVersion != 6) { - throw std::runtime_error("Merge database does not match schema or has incorrect user_version"); + const auto mainUserVersion = getPragma<int64_t>("PRAGMA user_version"); + if (sideUserVersion < 6 || sideUserVersion != mainUserVersion) { + throw std::runtime_error("Merge database has incorrect user_version"); } mapbox::sqlite::Transaction transaction(*db); |