# # # patch "migrate_ancestry.cc" # from [a184a51cd6654f3386329793acb81321e85816b7] # to [7e659f3dbdf54efc68479591f24ecaef3db3edd8] # # patch "migrate_schema.cc" # from [84098e7b4f805e8f3e8232cd6829e625c6af024c] # to [be2b52eb8a339ff92e248ae9cbb506eaecd22ffe] # # patch "migration.hh" # from [8ca0e0ff039660286f78fbcc5bac2dc347a90dd9] # to [365a4914fd7fd01359aa18df660f4c82d27d3c03] # ============================================================ --- migrate_schema.cc 84098e7b4f805e8f3e8232cd6829e625c6af024c +++ migrate_schema.cc be2b52eb8a339ff92e248ae9cbb506eaecd22ffe @@ -1256,17 +1256,10 @@ migrate_sql_schema(sqlite3 * db, key_sto break; regime = std::min(regime, m->regime); + // yes, this is ugly, but I don't want to introduce bitwise-enum + // or anything fancy else for this single use case + regen_type = static_cast(regen_type | m->regen_type); - // if we should regenerate more than just one specific cache, - // we regenerate them all - if (m->regen_type != regen_none) - { - if (regen_type == regen_none) - regen_type = m->regen_type; - else - regen_type = regen_all; - } - m++; I(m < migration_events + n_migration_events); P(F("migrated to schema %s") % m->id); ============================================================ --- migration.hh 8ca0e0ff039660286f78fbcc5bac2dc347a90dd9 +++ migration.hh 365a4914fd7fd01359aa18df660f4c82d27d3c03 @@ -28,8 +28,11 @@ void check_sql_schema(sqlite3 * db, syst std::string describe_sql_schema(sqlite3 * db); void check_sql_schema(sqlite3 * db, system_path const & filename); -enum regen_cache_type { regen_none, regen_all, regen_rosters, - regen_heights, regen_branches, regen_file_sizes }; +// if you add a new item here, don't forget to raise the +// value of the "catch all" item "regen_all" +enum regen_cache_type { regen_none = 0, regen_rosters = 1, + regen_heights = 2, regen_branches = 4, + regen_file_sizes = 8, regen_all = 15 }; class migration_status { regen_cache_type _regen_type; ============================================================ --- migrate_ancestry.cc a184a51cd6654f3386329793acb81321e85816b7 +++ migrate_ancestry.cc 7e659f3dbdf54efc68479591f24ecaef3db3edd8 @@ -1117,13 +1117,13 @@ regenerate_caches(database & db, regen_c { I(type != regen_none); - if (type == regen_all || type == regen_heights) + if ((type & regen_heights) == regen_heights) regenerate_heights(db); - if (type == regen_all || type == regen_rosters) + if ((type & regen_rosters) == regen_rosters) regenerate_rosters(db); - if (type == regen_all || type == regen_branches) + if ((type & regen_branches) == regen_branches) regenerate_branches(db); - if (type == regen_all || type == regen_file_sizes) + if ((type & regen_file_sizes) == regen_file_sizes) regenerate_file_sizes(db); }