From 4d2d1a5b0abc4ef543b9d4aa79dc6891ca8b7155 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 24 Aug 2022 22:21:01 +0300 Subject: Drop all database migrations to be backward compatible with 0.14.0 and above (two minor versions behind) --- bpkg/database.cxx | 126 ------------------------------------------------------ bpkg/package.hxx | 2 +- bpkg/package.xml | 74 +++++++++++--------------------- 3 files changed, 25 insertions(+), 177 deletions(-) diff --git a/bpkg/database.cxx b/bpkg/database.cxx index d96c53b..5754fae 100644 --- a/bpkg/database.cxx +++ b/bpkg/database.cxx @@ -61,132 +61,6 @@ namespace bpkg template using migration_entry = odb::data_migration_entry; - static const migration_entry<8> - migrate_v8 ([] (odb::database& db) - { - for (shared_ptr r: pointer_result (db.query ())) - { - if (!r->name.empty ()) // Non-root repository? - { - r->local = r->location.local (); - db.update (r); - } - } - }); - - static const migration_entry<9> - migrate_v9 ([] (odb::database& db) - { - // Add the unnamed self-link of the target type. - // - shared_ptr sl ( - make_shared (optional (), "target")); - - db.persist (sl); - db.execute (string ("UPDATE \"main\".selected_package_prerequisites ") + - "SET configuration = '" + sl->uuid.string () + "'"); - }); - - static const migration_entry<10> - migrate_v10 ([] (odb::database& db) - { - // Create the multi-column index for the configuration and prerequisite - // columns of the selected_package_prerequisites table. - // - db.execute ( - "CREATE INDEX " - "\"main\".selected_package_prerequisites_configuration_prerequisite_i " - "ON selected_package_prerequisites (configuration, prerequisite)"); - }); - - static const migration_entry<12> - migrate_v12 ([] (odb::database& d) - { - // Drop foreign key constraint for the prerequisite column of the - // selected_package_prerequisites table. - // - // Note that since SQLite provides no API to drop constraints we will - // rename the selected_package_prerequisites table, create the new table - // without the constraint, and copy the data into the new table. - // - // Also note that we can only perform migration of the main database, - // since dropping index and table in an attached database fails by some - // reason with the SQLITE_LOCKED error. This, however, is probably ok - // since the host and build system module configurations are already - // created without this constraint and its highly unlikely to encounter an - // already migrated (up to version 11) a linked target configuration. - // - database& db (static_cast (d)); - - if (!db.main ()) - return; - - db.execute ("ALTER TABLE \"main\".\"selected_package_prerequisites\" " - "RENAME TO \"selected_package_prerequisites_old\""); - - db.execute ("CREATE TABLE \"main\".\"selected_package_prerequisites\" (\n" - " \"package\" TEXT NULL COLLATE NOCASE,\n" - " \"configuration\" TEXT NULL,\n" - " \"prerequisite\" TEXT NULL COLLATE NOCASE,\n" - " \"min_version_epoch\" INTEGER NULL,\n" - " \"min_version_canonical_upstream\" TEXT NULL,\n" - " \"min_version_canonical_release\" TEXT NULL,\n" - " \"min_version_revision\" INTEGER NULL,\n" - " \"min_version_iteration\" INTEGER NULL,\n" - " \"min_version_upstream\" TEXT NULL,\n" - " \"min_version_release\" TEXT NULL,\n" - " \"max_version_epoch\" INTEGER NULL,\n" - " \"max_version_canonical_upstream\" TEXT NULL,\n" - " \"max_version_canonical_release\" TEXT NULL,\n" - " \"max_version_revision\" INTEGER NULL,\n" - " \"max_version_iteration\" INTEGER NULL,\n" - " \"max_version_upstream\" TEXT NULL,\n" - " \"max_version_release\" TEXT NULL,\n" - " \"min_open\" INTEGER NULL,\n" - " \"max_open\" INTEGER NULL,\n" - " CONSTRAINT \"package_fk\"\n" - " FOREIGN KEY (\"package\")\n" - " REFERENCES \"selected_package\" (\"name\")\n" - " ON DELETE CASCADE)"); - - db.execute ("INSERT INTO \"main\".\"selected_package_prerequisites\" " - "SELECT " - "\"package\", " - "\"configuration\", " - "\"prerequisite\", " - "\"min_version_epoch\", " - "\"min_version_canonical_upstream\", " - "\"min_version_canonical_release\", " - "\"min_version_revision\", " - "\"min_version_iteration\", " - "\"min_version_upstream\", " - "\"min_version_release\", " - "\"max_version_epoch\", " - "\"max_version_canonical_upstream\", " - "\"max_version_canonical_release\", " - "\"max_version_revision\", " - "\"max_version_iteration\", " - "\"max_version_upstream\", " - "\"max_version_release\", " - "\"min_open\", " - "\"max_open\" " - "FROM \"main\".\"selected_package_prerequisites_old\""); - - db.execute ("DROP TABLE \"main\".\"selected_package_prerequisites_old\""); - - // Create the indexes after dropping the old table to make sure the old - // indexes are also dropped to date. - // - db.execute ("CREATE INDEX " - "\"main\".\"selected_package_prerequisites_package_i\"\n" - " ON \"selected_package_prerequisites\" (\"package\")"); - - db.execute ( - "CREATE INDEX " - "\"main\".selected_package_prerequisites_configuration_prerequisite_i " - "ON selected_package_prerequisites (configuration, prerequisite)"); - }); - // @@ Since there is no proper support for dropping table columns not in // SQLite prior to 3.35.5 nor in ODB, we will drop the // available_package_dependency_alternatives.dep_* columns manually. We, diff --git a/bpkg/package.hxx b/bpkg/package.hxx index d7c9461..51f7219 100644 --- a/bpkg/package.hxx +++ b/bpkg/package.hxx @@ -25,7 +25,7 @@ // Used by the data migration entries. // -#define DB_SCHEMA_VERSION_BASE 7 +#define DB_SCHEMA_VERSION_BASE 12 #pragma db model version(DB_SCHEMA_VERSION_BASE, 20, closed) diff --git a/bpkg/package.xml b/bpkg/package.xml index 3fa1bc0..eafcaa8 100644 --- a/bpkg/package.xml +++ b/bpkg/package.xml @@ -177,50 +177,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -272,6 +229,7 @@ + @@ -494,6 +452,7 @@ + @@ -503,12 +462,6 @@ - - - - - -
@@ -548,6 +501,7 @@ + @@ -576,5 +530,25 @@
+ + + + + + + + + + + + + + + + + + + +
-- cgit v1.1