From 17713a0fa9f6f31c685ac7150687fb3152bd72aa Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Thu, 12 Jun 2025 19:43:54 +0100 Subject: [PATCH] fix: transaction fixes --- lib/arjdbc/sqlite3/adapter.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/arjdbc/sqlite3/adapter.rb b/lib/arjdbc/sqlite3/adapter.rb index b97f73f73..b7fc288b0 100644 --- a/lib/arjdbc/sqlite3/adapter.rb +++ b/lib/arjdbc/sqlite3/adapter.rb @@ -236,8 +236,12 @@ def execute_batch(statements, name = nil, **kwargs) end def disable_referential_integrity # :nodoc: - old_foreign_keys = query_value("PRAGMA foreign_keys") - old_defer_foreign_keys = query_value("PRAGMA defer_foreign_keys") + # Use internal_execute to avoid materializing transactions when reading PRAGMA values + result = internal_execute("PRAGMA foreign_keys", "SCHEMA", allow_retry: false, materialize_transactions: false) + old_foreign_keys = result.rows.first&.first || 0 + + result = internal_execute("PRAGMA defer_foreign_keys", "SCHEMA", allow_retry: false, materialize_transactions: false) + old_defer_foreign_keys = result.rows.first&.first || 0 begin raw_execute("PRAGMA defer_foreign_keys = ON", "SCHEMA", allow_retry: false, materialize_transactions: false)