From 64df2a15a2ab8c6c0ddd97a90fb3e4b8cc66ce13 Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Mon, 7 Aug 2023 13:24:30 +0200 Subject: [PATCH] db: keep NOT NULL constraint on is_immature in migration This adds an extraneous DEFAULT compared to the schema in freshly created databases, but anything else (altering the column in an SQLite-friendly way after setting all NULL values to 0) would be way too involved. --- src/database/sqlite/utils.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/database/sqlite/utils.rs b/src/database/sqlite/utils.rs index a782036f..407f05f5 100644 --- a/src/database/sqlite/utils.rs +++ b/src/database/sqlite/utils.rs @@ -170,11 +170,7 @@ fn migrate_v0_to_v1(conn: &mut rusqlite::Connection) -> Result<(), SqliteDbError fn migrate_v1_to_v2(conn: &mut rusqlite::Connection) -> Result<(), SqliteDbError> { db_exec(conn, |tx| { tx.execute( - "ALTER TABLE coins ADD COLUMN is_immature", - rusqlite::params![], - )?; - tx.execute( - "UPDATE coins SET is_immature = 0 WHERE is_immature IS NULL", + "ALTER TABLE coins ADD COLUMN is_immature BOOLEAN NOT NULL DEFAULT 0 CHECK (is_immature IN (0,1))", rusqlite::params![], )?; tx.execute("UPDATE version SET version = 2", rusqlite::params![])?;