     }
     
     func singleValueContainer() throws -> SingleValueDecodingContainer {
-        fatalError("single value decoding from database row is not supported")
+        guard let key = codingPath.last else {
+            fatalError("single value decoding from database row is not supported")
+        }
+        guard let index = row.index(ofColumn: key.stringValue) else {
+            // Don't use DecodingError.keyNotFound:
+            // We need to specifically recognize missing columns in order to
+            // provide correct feedback.
+            throw MissingColumnError(column: key.stringValue)
+        }
+        // TODO: test
+        // See DatabaseValueConversionErrorTests.testDecodableFetchableRecord2
+        return ColumnDecoder<Record>(row: row, columnIndex: index, codingPath: codingPath)
     }
     
     struct KeyedContainer<Key: CodingKey>: KeyedDecodingContainerProtocol {

    func decode<T>(_ type: T.Type) throws -> T where T : Decodable {
        // Prefer DatabaseValueConvertible decoding over Decodable.
        // This allows decoding Date from String, or DatabaseValue from NULL.
        if let type = T.self as? (DatabaseValueConvertible & StatementColumnConvertible).Type {
            return type.fastDecode(from: row, atUncheckedIndex: columnIndex) as! T
        } else if let type = T.self as? DatabaseValueConvertible.Type {
            return type.decode(from: row, atUncheckedIndex: columnIndex) as! T

                // Prefer DatabaseValueConvertible decoding over Decodable.
                // This allows decoding Date from String, or DatabaseValue from NULL.
                if type == Date.self {
                    return Record.databaseDateDecodingStrategy.decode(fromRow: row, columnAtIndex: index) as! T
                } else if let type = T.self as? (DatabaseValueConvertible & StatementColumnConvertible).Type {
                    return type.fastDecode(from: row, atUncheckedIndex: index) as! T
                } else if let type = T.self as? DatabaseValueConvertible.Type {
