From 5707efd23202226bccdd1c0298a36cb97b41e193 Mon Sep 17 00:00:00 2001 From: gwenn Date: Mon, 12 Jun 2023 19:16:10 +0200 Subject: [PATCH] Savepoint Drop bug See https://github.com/rusqlite/rusqlite/pull/1327#issuecomment-1586618034 --- src/transaction.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/transaction.rs b/src/transaction.rs index 122371f..2b6f5ac 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -686,6 +686,22 @@ mod test { Ok(()) } + #[test] + fn test_savepoint_release_error() -> Result<()> { + let mut db = checked_memory_handle()?; + + db.pragma_update(None, "foreign_keys", true)?; + db.execute_batch("CREATE TABLE r(n INTEGER PRIMARY KEY NOT NULL); CREATE TABLE f(n REFERENCES r(n) DEFERRABLE INITIALLY DEFERRED);")?; + { + let mut sp = db.savepoint()?; + sp.execute("INSERT INTO f VALUES (0)", [])?; + sp.set_drop_behavior(DropBehavior::Commit); + } + assert!(db.is_autocommit()); + + Ok(()) + } + #[test] fn test_savepoint_names() -> Result<()> { let mut db = checked_memory_handle()?;