     }
     
     // Cache for columnInfos()
-    private var columnInfosCache: [String: [ColumnInfo]] = [:]
     private func columnInfos(tableName: String) -> [ColumnInfo] {
         if let columnInfos = columnInfosCache[tableName] {
             return columnInfos
         } else {
-            // This pragma is case-insensitive: PRAGMA table_info("PERSONS") and
-            // PRAGMA table_info("persons") yield the same results.
             let columnInfos = ColumnInfo.fetchAll(self, "PRAGMA table_info(\(tableName.quotedDatabaseIdentifier))")
             columnInfosCache[tableName] = columnInfos
             return columnInfos

        return try SelectStatement(database: self, sql: sql)
    }
    
    
    // =========================================================================
    // MARK: - Update Statements

    /// The database configuration
    public let configuration: Configuration
    
    /// The last error message
    var lastErrorMessage: String? { return String.fromCString(sqlite3_errmsg(sqliteConnection)) }
    
    private var columnInfosCache: [String: [ColumnInfo]] = [:]
    private var updateStatementCache: [String: UpdateStatement] = [:]
    private var selectStatementCache: [String: SelectStatement] = [:]
    
    /// Clears the database schema cache.
    ///
    /// You may need to clear the cache if you modify the database schema
    /// outside of a database migration performed by DatabaseMigrator.
    public func clearSchemaCache() {
        preconditionValidQueue()
        columnInfosCache = [:]
        updateStatementCache = [:]
        selectStatementCache = [:]
    }
    /// Returns whether a table exists.
    ///
    /// - parameter tableName: A table name.
