import XCTest import GRDB #if GRDB_COMPARE import SQLite #endif private let insertedRowCount = 50_000 // Here we insert rows, referencing statement arguments by name. class InsertNamedValuesTests: XCTestCase { func testGRDB() { let databaseFileName = "GRDBPerformanceTests-\(ProcessInfo.processInfo.globallyUniqueString).sqlite" let databasePath = (NSTemporaryDirectory() as NSString).appendingPathComponent(databaseFileName) defer { let dbQueue = try! DatabaseQueue(path: databasePath) try! dbQueue.inDatabase { db in XCTAssertEqual(try Int.fetchOne(db, sql: "SELECT COUNT(*) FROM item")!, insertedRowCount) XCTAssertEqual(try Int.fetchOne(db, sql: "SELECT MIN(i0) FROM item")!, 0) XCTAssertEqual(try Int.fetchOne(db, sql: "SELECT MAX(i9) FROM item")!, insertedRowCount - 1) } try! FileManager.default.removeItem(atPath: databasePath) } measure { _ = try? FileManager.default.removeItem(atPath: databasePath) let dbQueue = try! DatabaseQueue(path: databasePath) try! dbQueue.inDatabase { db in try db.execute(sql: "CREATE TABLE item (i0 INT, i1 INT, i2 INT, i3 INT, i4 INT, i5 INT, i6 INT, i7 INT, i8 INT, i9 INT)") } try! dbQueue.inTransaction { db in let statement = try! db.makeStatement(sql: "INSERT INTO item (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9) VALUES (:i0, :i1, :i2, :i3, :i4, :i5, :i6, :i7, :i8, :i9)") for i in 0.. Void in db.shouldCacheStatements = true for i in 0..