From 0965084be35b45e03fb9b1fca9910ead19a4082b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 17 Mar 2024 13:40:45 +0100 Subject: [PATCH] Fix WALSnapshotTransaction so that it clears its schema cache if needed --- GRDB/Core/WALSnapshotTransaction.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/GRDB/Core/WALSnapshotTransaction.swift b/GRDB/Core/WALSnapshotTransaction.swift index 32eb3afca1..5f56f1d2fc 100644 --- a/GRDB/Core/WALSnapshotTransaction.swift +++ b/GRDB/Core/WALSnapshotTransaction.swift @@ -46,7 +46,9 @@ class WALSnapshotTransaction { // Open a long-lived transaction, and enter snapshot isolation self.walSnapshot = try reader.sync(allowingLongLivedTransaction: true) { db in try db.beginTransaction(.deferred) - try db.execute(sql: "SELECT rootpage FROM sqlite_master LIMIT 1") + // This also acquires snapshot isolation because checking + // database schema performs a read access. + try db.clearSchemaCacheIfNeeded() return try WALSnapshot(db) } self.reader = reader