17 curated breaking changes across major versions of GRDB.swift. Use this as a migration checklist before bumping dependencies.
**BREAKING CHANGE**: Accept multiple SQLCipher libraries by @groue in https://github.com/groue/GRDB.swift/pull/1819 This change aims at easing building GRDB against various SQLCipher flavors. **The compiler flag that enables new GRDB APIs for SQLCipher is now `SQLITE_HAS_CODEC`.**
Fix cancellation of async tasks that use the FTS5 full-text engine. by @groue in https://github.com/groue/GRDB.swift/pull/1839 This workarounds an [SQLite bug](https://sqlite.org/forum/forumpost/137c7662b389fa18) that would trigger a GRDB crash, and improves the robustness of the library regarding cancellation and interruption of database accesses.
Improve the ergonomics of [`DatabaseMigrator.registerMigration(_:foreignKeyChecks:merging:migrate)`](https://swiftpackageindex.com/groue/grdb.swift/documentation/grdb/databasemigrator/registermigration(_:foreignkeychecks:merging:migrate:)) by accepting that the name of the merged migration is included in the set of merged migrations: ```swift // Used to fail, now OK: migrator.registerMigration("v3", merging: ["v1", "v2", "v3"]) { ... } // ~~~~ ~~~~ // The above code is equivalent to: migrator.re
enum Columns { ... }
`TableAlias` is now a generic type. This will break existing code that accepts a `TableAlias` as an argument. You will have to make those methods generic as well.
public enum Columns { ... } } ```
If you define a `public` record type with a nested `Columns` enum, you have to make this enum `public` as well. ```diff public struct Player: FetchableRecord, PersistableRecord {
**Breaking Change**: Coding strategies depend on the column by [@groue](https://github.com/groue) in [#1606](https://github.com/groue/GRDB.swift/pull/1606)
**Breaking Change**: Enhance ergonomics of record methods that insert/save/upsert and fetch by [@groue](https://github.com/groue) in [#1599](https://github.com/groue/GRDB.swift/pull/1599)
**Breaking Change**: Rename the CSQLite module to GRDBSQLite, and stop exporting the C SQLite functions by [@groue](https://github.com/groue) in [#1600](https://github.com/groue/GRDB.swift/pull/1600)
**Breaking Change**: Perform all writes with immediate transactions by default by [@groue](https://github.com/groue) in [#1602](https://github.com/groue/GRDB.swift/pull/1602)
**Breaking Change**: Remove DatabasePool.concurrentRead by [@groue](https://github.com/groue) in [#1603](https://github.com/groue/GRDB.swift/pull/1603)
**Breaking Change**: enhance ergonomics of record methods that insert/save/upsert and fetch by @groue in https://github.com/groue/GRDB.swift/pull/1599
**Breaking Change**: Rename the CSQLite module to GRDBSQLite, and stop exporting the C SQLite functions. by @groue in https://github.com/groue/GRDB.swift/pull/1600
**Breaking Change**: Perform all writes with immediate transactions by default by @groue in https://github.com/groue/GRDB.swift/pull/1602
**Breaking Change**: Remove DatabasePool.concurrentRead by @groue in https://github.com/groue/GRDB.swift/pull/1603
**Breaking Change**: Coding strategies depend on the column by @groue in https://github.com/groue/GRDB.swift/pull/1606
Get this data programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/breaking/cocoapods/GRDB.swift