From b28d6692651f002225f6d89168c9fadd057975b7 Mon Sep 17 00:00:00 2001 From: Roger Sen Date: Tue, 17 Apr 2018 18:20:27 +0200 Subject: [PATCH] Wrap db schema changes in a transacion. --- src/db.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/db.c b/src/db.c index 1d3ec58..9f0bb5d 100644 --- a/src/db.c +++ b/src/db.c @@ -225,17 +225,22 @@ void db_migrate() } } + db_execute("BEGIN EXCLUSIVE TRANSACTION"); while(command[i].schema != -1) { if (command[i].schema > db_schema) { if ( !db_execute(command[i].action) ) { + db_execute("ROLLBACK TRANSACTION"); abort(); } } if( !db_execute("UPDATE DB_SCHEMA SET db_version = %i", command[i].schema) ) { + db_execute("ROLLBACK TRANSACTION"); abort(); } i++; } + db_execute("COMMIT TRANSACTION"); + if(command[i-1].schema > db_schema ) { log_string("db_schema updated to version %d", command[i-1].schema);