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)