diff --git a/GRDB/QueryInterface/Schema/TableDefinition.swift b/GRDB/QueryInterface/Schema/TableDefinition.swift index ee038ab250..f61d2faae4 100644 --- a/GRDB/QueryInterface/Schema/TableDefinition.swift +++ b/GRDB/QueryInterface/Schema/TableDefinition.swift @@ -687,7 +687,7 @@ public final class TableAlteration { return column } - #if GRDBCUSTOMSQLITE + #if GRDBCUSTOMSQLITE || GRDBCipher /// Renames a column in a table. /// /// try db.alter(table: "player") { t in @@ -699,9 +699,9 @@ public final class TableAlteration { /// - parameter name: the column name to rename. /// - parameter newName: the new name of the column. public func rename(column name: String, to newName: String) { - alterations.append(.rename(old: name, new: newName)) + _rename(column: name, to: newName) } - #elseif !os(OSX) + #else /// Renames a column in a table. /// /// try db.alter(table: "player") { t in @@ -714,9 +714,13 @@ public final class TableAlteration { /// - parameter newName: the new name of the column. @available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) public func rename(column name: String, to newName: String) { - alterations.append(.rename(old: name, new: newName)) + _rename(column: name, to: newName) } #endif + + private func _rename(column name: String, to newName: String) { + alterations.append(.rename(old: name, new: newName)) + } fileprivate func sql(_ db: Database) throws -> String { var statements: [String] = [] diff --git a/Tests/GRDBTests/TableDefinitionTests.swift b/Tests/GRDBTests/TableDefinitionTests.swift index 94202fad0f..69f2c1d72d 100644 --- a/Tests/GRDBTests/TableDefinitionTests.swift +++ b/Tests/GRDBTests/TableDefinitionTests.swift @@ -496,29 +496,15 @@ class TableDefinitionTests: GRDBTestCase { } } - #if GRDBCUSTOMSQLITE func testAlterTableRenameColumn() throws { - let dbQueue = try makeDatabaseQueue() - try dbQueue.inDatabase { db in - try db.create(table: "test") { t in - t.column("a", .text) - } - - sqlQueries.removeAll() - try db.alter(table: "test") { t in - t.rename(column: "a", to: "b") - t.add(column: "c") - t.rename(column: "c", to: "d") - } - - assertEqualSQL(sqlQueries[sqlQueries.count - 3], "ALTER TABLE \"test\" RENAME COLUMN \"a\" TO \"b\"") - assertEqualSQL(sqlQueries[sqlQueries.count - 2], "ALTER TABLE \"test\" ADD COLUMN \"c\"") - assertEqualSQL(sqlQueries[sqlQueries.count - 1], "ALTER TABLE \"test\" RENAME COLUMN \"c\" TO \"d\"") + guard sqlite3_libversion_number() >= 3025000 else { + return } - } - #elseif !os(OSX) - @available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) - func testAlterTableRenameColumn() throws { + #if !GRDBCUSTOMSQLITE && !GRDBCIPHER + guard #available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) else { + return + } + #endif let dbQueue = try makeDatabaseQueue() try dbQueue.inDatabase { db in try db.create(table: "test") { t in @@ -537,7 +523,6 @@ class TableDefinitionTests: GRDBTestCase { assertEqualSQL(sqlQueries[sqlQueries.count - 1], "ALTER TABLE \"test\" RENAME COLUMN \"c\" TO \"d\"") } } - #endif func testDropTable() throws { let dbQueue = try makeDatabaseQueue()