You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -90,8 +91,12 @@ GRDB adheres to [Semantic Versioning](https://semver.org/), with one exception:
90
91
91
92
---
92
93
93
-
## Next Release
94
+
## 5.24.0
94
95
96
+
Released May 1, 2022 • [diff](https://github.com/groue/GRDB.swift/compare/v5.23.0...v5.24.0)
97
+
98
+
- **Fixed**: [#1203](https://github.com/groue/GRDB.swift/pull/1203) by [@EvanHahn](https://github.com/EvanHahn): Fix changelog links
99
+
- **Fixed**: [#1212](https://github.com/groue/GRDB.swift/pull/1212) by [@MartinP7r](https://github.com/MartinP7r): Fix apple docs links
95
100
- **Fixed**: [#1213](https://github.com/groue/GRDB.swift/pull/1213) by [@groue](https://github.com/groue): Fix crash when the number of active ValueObservations is high
96
101
- **Breaking Change**: Transactions performed during a read-only database access are no longer notified to transaction observers. This is, strictly speaking, a breaking change. However it should have no impact since read-only transactions have very little interest.
let pattern =FTS3Pattern(matchingAnyTokenIn: "*") // nil
305
305
```
306
306
307
-
FTS3Pattern are regular [values](../README.md#values). You can use them as query [arguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html):
307
+
FTS3Pattern are regular [values](../README.md#values). You can use them as query [arguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html):
let pattern =FTS5Pattern(matchingAnyTokenIn: "*") // nil
588
588
```
589
589
590
-
FTS5Pattern are regular [values](../README.md#values). You can use them as query [arguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html):
590
+
FTS5Pattern are regular [values](../README.md#values). You can use them as query [arguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html):
| Swift 5.2 |[v5.12.0](https://github.com/groue/GRDB.swift/tree/v5.12.0)|
22
22
| Swift 5.1 |[v4.14.0](https://github.com/groue/GRDB.swift/tree/v4.14.0)|
23
23
| Swift 5 |[v4.14.0](https://github.com/groue/GRDB.swift/tree/v4.14.0)|
@@ -321,7 +321,7 @@ Documentation
321
321
322
322
#### Reference
323
323
324
-
-[GRDB Reference](http://groue.github.io/GRDB.swift/docs/5.23/index.html) (generated by [Jazzy](https://github.com/realm/jazzy))
324
+
-[GRDB Reference](http://groue.github.io/GRDB.swift/docs/5.24/index.html) (generated by [Jazzy](https://github.com/realm/jazzy))
325
325
326
326
#### Getting Started
327
327
@@ -613,7 +613,7 @@ do {
613
613
>
614
614
> :warning:**Warning**: The SQLite version that ships with old operating systems (prior to OSX 10.12, tvOS 10.0, and watchOS 3.0) outputs statement arguments in the [trace events](#how-do-i-print-a-request-as-sql), regardless of the `publicStatementArguments` flag.
615
615
616
-
See [Configuration](http://groue.github.io/GRDB.swift/docs/5.23/Structs/Configuration.html) for more details and configuration options.
616
+
See [Configuration](http://groue.github.io/GRDB.swift/docs/5.24/Structs/Configuration.html) for more details and configuration options.
617
617
618
618
619
619
SQLite API
@@ -670,7 +670,7 @@ try dbQueue.write { db in
670
670
}
671
671
```
672
672
673
-
The `?` and colon-prefixed keys like `:score` in the SQL query are the **statements arguments**. You pass arguments with arrays or dictionaries, as in the example above. See [Values](#values) for more information on supported arguments types (Bool, Int, String, Date, Swift enums, etc.), and [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html) for a detailed documentation of SQLite arguments.
673
+
The `?` and colon-prefixed keys like `:score` in the SQL query are the **statements arguments**. You pass arguments with arrays or dictionaries, as in the example above. See [Values](#values) for more information on supported arguments types (Bool, Int, String, Date, Swift enums, etc.), and [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html) for a detailed documentation of SQLite arguments.
674
674
675
675
You can also embed query arguments right into your SQL queries, with the `literal` argument label, as in the example below. See [SQL Interpolation] for more details.
676
676
@@ -928,7 +928,7 @@ try dbQueue.read { db in
928
928
let dictionary =tryDictionary(uniqueKeysWithValues: cursor)
929
929
```
930
930
931
-
-**Cursors adopt the [Cursor](http://groue.github.io/GRDB.swift/docs/5.23/Protocols/Cursor.html) protocol, which looks a lot like standard [lazy sequences](https://developer.apple.com/reference/swift/lazysequenceprotocol) of Swift.** As such, cursors come with many convenience methods: `compactMap`, `contains`, `dropFirst`, `dropLast`, `drop(while:)`, `enumerated`, `filter`, `first`, `flatMap`, `forEach`, `joined`, `joined(separator:)`, `max`, `max(by:)`, `min`, `min(by:)`, `map`, `prefix`, `prefix(while:)`, `reduce`, `reduce(into:)`, `suffix`:
931
+
-**Cursors adopt the [Cursor](http://groue.github.io/GRDB.swift/docs/5.24/Protocols/Cursor.html) protocol, which looks a lot like standard [lazy sequences](https://developer.apple.com/reference/swift/lazysequenceprotocol) of Swift.** As such, cursors come with many convenience methods: `compactMap`, `contains`, `dropFirst`, `dropLast`, `drop(while:)`, `enumerated`, `filter`, `first`, `flatMap`, `forEach`, `joined`, `joined(separator:)`, `max`, `max(by:)`, `min`, `min(by:)`, `map`, `prefix`, `prefix(while:)`, `reduce`, `reduce(into:)`, `suffix`:
932
932
933
933
```swift
934
934
// Prints all Github links
@@ -1007,7 +1007,7 @@ let rows = try Row.fetchAll(db,
1007
1007
arguments: ["name":"Arthur"])
1008
1008
```
1009
1009
1010
-
See [Values](#values) for more information on supported arguments types (Bool, Int, String, Date, Swift enums, etc.), and [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html) for a detailed documentation of SQLite arguments.
1010
+
See [Values](#values) for more information on supported arguments types (Bool, Int, String, Date, Swift enums, etc.), and [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html) for a detailed documentation of SQLite arguments.
1011
1011
1012
1012
Unlike row arrays that contain copies of the database rows, row cursors are close to the SQLite metal, and require a little care:
1013
1013
@@ -1292,7 +1292,7 @@ GRDB ships with built-in support for the following value types:
1292
1292
1293
1293
- Generally speaking, all types that adopt the [DatabaseValueConvertible](#custom-value-types) protocol.
1294
1294
1295
-
Values can be used as [statement arguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html):
1295
+
Values can be used as [statement arguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html):
1296
1296
1297
1297
```swift
1298
1298
let url: URL =...
@@ -1763,7 +1763,7 @@ try dbQueue.inDatabase { db in // or dbPool.writeWithoutTransaction
1763
1763
}
1764
1764
```
1765
1765
1766
-
Transactions can't be left opened unless you set the [allowsUnsafeTransactions](http://groue.github.io/GRDB.swift/docs/5.23/Structs/Configuration.html) configuration flag:
1766
+
Transactions can't be left opened unless you set the [allowsUnsafeTransactions](http://groue.github.io/GRDB.swift/docs/5.24/Structs/Configuration.html) configuration flag:
1767
1767
1768
1768
```swift
1769
1769
// fatal error: A transaction has been left opened at the end of a database access
@@ -1875,7 +1875,7 @@ try dbQueue.write { db in
1875
1875
}
1876
1876
```
1877
1877
1878
-
The `?` and colon-prefixed keys like `:name` in the SQL query are the statement arguments. You set them with arrays or dictionaries (arguments are actually of type [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html), which happens to adopt the ExpressibleByArrayLiteral and ExpressibleByDictionaryLiteral protocols).
1878
+
The `?` and colon-prefixed keys like `:name` in the SQL query are the statement arguments. You set them with arrays or dictionaries (arguments are actually of type [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html), which happens to adopt the ExpressibleByArrayLiteral and ExpressibleByDictionaryLiteral protocols).
See [fetching methods](#fetching-methods) for information about the `fetchCursor`, `fetchAll`, `fetchSet` and `fetchOne` methods. See [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html) for more information about the query arguments.
2704
+
See [fetching methods](#fetching-methods) for information about the `fetchCursor`, `fetchAll`, `fetchSet` and `fetchOne` methods. See [StatementArguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html) for more information about the query arguments.
2705
2705
2706
2706
>:point_up:**Note**:for performance reasons, the same row argument to `init(row:)` is reused during the iteration of a fetch query. If you want to keep the row for later use, make sure to store a copy: `self.row = row.copy()`.
2707
2707
@@ -3141,7 +3141,7 @@ protocol EncodableRecord {
3141
3141
}
3142
3142
```
3143
3143
3144
-
See [DatabaseColumnDecodingStrategy](https://groue.github.io/GRDB.swift/docs/5.23/Enums/DatabaseColumnDecodingStrategy.html) and [DatabaseColumnEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.23/Enums/DatabaseColumnEncodingStrategy.html) to learn about all available strategies.
3144
+
See [DatabaseColumnDecodingStrategy](https://groue.github.io/GRDB.swift/docs/5.24/Enums/DatabaseColumnDecodingStrategy.html) and [DatabaseColumnEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.24/Enums/DatabaseColumnEncodingStrategy.html) to learn about all available strategies.
3145
3145
3146
3146
3147
3147
### Date and UUID Coding Strategies
@@ -3163,7 +3163,7 @@ protocol EncodableRecord {
3163
3163
}
3164
3164
```
3165
3165
3166
-
See [DatabaseDateDecodingStrategy](https://groue.github.io/GRDB.swift/docs/5.23/Enums/DatabaseDateDecodingStrategy.html), [DatabaseDateEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.23/Enums/DatabaseDateEncodingStrategy.html), and [DatabaseUUIDEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.23/Enums/DatabaseUUIDEncodingStrategy.html) to learn about all available strategies.
3166
+
See [DatabaseDateDecodingStrategy](https://groue.github.io/GRDB.swift/docs/5.24/Enums/DatabaseDateDecodingStrategy.html), [DatabaseDateEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.24/Enums/DatabaseDateEncodingStrategy.html), and [DatabaseUUIDEncodingStrategy](https://groue.github.io/GRDB.swift/docs/5.24/Enums/DatabaseUUIDEncodingStrategy.html) to learn about all available strategies.
3167
3167
3168
3168
There is no customization of uuid decoding, because UUID can already decode all its encoded variants (16-bytes blobs and uuid strings, both uppercase and lowercase).
3169
3169
@@ -4688,7 +4688,7 @@ Player // SELECT * FROM player
4688
4688
```
4689
4689
4690
4690
4691
-
Raw SQL snippets are also accepted, with eventual [arguments](http://groue.github.io/GRDB.swift/docs/5.23/Structs/StatementArguments.html):
4691
+
Raw SQL snippets are also accepted, with eventual [arguments](http://groue.github.io/GRDB.swift/docs/5.24/Structs/StatementArguments.html):
4692
4692
4693
4693
```swift
4694
4694
// SELECT DATE(creationDate), COUNT(*) FROM player WHERE name = 'Arthur' GROUP BY date(creationDate)
- The `adapted(_:)` method eases the consumption of complex rows with [row adapters](#row-adapters). See [Joined Queries Support](#joined-queries-support) for some sample code that uses this method.
5596
5596
5597
-
- [AnyFetchRequest](http://groue.github.io/GRDB.swift/docs/5.23/Structs/AnyFetchRequest.html): a type-erased request.
5597
+
- [AnyFetchRequest](http://groue.github.io/GRDB.swift/docs/5.24/Structs/AnyFetchRequest.html): a type-erased request.
For example, if you observe the region of `Player.select(max(Column("score")))`, then you'll get be notified of all changes performed on the `score` column of the `player` table (updates, insertions and deletions), even if they do not modify the value of the maximum score. However, you will not get any notification for changes performed on other database tables, or updates to other columns of the player table.
6898
6898
6899
-
For more details, see the [reference](https://groue.github.io/GRDB.swift/docs/5.23/Structs/DatabaseRegion.html).
6899
+
For more details, see the [reference](https://groue.github.io/GRDB.swift/docs/5.24/Structs/DatabaseRegion.html).
6900
6900
6901
6901
6902
6902
#### The DatabaseRegionConvertible Protocol
@@ -8236,7 +8236,7 @@ When this is the case, there are two possible explanations:
8236
8236
try db.execute(sql: "UPDATE player SET name = ?", arguments: [name])
8237
8237
```
8238
8238
8239
-
For more information, see [Double-quoted String Literals Are Accepted](https://sqlite.org/quirks.html#dblquote), and [Configuration.acceptsDoubleQuotedStringLiterals](http://groue.github.io/GRDB.swift/docs/5.23/Structs/Configuration.html#/s:4GRDB13ConfigurationV33acceptsDoubleQuotedStringLiteralsSbvp).
8239
+
For more information, see [Double-quoted String Literals Are Accepted](https://sqlite.org/quirks.html#dblquote), and [Configuration.acceptsDoubleQuotedStringLiterals](http://groue.github.io/GRDB.swift/docs/5.24/Structs/Configuration.html#/s:4GRDB13ConfigurationV33acceptsDoubleQuotedStringLiteralsSbvp).
8240
8240
8241
8241
8242
8242
@@ -8377,7 +8377,7 @@ This chapter has [moved](Documentation/Concurrency.md#database-snapshots).
8377
8377
8378
8378
#### DatabaseWriter and DatabaseReader Protocols
8379
8379
8380
-
This chapter was removed. See the references of [DatabaseReader](http://groue.github.io/GRDB.swift/docs/5.23/Protocols/DatabaseReader.html) and [DatabaseWriter](http://groue.github.io/GRDB.swift/docs/5.23/Protocols/DatabaseWriter.html).
8380
+
This chapter was removed. See the references of [DatabaseReader](http://groue.github.io/GRDB.swift/docs/5.24/Protocols/DatabaseReader.html) and [DatabaseWriter](http://groue.github.io/GRDB.swift/docs/5.24/Protocols/DatabaseWriter.html).
8381
8381
8382
8382
#### Asynchronous APIs
8383
8383
@@ -8430,7 +8430,7 @@ This chapter was renamed to [Embedding SQL in Query Interface Requests].
8430
8430
[Sharing a Database]: Documentation/SharingADatabase.md
0 commit comments