Skip to content

Commit 8720be3

Browse files
committed
Simplify the compiler checks for the availability of SQLite snapshots
1 parent 853d45b commit 8720be3

13 files changed

+54
-66
lines changed

GRDB/Core/DatabasePool.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ extension DatabasePool: DatabaseReader {
684684

685685
// MARK: - WAL Snapshot Transactions
686686

687-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
687+
#if SQLITE_ENABLE_SNAPSHOT
688688
/// Returns a long-lived WAL snapshot transaction on a reader connection.
689689
func walSnapshotTransaction() throws -> WALSnapshotTransaction {
690690
guard let readerPool else {
@@ -950,7 +950,7 @@ extension DatabasePool {
950950
purpose: "snapshot.\(databaseSnapshotCountMutex.increment())")
951951
}
952952

953-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
953+
#if SQLITE_ENABLE_SNAPSHOT
954954
/// Creates a database snapshot that allows concurrent accesses to an
955955
/// unchanging database content, as it exists at the moment the snapshot
956956
/// is created.

GRDB/Core/DatabaseSnapshotPool.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
1+
#if SQLITE_ENABLE_SNAPSHOT
22
// Import C SQLite functions
33
#if SWIFT_PACKAGE
44
import GRDBSQLite

GRDB/Core/WALSnapshot.swift

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
1+
#if SQLITE_ENABLE_SNAPSHOT
22
// Import C SQLite functions
33
#if SWIFT_PACKAGE
44
import GRDBSQLite
@@ -16,18 +16,6 @@ import SQLite3
1616
/// actual observation. This class has no other purpose, and is not intended to
1717
/// become public.
1818
///
19-
/// It does not work with SQLCipher, because SQLCipher does not support
20-
/// `SQLITE_ENABLE_SNAPSHOT` correctly: we have linker errors.
21-
/// See <https://github.com/ericsink/SQLitePCL.raw/issues/452>.
22-
///
23-
/// With custom SQLite builds, it only works if `SQLITE_ENABLE_SNAPSHOT`
24-
/// is defined.
25-
///
26-
/// With system SQLite, it works because the SDK exposes the C apis and
27-
/// since XCode 14.
28-
///
29-
/// Yes, this is an awfully complex logic.
30-
///
3119
/// See <https://www.sqlite.org/c3ref/snapshot.html>.
3220
final class WALSnapshot: @unchecked Sendable {
3321
// @unchecked because sqlite3_snapshot has no threading requirements.

GRDB/Core/WALSnapshotTransaction.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
1+
#if SQLITE_ENABLE_SNAPSHOT
22
/// A long-live read-only WAL transaction.
33
///
44
/// `WALSnapshotTransaction` **takes ownership** of its reader

GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ extension ValueConcurrentObserver {
276276
}
277277
}
278278

279-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
279+
#if SQLITE_ENABLE_SNAPSHOT
280280
extension ValueConcurrentObserver {
281281
/// Synchronously starts the observation, and returns the initial value.
282282
///

Tests/GRDBCombineTests/DatabaseReaderReadPublisherTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
4040
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabaseQueue(path: $0)) }
4141
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)) }
4242
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshot() }
43-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
43+
#if SQLITE_ENABLE_SNAPSHOT
4444
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshotPool() }
4545
#endif
4646
}
@@ -141,7 +141,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
141141
try Test(test).runAtTemporaryDatabasePath { try DatabaseQueue(path: $0) }
142142
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0) }
143143
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0).makeSnapshot() }
144-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
144+
#if SQLITE_ENABLE_SNAPSHOT
145145
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0).makeSnapshotPool() }
146146
#endif
147147
}
@@ -177,7 +177,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
177177
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabaseQueue(path: $0)) }
178178
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)) }
179179
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshot() }
180-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
180+
#if SQLITE_ENABLE_SNAPSHOT
181181
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshotPool() }
182182
#endif
183183
}
@@ -213,7 +213,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
213213
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabaseQueue(path: $0)) }
214214
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)) }
215215
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshot() }
216-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
216+
#if SQLITE_ENABLE_SNAPSHOT
217217
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshotPool() }
218218
#endif
219219
}
@@ -250,7 +250,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
250250
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabaseQueue(path: $0)) }
251251
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)) }
252252
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshot() }
253-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
253+
#if SQLITE_ENABLE_SNAPSHOT
254254
try Test(test).runAtTemporaryDatabasePath { try setUp(DatabasePool(path: $0)).makeSnapshotPool() }
255255
#endif
256256
}
@@ -274,7 +274,7 @@ class DatabaseReaderReadPublisherTests : XCTestCase {
274274
try Test(test).runAtTemporaryDatabasePath { try DatabaseQueue(path: $0) }
275275
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0) }
276276
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0).makeSnapshot() }
277-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
277+
#if SQLITE_ENABLE_SNAPSHOT
278278
try Test(test).runAtTemporaryDatabasePath { try DatabasePool(path: $0).makeSnapshotPool() }
279279
#endif
280280
}

