This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
neels gerrit-no-reply at lists.osmocom.orgneels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/15964 ) Change subject: db upgrade: remove some code dup ...................................................................... db upgrade: remove some code dup Instead of a switch() for each version number with identical switch cases except for the function name, use an array of function pointers and loop. Also print a success message after each individual version upgrade, instead of only one in the end (see change in db_upgrade_test.ok). Change-Id: I1736af3d9a3f02e29db836966ac15ce49f94737b --- M src/db.c M tests/db_upgrade/db_upgrade_test.ok 2 files changed, 16 insertions(+), 30 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/64/15964/1 diff --git a/src/db.c b/src/db.c index 75ca889..93771bd 100644 --- a/src/db.c +++ b/src/db.c @@ -423,6 +423,13 @@ return rc; } +typedef int (*db_upgrade_func_t)(struct db_context *dbc); +static db_upgrade_func_t db_upgrade_path[] = { + db_upgrade_v1, + db_upgrade_v2, + db_upgrade_v3, +}; + static int db_get_user_version(struct db_context *dbc) { const char *user_version_sql = "PRAGMA user_version"; @@ -534,40 +541,17 @@ LOGP(DDB, LOGL_NOTICE, "Database '%s' has HLR DB schema version %d\n", dbc->fname, version); if (version < CURRENT_SCHEMA_VERSION && allow_upgrade) { - switch (version) { - case 0: - rc = db_upgrade_v1(dbc); + for (;version < ARRAY_SIZE(db_upgrade_path); version++) { + db_upgrade_func_t upgrade_func = db_upgrade_path[version]; + rc = upgrade_func(dbc); if (rc != SQLITE_DONE) { - LOGP(DDB, LOGL_ERROR, "Failed to upgrade HLR DB schema to version 1: (rc=%d) %s\n", - rc, sqlite3_errmsg(dbc->db)); + LOGP(DDB, LOGL_ERROR, "Failed to upgrade HLR DB schema to version %d: (rc=%d) %s\n", + version+1, rc, sqlite3_errmsg(dbc->db)); goto out_free; } - version = 1; - /* fall through */ - case 1: - rc = db_upgrade_v2(dbc); - if (rc != SQLITE_DONE) { - LOGP(DDB, LOGL_ERROR, "Failed to upgrade HLR DB schema to version 2: (rc=%d) %s\n", - rc, sqlite3_errmsg(dbc->db)); - goto out_free; - } - version = 2; - /* fall through */ - case 2: - rc = db_upgrade_v3(dbc); - if (rc != SQLITE_DONE) { - LOGP(DDB, LOGL_ERROR, "Failed to upgrade HLR DB schema to version 3: (rc=%d) %s\n", - rc, sqlite3_errmsg(dbc->db)); - goto out_free; - } - version = 3; - /* fall through */ - /* case N: ... */ - default: - break; + LOGP(DDB, LOGL_NOTICE, "Database '%s' has been upgraded to HLR DB schema version %d\n", + dbc->fname, version+1); } - LOGP(DDB, LOGL_NOTICE, "Database '%s' has been upgraded to HLR DB schema version %d\n", - dbc->fname, version); } if (version != CURRENT_SCHEMA_VERSION) { diff --git a/tests/db_upgrade/db_upgrade_test.ok b/tests/db_upgrade/db_upgrade_test.ok index c1f0f9d..49e7151 100644 --- a/tests/db_upgrade/db_upgrade_test.ok +++ b/tests/db_upgrade/db_upgrade_test.ok @@ -80,6 +80,8 @@ DMAIN hlr starting DDB using database: <PATH>test.db DDB Database <PATH>test.db' has HLR DB schema version 0 +DDB Database <PATH>test.db' has been upgraded to HLR DB schema version 1 +DDB Database <PATH>test.db' has been upgraded to HLR DB schema version 2 DDB Database <PATH>test.db' has been upgraded to HLR DB schema version 3 DMAIN Cmdline option --db-check: Database was opened successfully, quitting. -- To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/15964 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Change-Id: I1736af3d9a3f02e29db836966ac15ce49f94737b Gerrit-Change-Number: 15964 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofmeyr at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191105/577d66ea/attachment.htm>