vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit ca1a9e26d82815c35e0814824d1083bbe56347f9
parent f3a1385aee241dcbf6a513d5926eae4cd7872e88
Author: BlackDex <black.dex@gmail.com>
Date:   Mon,  9 Oct 2023 20:19:57 +0200

Remove `SET CONSTRAINTS` during postgres migration

The PostgreSQL migrations do not need this setting.
I tested this by running an old Vaultwarden instance (v1.18.0) on a new
PostrgreSQL database, created a few users and some vault items, after
that run the new code and it doesn't break.

Fixes #3930

Diffstat:
Msrc/db/mod.rs | 14+-------------
1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/src/db/mod.rs b/src/db/mod.rs @@ -479,21 +479,9 @@ mod postgresql_migrations { pub const MIGRATIONS: EmbeddedMigrations = embed_migrations!("migrations/postgresql"); pub fn run_migrations() -> Result<(), super::Error> { - use diesel::{Connection, RunQueryDsl}; + use diesel::Connection; // Make sure the database is up to date (create if it doesn't exist, or run the migrations) let mut connection = diesel::pg::PgConnection::establish(&crate::CONFIG.database_url())?; - // Disable Foreign Key Checks during migration - - // FIXME: Per https://www.postgresql.org/docs/12/sql-set-constraints.html, - // "SET CONSTRAINTS sets the behavior of constraint checking within the - // current transaction", so this setting probably won't take effect for - // any of the migrations since it's being run outside of a transaction. - // Migrations that need to disable foreign key checks should run this - // from within the migration script itself. - diesel::sql_query("SET CONSTRAINTS ALL DEFERRED") - .execute(&mut connection) - .expect("Failed to disable Foreign Key Checks during migrations"); - connection.run_pending_migrations(MIGRATIONS).expect("Error running migrations"); Ok(()) }