All Versions
Latest Version
Avg Release Cycle
15 days
Latest Release

Changelog History
Page 1

  • v6.3.1 Changes

    ๐Ÿš€ Released November 11, 2022 • diff

  • v6.3.0 Changes

    ๐Ÿš€ Released November 6, 2022 • diff

    • ๐Ÿ†• New: #1291 by @groue: DocC inline documentation
    • ๐Ÿ†• New: The Row.dataNoCopy methods are deprecated. Use Row.withUnsafeData instead.
  • v6.2.0 Changes

    ๐Ÿš€ Released October 28, 2022 • diff

    • ๐Ÿ†• New: #1289 by @arkie: Add support for passing in categories to the FTS5 unicode61 tokenizer (SQLite 3.25+)
    • ๐Ÿ›  Fixed: The FTS5Tokenizer.tokenize(query:) method no longer returns incorrect results for certain tokenizer arguments.
  • v6.1.0 Changes

    ๐Ÿš€ Released October 20, 2022 • diff

    • ๐Ÿ†• New: #1288 by @jcavar: Support for strict tables
  • v6.0.0 Changes

    ๐Ÿš€ Released September 9, 2022 • diff

    • ๐Ÿ†• New: Bump custom SQLite builds v3.39.3
    • ๐Ÿ›  Fixed: #1274 Fixed a bug with HasManyThrough associations when the "through" association has the same association key as the association itself.
    • ๐Ÿ›  Fixed: #1275 Enhance error message for some requests involving associations on common table expressions.
    • ๐Ÿ›  Fixed: #1276 Fix build error with Xcode 14.0 RC (14A309)
    • ๐Ÿ’ฅ Breaking Change: Request methods that accept a closure with a Database argument have been renamed with the WhenConnected suffix: request.filterWhenConnected { db in ... }, etc.
  • v6.0.0-beta.4 Changes

    ๐Ÿš€ Released August 28, 2022 • diff

    • ๐Ÿ†• New: #1271 by @groue: Bump custom SQLite builds v3.39.2
    • ๐Ÿ†• New: SQLITE_OPEN_EXRESCODE, when available, exposes [extended result codes]( when opening a database connection.
    • ๐Ÿ›  Fixed: PRAGMA table_list, when available, makes it possible for GRDB to detect WITHOUT ROWID tables without polluting the SQLite error log.
    • ๐Ÿ’ฅ Breaking Change: TheGRDB.xcodeproj or GRDBCustom.xcodeproj projects now define cross-platforms targets.
    • ๐Ÿ“š Documentation Update: [Migrating From GRDB 5 to GRDB 6](Documentation/ describes how to update applications that directly embed the GRDB.xcodeproj or GRDBCustom.xcodeproj project.
    • ๐Ÿ“š Documentation Update: [Custom SQLite Builds]( was updated for the new cross-platform target defined by the GRDBCustom.xcodeproj project.
  • v6.0.0-beta.3 Changes

    ๐Ÿš€ Released August 25, 2022 • diff

    • ๐Ÿ›  Fix: #1268 by @groue: Fix SQL generation of CHECK constraints
    • ๐Ÿ’ฅ Breaking Change: The Column type is no longer Equatable
    • ๐Ÿ“š Documentation Update: [Migrating From GRDB 5 to GRDB 6](Documentation/ describes in detail how to update records that customize their persistence methods.
    • ๐Ÿ“š Documentation Update: The [Single-Row Tables](Documentation/ guide was updated for the new persistence callbacks.
  • v6.0.0-beta.2 Changes

    ๐Ÿš€ Released August 23, 2022 • diff

    • ๐Ÿ†• New: Extended UPSERT apis with the ability to define the conflict target, and the assignments performed in case of conflicts.
    • ๐Ÿ“š Documentation Update: A new [Upsert]( chapter describes upserts in detail.
  • v6.0.0-beta Changes

    ๐Ÿš€ Released August 21, 2022 • diff

    ๐Ÿ†• New

    ๐Ÿ“š Upgrading your app can bring improvements: check [Migrating From GRDB 5 to GRDB 6](Documentation/ for some suggestions.

    • ๐Ÿ‘€ :star: Support for UPSERT: player.upsert(db), etc. See [Persistence Methods](

    • ๐Ÿ‘€ :star: Support for the RETURNING clause: player.insertAndFetch(db), Player.deleteAndFetchAll(db), etc. See [Persistence Methods and the RETURNING clause](

    • :star: [Persistence Callbacks]( allow record types to customize persistence methods: didInsert, willSave, etc.

    • ๐Ÿ‘ :star: Better support for unexpected database values. Where GRDB 5 would crash during encoding and decoding database values, GRDB 6 has learned to throw errors instead. Record protocols throw decoding and encoding errors, and value requests throw errors on invalid inputs.

    • Request protocols and cursors now define primary associated types, enabled by SE-0346.

    • All persistence methods now accept an explicit conflict policy: player.insert(db, onConflict: .replace), etc.

    • You can append the contents of a cursor to a collection with RangeReplaceableCollection.append(contentsOf:).

    • now accepts a throwing closure argument.

    ๐Ÿ“š Documentation Updates

    • ๐Ÿ“š :star: [Migrating From GRDB 5 to GRDB 6](Documentation/ suggestions for improving your applications, and guidance for handling the breaking changes.
    • The [Persistence Methods]( chapter introduces the upsert method.
    • โšก๏ธ The [Persistence Methods and the RETURNING clause]( chapter introduces persistence methods that fetch inserted, updated and deleted values.
    • The [Persistence Callbacks]( chapter introduces the callback invoked from persistence methods, such as didInsert, willSave, etc.
    • โšก๏ธ The [DatabaseRegionObservation]( chapter was updated for the new DatabaseRegionObservation.start method.
    • โช The [Transaction Hook]( chapter describes the new Database.afterNextTransaction(onCommit:onRollback:) method.
    • The [Value Queries]( chapter explains how to distinguish a request that returns no value from a request that fetches a NULL value.

    ๐Ÿ’ฅ Breaking Changes

    • โœ‚ Removed deprecated methods
    • :star: Bumped requirements:
      • Swift 5.7+ and Xcode 14+ are required.
      • iOS 11.0+ / macOS 10.13+ / tvOS 11.0+ / watchOS 4.0+ / SQLite 3.19.3+ are required.
    • ๐Ÿ”จ :star: Record protocols were refactored:
      • The FetchableRecord.init(row:) initializer can now throw errors.
      • The EncodableRecord.encode(to:) method can now throw errors.
      • Record types can no longer override persistence methods. You use [Persistence Callbacks]( instead.
    • Various breaking changes:
      • The in-memory DatabaseQueue() initializer can now throw errors.
      • The selectID() method is replaced with selectPrimaryKey(as:).
      • Cursor.isEmpty is now a throwing property, instead of a method.
      • The Record.copy() method was removed, without replacement.
      • The DerivableRequest.limit(_:offset_:) method was removed, without replacement.
      • DatabaseRegionObservation.start(in:onError:onChange:) now returns a cancellable.
      • The DatabaseRegionObservation.extent property was removed.
      • The statement property of database cursors was replaced with read-only properties such as sql or columnNames.
      • The Database.afterNextTransactionCommit(_:) method was renamed Database.afterNextTransaction(onCommit:onRollback:), and is now able to report rollbacks as well as commits.
  • v5.26.1 Changes

    ๐Ÿš€ Released September 8, 2022 • diff

    • ๐Ÿ›  Fixed: #1276 Fix build error with Xcode 14.0 RC (14A309)