From: Michael Tremer Date: Sun, 29 Jun 2025 16:38:34 +0000 (+0000) Subject: db: Refactor handling return codes X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=57502afb895731fdd1950f836e480356e3020eaf;p=pakfire.git db: Refactor handling return codes Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/db.c b/src/pakfire/db.c index fd22bf9a..89a84dfd 100644 --- a/src/pakfire/db.c +++ b/src/pakfire/db.c @@ -325,6 +325,9 @@ static int pakfire_db_execute(pakfire_db* db, const char* stmt) { // Log any errors if (r) { ERROR(db->ctx, "Database query failed: %s\n", sqlite3_errmsg(db->handle)); + + // Return some error code that says that the operation was not successful + return -ECANCELED; } return r; @@ -401,13 +404,13 @@ static int pakfire_db_create_schema(pakfire_db* db) { // Create settings table r = pakfire_db_execute(db, "CREATE TABLE IF NOT EXISTS settings(key TEXT, val TEXT)"); - if (r) - return 1; + if (r < 0) + return r; // settings: Add a unique index on key r = pakfire_db_execute(db, "CREATE UNIQUE INDEX IF NOT EXISTS settings_key ON settings(key)"); - if (r) - return 1; + if (r < 0) + return r; // Create packages table r = pakfire_db_execute(db, @@ -437,18 +440,18 @@ static int pakfire_db_create_schema(pakfire_db* db) { "source_arch TEXT, " "distribution TEXT" ")"); - if (r) - return 1; + if (r < 0) + return r; // packages: Create index to find package by name r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS packages_name ON packages(name)"); - if (r) - return 1; + if (r < 0) + return r; // packages: Create unique index over UUID r = pakfire_db_execute(db, "CREATE UNIQUE INDEX IF NOT EXISTS packages_uuid ON packages(uuid)"); - if (r) - return 1; + if (r < 0) + return r; // Create dependencies table r = pakfire_db_execute(db, @@ -458,12 +461,12 @@ static int pakfire_db_create_schema(pakfire_db* db) { "dependency TEXT, " "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE" ")"); - if (r) + if (r < 0) return r; // dependencies: Add index over packages r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS dependencies_pkg_index ON dependencies(pkg)"); - if (r) + if (r < 0) return r; // Create files table @@ -490,18 +493,18 @@ static int pakfire_db_create_schema(pakfire_db* db) { "digest_sha3_256 BLOB, " "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE" ")"); - if (r) - return 1; + if (r < 0) + return r; // files: Add index over packages r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS files_pkg_index ON files(pkg)"); - if (r) - return 1; + if (r < 0) + return r; // files: Add index over path r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS files_path_index ON files(path)"); - if (r) - return 1; + if (r < 0) + return r; // Create scriptlets table r = pakfire_db_execute(db, @@ -512,19 +515,19 @@ static int pakfire_db_create_schema(pakfire_db* db) { "scriptlet TEXT, " "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE" ")"); - if (r) - return 1; + if (r < 0) + return r; // scriptlets: Add index over packages r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS scriptlets_pkg_index ON scriptlets(pkg)"); - if (r) - return 1; + if (r < 0) + return r; const char* arch = pakfire_root_get_effective_arch(db->root); // Set architecture r = pakfire_db_set_string(db, "arch", arch); - if (r) { + if (r < 0) { ERROR(db->ctx, "Could not set architecture\n"); return r; } @@ -548,14 +551,14 @@ static int pakfire_db_migrate_schema(pakfire_db* db) { while (db->schema < CURRENT_SCHEMA) { // Begin a new transaction r = pakfire_db_begin_transaction(db); - if (r) + if (r < 0) goto ROLLBACK; switch (db->schema) { // No schema exists case 0: r = pakfire_db_create_schema(db); - if (r) + if (r < 0) goto ROLLBACK; db->schema = CURRENT_SCHEMA; @@ -563,7 +566,7 @@ static int pakfire_db_migrate_schema(pakfire_db* db) { case 7: r = pakfire_db_migrate_to_schema_8(db); - if (r) + if (r < 0) goto ROLLBACK; db->schema++; @@ -576,12 +579,12 @@ static int pakfire_db_migrate_schema(pakfire_db* db) { // Update the schema version r = pakfire_db_set_int(db, "schema", CURRENT_SCHEMA); - if (r) + if (r < 0) goto ROLLBACK; // All done, commit! r = pakfire_db_commit(db); - if (r) + if (r < 0) goto ROLLBACK; } @@ -589,8 +592,7 @@ static int pakfire_db_migrate_schema(pakfire_db* db) { ROLLBACK: pakfire_db_rollback(db); - - return 1; + return r; } static int pakfire_db_check_arch(pakfire_db* db) { @@ -678,11 +680,7 @@ static int pakfire_db_setup(pakfire_db* db) { } // Create or migrate schema - r = pakfire_db_migrate_schema(db); - if (r < 0) - return r; - - return 0; + return pakfire_db_migrate_schema(db); } int pakfire_db_open(pakfire_db** db, pakfire_ctx* ctx, pakfire_root* root, int flags) { @@ -749,7 +747,6 @@ int pakfire_db_open(pakfire_db** db, pakfire_ctx* ctx, pakfire_root* root, int f ERROR: pakfire_db_free(self); - return r; } @@ -764,7 +761,6 @@ pakfire_db* pakfire_db_unref(pakfire_db* db) { return db; pakfire_db_free(db); - return NULL; }