groue / GRDB.swift

A toolkit for SQLite databases, with a focus on application development
MIT License
6.61k stars 677 forks source link

Fix a bug in Decodable support #1533

Closed groue closed 2 months ago

groue commented 2 months ago

This pull request fixes a bug in the GRDB support for Decodable types.

The decodeNil(forKey:) method of the keyed container that feeds from a database row could wrongly return false, and prevent an app from successfully decoding a nil optional value from a NULL column. This is fixed.

This PR also introduces a partial support for nestedContainer(keyedBy:forKey:). This method used to crash with a "not implemented" fatal error. Now it can decode nested scopes added by a ScopeAdapter or requests that include a to-one association such as BelongsTo or HasOne. It is still impossible to trigger JSON decoding of a column by using this method.

Fixes #1531.