         }
     }
     
-    /// Updates the fetch request, and notifies the delegate of changes in the
-    /// fetched records if delegate is not nil, and performFetch() has been
-    /// called.
+    /// Updates the fetch request, and eventually notifies the tracking
+    /// callbacks if performFetch() has been called.
     public func setRequest(sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws {
-        try setRequest(SQLRequest(sql, arguments: arguments, adapter: adapter))
+        try setRequest(SQLRequest(sql, arguments: arguments, adapter: adapter).bound(to: Record.self))
     }
     
     /// Registers changes notification callbacks

    /// from the [Query Interface](https://github.com/groue/GRDB.swift#the-query-interface).
    ///
    ///     let request = Wine.order(Column("name"))
    ///     let controller = FetchedRecordsController<Wine>(
    ///         dbQueue,
    ///         request: request,
    ///         isSameRecord: { (wine1, wine2) in wine1.id == wine2.id })

    /// - parameters:
    ///     - databaseWriter: A DatabaseWriter (DatabaseQueue, or DatabasePool)
    ///     - request: A fetch request.
    ///     - queue: A serial dispatch queue (defaults to the main queue)
    ///
    ///         The fetched records controller tracking callbacks will be
    ///         notified of changes in this queue. The controller itself must be
    ///         used from this queue.
    ///
    ///     - isSameRecord: Optional function that compares two records.
    ///
