         atIndex index: Int)
     throws -> Value?
     {
-        try Value.fastDecodeIfPresent(fromRow: self, atUncheckedIndex: _checkedIndex(index))
+        _checkIndex(index)
+        return try Value.fastDecodeIfPresent(fromRow: self, atUncheckedIndex: index)
     }
     
     /// Returns the value at given index, converted to the requested type.

        atIndex index: Int)
    throws -> Value
    {
        try Value.fastDecode(fromRow: self, atUncheckedIndex: _checkedIndex(index))
    }
    
    /// Returns the value at given column, converted to the requested type.

    /// Indexes span from 0 for the leftmost column to (row.count - 1) for the
    /// righmost column.
    public subscript(_ index: Int) -> DatabaseValueConvertible? {
        _checkIndex(index)
        return impl.databaseValue(atUncheckedIndex: index).storage.value
    }
    
    /// Returns the value at given index, converted to the requested type.
