         }
     }
     
-    func testFetchAllFromDatabase() {
-        assertNoError {
-            let dbQueue = try makeDatabaseQueue()
-            try dbQueue.inDatabase { db in
-                try db.execute("CREATE TABLE ints (int Int)")
-                try db.execute("INSERT INTO ints (int) VALUES (1)")
-                try db.execute("INSERT INTO ints (int) VALUES (2)")
-                
-                let array = FastWrappedInt.fetchAll(db, "SELECT int FROM ints ORDER BY int")
+    func testFetchFromSQLWithAdapter() {
+        assertNoError {
+            let dbQueue = try makeDatabaseQueue()
+            try dbQueue.inDatabase { db in
+                try db.execute("CREATE TABLE ints (int Int)")
+                try db.execute("INSERT INTO ints (int) VALUES (1)")
+                try db.execute("INSERT INTO ints (int) VALUES (2)")
+                
+                let sequence = FastWrappedInt.fetch(db, "SELECT int, -int FROM ints ORDER BY int", adapter: SuffixRowAdapter(fromIndex: 1))
+                
+                XCTAssertEqual(Array(sequence).map { $0.int }, [-1,-2])
+                // NICE TO HAVE: make it fast, and the following test pass:
+//                XCTAssertEqual(Array(sequence).map { $0.fast }, [true, true])
+            }
+        }
+    }
+    
+    func testFetchAllFromSQL() {
+        assertNoError {
+            let dbQueue = try makeDatabaseQueue()
+            try dbQueue.inDatabase { db in
+                try db.execute("CREATE TABLE ints (int Int)")
+                try db.execute("INSERT INTO ints (int) VALUES (1)")
+                try db.execute("INSERT INTO ints (int) VALUES (2)")
+                
+                let array = FastWrappedInt.fetchAll(db, "SELECT int, -int FROM ints ORDER BY int")
                 
                 XCTAssertEqual(array.map { $0.int }, [1,2])
                 XCTAssertEqual(array.map { $0.fast }, [true, true])

        }
    }
    
    func testFetchFromDatabase() {
        assertNoError {
            let dbQueue = try makeDatabaseQueue()
            try dbQueue.inDatabase { db in
                try db.execute("CREATE TABLE ints (int Int)")
                try db.execute("INSERT INTO ints (int) VALUES (1)")
                try db.execute("INSERT INTO ints (int) VALUES (2)")
                
                let sequence = FastWrappedInt.fetch(db, "SELECT int FROM ints ORDER BY int")
                
                XCTAssertEqual(Array(sequence).map { $0.int }, [1,2])
                XCTAssertEqual(Array(sequence).map { $0.fast }, [true, true])

                try db.execute("INSERT INTO ints (int) VALUES (1)")
                try db.execute("INSERT INTO ints (int) VALUES (2)")
                
                let statement = try db.selectStatement("SELECT int, -int FROM ints ORDER BY int")
                let array = FastWrappedInt.fetchAll(statement)
                
                XCTAssertEqual(array.map { $0.int }, [1,2])
