Changelog History
Page 11
-
v2.4.2 Changes
๐ Released January 6, 2018 • diff
๐ Fixed
- ๐ When using a database pool, the schema introspection methods could return wrong values whenever the database schema was concurrently read and modified. This has been fixed.
DatabasePool.readFromCurrentState
no longer accepts to spawn a reader when a transaction is currently opened on the writer connection.
-
v2.4.0 Changes
๐ Released December 3, 2017 • diff
๐ New
#280: It is now possible to add an untyped column to an existing table.
try db.alter(table: "players") { t in t.add(column: "score") }
๐ #281: The
Database.dropFTS4SynchronizationTriggers
&Database.dropFTS5SynchronizationTriggers
method help cleaning up synchronized full-text table (documentation)
๐ฅ Breaking Change
- ๐ #282: This version comes with a breaking change that affects users who manually embed the GRDBCipher and GRDBCustom frameworks in their projects. This change does not affect users of the GRDB framework, or users of GRDBCipher through CocoaPods. Now, instead of embedding the GRDB.xcodeproj project, you have to embed the GRDBCipher.xcodeproj or GRDBCustom.xcodeproj. Please have a look at the updated Encryption and Custom SQLite Builds documentation chapters.
-
v2.3.1 Changes
๐ Released November 8, 2017 • diff
๐ Fixed
GRDB 2.2.0 has introduced a fix in the way transaction observers are notified of empty deferred transactions (
BEGIN; COMMIT;
). That fix was incomplete, and inconsistent.Now all transactions are notified, without any exception, including:
try db.execute("BEGIN; COMMIT;") try db.execute("SAVEPOINT foo; RELEASE SAVEPOINT foo;")
-
v2.3.0 Changes
๐ Released November 5, 2017 • diff
๐ New
- โฌ๏ธ Upgrade custom SQLite builds to v3.21.0 (thanks to @swiftlyfalling).
-
v2.2.0 Changes
๐ Released October 31, 2017 • diff
๐ New
Database.viewExists(_:)
returns whether a view exists in the database.Database.triggerExists(_:)
returns whether a trigger exists in the database.
๐ Fixed
DROP VIEW
statements would not drop views (#267)GRDB used to incorrectly send incomplete transaction notifications to transaction observers in the case of empty deferred transactions. This is no longer the case. Since empty deferred transactions have SQLite consider that no transaction started at all, they are no longer notified to transaction observers:
-- Nothing happens, and thus no notification is sent BEGIN TRANSACTION COMMIT
Those empty deferred transactions still count for the afterNextTransactionCommit database method, and the
.nextTransaction
observation extent.
-
v2.1.0 Changes
๐ Released October 24, 2017 • diff
๐ New
- ๐ GRDBCipher can now build from command line (groue/sqlcipher/pull/1 by Darren Clark)
- โฌ๏ธ Upgrade custom SQLite builds to v3.20.1 (thanks to @swiftlyfalling).
The new method
Request.asSQLRequest
allows to inspect the sql and arguments of any request:let request = Player.all() let sql = try request.asSQLRequest(db).sql print(sql) // Prints "SELECT * FROM players"
StatementArguments adopts Equatable
๐ Fixed
DROP TABLE
statements would not drop temporary tables.
๐ Documentation Diff
- ๐ New FAQ: How do I create a database in my application?
- ๐ New FAQ: How do I print a request as SQL?
- The Codable Record chapter has been enhanced with more information and sample code.
API diff
extension Request { + func asSQLRequest(_ db: Database, cached: Bool = false) throws -> SQLRequest } struct SQLRequest { + let sql: String + let arguments: StatementArguments? + let adapter: RowAdapter? }
-
v2.0.3 Changes
๐ Released October 9, 2017 • diff
๐ Fixed: Record types that conform to Encodable now encode their null columns.
-
v2.0.2 Changes
๐ Released October 5, 2017 • diff
๐ Fixed:
DROP TABLE
statements would not drop tables when run through a prepared statement. -
v2.0.1 Changes
๐ Released September 17, 2017 • diff
๐ Fixed: restored support for Swift Package Manager