All Versions
Latest Version
Avg Release Cycle
15 days
Latest Release

Changelog History
Page 3

  • v5.19.0 Changes

    ๐Ÿš€ Released January 19, 2022 • diff

    • ๐Ÿ†• New: #1144 by @TimAEllis: Add drop column support
    • ๐Ÿ›  Fixed: #1139 by @groue: Deal with authorization callbacks from more cursors
    • ๐Ÿ›  Fixed: #1149 by @BB9z: Fix typos
  • v5.18.0 Changes

    ๐Ÿš€ Released January 9, 2022 • diff

    • ๐Ÿ†• New: #1075 by @mallman: Progress-reporting database backups
    • ๐Ÿ†• New: #1129 by @groue: Detached columns
    • ๐Ÿ†• New: #1132 by @groue: Bump custom SQLite builds v3.72.2
    • ๐Ÿ†• New: #1133 by @groue: Support for STRICT tables
    • ๐Ÿ›  Fixed: #1120 by @jnross: Fix typos
    • ๐Ÿ›  Fixed: #1121 by @byohay: Quote PROJECT_DIR and SRCROOT environment variables
    • ๐Ÿ›  Fixed: #1128 by @groue: Deal with authorization callbacks from cursors of FetchableRecord
    • ๐Ÿ“š Documentation Update: A new [Embedding SQL in Query Interface Requests]( chapter describes the ways to leverage your SQL skills and extend GRDB apis.
  • v5.17.0 Changes

    ๐Ÿš€ Released December 14, 2021 • diff

    • ๐Ÿ†• New: :star: #1079 by @groue: Async / Await
    • ๐Ÿ†• New: DatabaseRegion(table: tableName) is deprecated. Use Table(tableName) instead.
    • ๐Ÿ†• New: The ABS and LENGTH SQL functions are now available on association aggregates, through abs(aggregate) and length(aggregate).
    • ๐Ÿ†• New: Support for the TOTAL aggregate function. You can use total in Swift, at all places sum is available.
    • ๐Ÿ†• New: ValueObservation.removeDuplicates(by:) with a closure argument.
    • ๐Ÿ†• New: Testing for the existence of an associated record with TableAlias.exists now supports associated views, and associated tables WITHOUT ROWID that have a compound primary key.
    • ๐Ÿ›  Fixed: Database.primaryKey(_:) throws when given the name of a view.
    • ๐Ÿ“š Documentation Update: :star: The [Concurrency Guide](Documentation/ was updated for the new support for asynchronous Swift.
    • ๐Ÿ“š Documentation Update: :star: [GRDBAsyncDemo](Documentation/DemoApps/GRDBAsyncDemo/ is a new SwiftUI demo app that uses the new async apis.
    • ๐Ÿ“š Documentation Update: A new FAQ gives hints for avoiding a [Mutation of captured var in concurrently-executing code]( compiler error.
    • ๐Ÿ“š Documentation Update: #1107 by @tcwalther: Fix docstring for Database.create(index: ...)
    • ๐Ÿ“š Documentation Update: #1110 by @maxhumber: Minor changes to a tip in the README
  • v5.16.0 Changes

    ๐Ÿš€ Released December 5, 2021 • diff

    • ๐Ÿ†• New: #1106 by @groue: Sugar for fetching only a few columns of associated records
    • ๐Ÿ“š Documentation Update: The [Joining And Prefetching Associated Records](Documentation/ chapter was fully rewritten. The joining methods including(required:) and others are much more detailed, with an exploration of frequent use cases.
    • ๐Ÿ“š Documentation Update: The [Joining And Prefetching Associated Records](Documentation/ chapter introduces the new annotated(withRequired:) and annotated(withOptional:) joining methods.
    • ๐Ÿ“š Documentation Update: The new [Choosing a Joining Method Given the Shape of the Decoded Type](Documentation/ chapter helps choosing a joining method, given the shape of the fetched data.
  • v5.15.0 Changes

    ๐Ÿš€ Released December 2, 2021 • diff

    • ๐Ÿ›  Fixed: ValueObservation now always fetches fresh values in an isolated fashion. This prevents all risks of fetching inconsistent data even if an external connection modifies the database.
    • ๐Ÿ†• New: Table now conforms to DatabaseRegionConvertible. You can write DatabaseRegionObservation(tracking: Table("player")).
    • ๐Ÿ†• New: #1102 by @groue: Explicit tracked region for ValueObservation
  • v5.14.0 Changes

    ๐Ÿš€ Released November 25, 2021 • diff

    • ๐Ÿ›  Fix: ForeignKeyViolation.failureDescription(_:) now accepts table names that require quoting.
    • ๐Ÿ›  Fix: Add missing public qualifier on ForeignKeyViolation properties.
    • ๐Ÿ†• New: ForeignKeyViolation.databaseError(_:) turns a foreign key violation into a DatabaseError.
    • ๐Ÿ“š Documentation Update: the demo apps were modernized for iOS 15+. The SwiftUI demo app now uses the GRDBQuery package in order to update its views according to the database content.
  • v5.13.0 Changes

    ๐Ÿš€ Released November 7, 2021 • diff

    • ๐Ÿ’ฅ Breaking Change: #1076 by @groue: Require Swift 5.3 and Xcode 12
    • ๐Ÿ†• New: :star: #1088 by @groue: Shared ValueObservation
    • ๐Ÿ†• New: :star: #1095 by @groue: Precise foreign key checks for migrations
    • ๐Ÿ†• New: #1078 by @groue: Non-mutating persistence methods saved and inserted, and existence-checking methods isEmpty and exists
    • ๐Ÿ†• New: DatabasePool.erase() prevents concurrent reads until it has completed.
    • ๐Ÿ†• New: The close() method allows precise closing of database connections.
    • ๐Ÿ†• New: Filtering records by single-column primary key now properly encodes dates and uuids according to the customized strategies (filter(id:), deleteAll(_:keys:), etc.)
    • ๐Ÿ†• New: DatabaseUUIDEncodingStrategy.lowercaseString can encode UUID as a lowercased string. For clarity, the string strategy has been deprecated and renamed uppercaseString.
    • ๐Ÿ“š Documentation Update: :star: The [Concurrency Guide](Documentation/ got a major overhaul.
    • ๐Ÿ“š Documentation Update: :star: A new [ValueObservation Sharing]( chapter describes how to share database observations and spare database resources.
    • ๐Ÿ“š Documentation Update: :star: The [Migrations](Documentation/ guide tells how you can mitigate slow foreign key checks during schema changes.
    • ๐Ÿ“š Documentation Update: The [Date and UUID Coding Strategies]( chapter describes the new support for date and uuid primary key coding in requests by single-column primary key.
    • ๐Ÿ“š Documentation Update: A new [Testing for Record Existence]( chapter describes the new request.isEmpty(_:), Record.exists(_:id:) and Record.exists(_:key:) methods.
  • v5.12.0 Changes

    ๐Ÿš€ Released September 25, 2021 • diff

    • ๐Ÿ’ฅ Breaking Change: Minimum iOS version is now iOS 11.0, and 32-bits devices are no longer supported. This fixes issues introduced by Xcode 13 (#1033, #1059).
    • ๐Ÿ†• New: FTS3Pattern(matchingAllPrefixesIn:) and FTS5Pattern(matchingAllPrefixesIn:) let you build full-text search patterns suitable for prefix queries.
    • ๐Ÿ†• New: FTS3.tokenize(_:) and FTS5Tokenizer.tokenize(_:) let you tokenize input strings.
    • ๐Ÿ“š Documentation Update: Full-text search documentation was updated for the new search pattern initializers ([FTS3/4](Documentation/, [FTS5](Documentation/, and tokenization methods ([FTS3/4](Documentation/, [FTS5](Documentation/
  • v5.11.0 Changes

    ๐Ÿš€ Released September 3, 2021 • diff

    • ๐Ÿ›  Fixed: Version 5.10.0, when embedded as an Xcode project, would enable the FTS5 full-text engine on system versions that do not provide it.
    • ๐Ÿ†• New: #1046 by @groue: Improve performance of by-index row decoding
    • ๐Ÿ†• New: #1029 by @sberrevoets, @groue: Column coding strategies for Codable records
  • v5.10.0 Changes

    ๐Ÿš€ Released August 22, 2021 • diff

    • ๐Ÿ†• New: #1036 by @groue: Restore minimal CI tests
    • ๐Ÿ†• New: #1037 by @groue: Support BUILD_LIBRARY_FOR_DISTRIBUTION
    • ๐Ÿ†• New: #1038 by @GetToSet: Add match operator in ColumnExpression for FTS5
    • ๐Ÿ†• New: With Swift 5.5+, enhance access to Column.rowID. Row and PersistenceContainer subscripts now accept row[.rowID] and container[.rowID] (SE-0299)
    • ๐Ÿ“š Documentation Update: A new [Combine and Data Consistency](Documentation/ chapter explains how to make sure database publishers do not break important database invariants.