Tests/GRDBTests/DatabaseAbortedTransactionTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class DatabaseAbortedTransactionTests : GRDBTestCase {
4040
try test(makeDatabaseQueue())
4141
try test(makeDatabasePool())
4242
try test(makeDatabasePool().makeSnapshot())
43-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
43+
#if SQLITE_ENABLE_SNAPSHOT
4444
try test(makeDatabasePool().makeSnapshotPool())
4545
#endif
4646
}
@@ -85,7 +85,7 @@ class DatabaseAbortedTransactionTests : GRDBTestCase {
8585
try test(makeDatabaseQueue())
8686
try test(makeDatabasePool())
8787
try test(makeDatabasePool().makeSnapshot())
88-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
88+
#if SQLITE_ENABLE_SNAPSHOT
8989
try test(makeDatabasePool().makeSnapshotPool())
9090
#endif
9191
}

Tests/GRDBTests/DatabaseConfigurationTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class DatabaseConfigurationTests: GRDBTestCase {
2727
try pool.makeSnapshot().read { _ in }
2828
XCTAssertEqual(connectionCountMutex.load(), 5)
2929

30-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
30+
#if SQLITE_ENABLE_SNAPSHOT
3131
try pool.makeSnapshotPool().read { _ in }
3232
XCTAssertEqual(connectionCountMutex.load(), 6)
3333
#endif
@@ -74,7 +74,7 @@ class DatabaseConfigurationTests: GRDBTestCase {
7474
XCTFail("Expected TestError")
7575
} catch is TestError { }
7676

77-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
77+
#if SQLITE_ENABLE_SNAPSHOT
7878
do {
7979
errorMutex.store(TestError())
8080
_ = try pool.makeSnapshotPool()

Tests/GRDBTests/DatabasePoolTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class DatabasePoolTests: GRDBTestCase {
5050
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-wal"))
5151
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-shm"))
5252

53-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
53+
#if SQLITE_ENABLE_SNAPSHOT
5454
// A non-empty wal file makes sure ValueObservation can use wal snapshots.
5555
// See <https://github.com/groue/GRDB.swift/issues/1383>
5656
let walURL = URL(fileURLWithPath: dbPool.path + "-wal")
@@ -74,7 +74,7 @@ class DatabasePoolTests: GRDBTestCase {
7474
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-wal"))
7575
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-shm"))
7676

77-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
77+
#if SQLITE_ENABLE_SNAPSHOT
7878
// A non-empty wal file makes sure ValueObservation can use wal snapshots.
7979
// See <https://github.com/groue/GRDB.swift/issues/1383>
8080
let walURL = URL(fileURLWithPath: dbPool.path + "-wal")
@@ -100,7 +100,7 @@ class DatabasePoolTests: GRDBTestCase {
100100
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-wal"))
101101
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-shm"))
102102

103-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
103+
#if SQLITE_ENABLE_SNAPSHOT
104104
// A non-empty wal file makes sure ValueObservation can use wal snapshots.
105105
// See <https://github.com/groue/GRDB.swift/issues/1383>
106106
let walURL = URL(fileURLWithPath: dbPool.path + "-wal")
@@ -123,7 +123,7 @@ class DatabasePoolTests: GRDBTestCase {
123123
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-wal"))
124124
XCTAssertTrue(fm.fileExists(atPath: dbPool.path + "-shm"))
125125

126-
#if SQLITE_ENABLE_SNAPSHOT || (!GRDBCUSTOMSQLITE && !GRDBCIPHER)
126+
#if SQLITE_ENABLE_SNAPSHOT
127127
// A non-empty wal file makes sure ValueObservation can use wal snapshots.
128128
// See <https://github.com/groue/GRDB.swift/issues/1383>
129129
let walURL = URL(fileURLWithPath: dbPool.path + "-wal")

0 commit comments

Comments
 (0)