     /// - parameter index: A column index.
     /// - returns: A *Value*.
     public func value<Value: DatabaseValueConvertible>(atIndex index: Int) -> Value {
+        guard index >= 0 && index < count else {
+            fatalError("Row index out of range")
+        }
         return impl
             .databaseValue(atIndex: index)
             .value()

    /// - parameter index: A column index.
    /// - returns: An Int64, Double, String, NSData or nil.
    public func value(atIndex index: Int) -> DatabaseValueConvertible? {
        return impl
            .databaseValue(atIndex: index)
            .value()

    /// - parameter index: A column index.
    /// - returns: An optional *Value*.
    public func value<Value: DatabaseValueConvertible>(atIndex index: Int) -> Value? {
        guard index >= 0 && index < count else {
            fatalError("Row index out of range")
        }
        return impl
            .databaseValue(atIndex: index)
            .value()
