diff --git a/exposed-core/api/exposed-core.api b/exposed-core/api/exposed-core.api index 9e2d238532..2b77e8d631 100644 --- a/exposed-core/api/exposed-core.api +++ b/exposed-core/api/exposed-core.api @@ -4442,6 +4442,7 @@ public class org/jetbrains/exposed/v1/core/vendors/PostgreSQLDialect : org/jetbr public fun dropIndex (Ljava/lang/String;Ljava/lang/String;ZZ)Ljava/lang/String; public fun getName ()Ljava/lang/String; public fun getRequiresAutoCommitOnCreateDrop ()Z + public fun getSupportsColumnTypeChange ()Z public fun getSupportsOrderByNullsFirstLast ()Z public fun getSupportsSelectForUpdate ()Z public fun getSupportsSubqueryUnions ()Z diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/vendors/PostgreSQL.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/vendors/PostgreSQL.kt index 6303bba99f..c2377a85a3 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/vendors/PostgreSQL.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/vendors/PostgreSQL.kt @@ -380,6 +380,8 @@ open class PostgreSQLDialect(override val name: String = dialectName) : VendorDi override val supportsWindowFrameGroupsMode: Boolean = true + override val supportsColumnTypeChange: Boolean = true + @Deprecated( "The parameter was moved to JdbcExposedDatabaseMetadata/R2dbcExposedDatabaseMetadata classes", ReplaceWith("TransactionManager.current().db.supportsSelectForUpdate") diff --git a/exposed-migration-jdbc/src/test/kotlin/org/jetbrains/exposed/v1/migration/jdbc/DatabaseMigrationTests.kt b/exposed-migration-jdbc/src/test/kotlin/org/jetbrains/exposed/v1/migration/jdbc/DatabaseMigrationTests.kt index 262b6caf2c..728980a618 100644 --- a/exposed-migration-jdbc/src/test/kotlin/org/jetbrains/exposed/v1/migration/jdbc/DatabaseMigrationTests.kt +++ b/exposed-migration-jdbc/src/test/kotlin/org/jetbrains/exposed/v1/migration/jdbc/DatabaseMigrationTests.kt @@ -31,7 +31,7 @@ import org.jetbrains.exposed.v1.datetime.date as kotlinDatetimeDate import org.jetbrains.exposed.v1.javatime.date as javatimeDate class DatabaseMigrationTests : DatabaseTestsBase() { - private val columnTypeChangeUnsupportedDb = TestDB.ALL - TestDB.ALL_H2_V2 + private val columnTypeChangeUnsupportedDb = TestDB.ALL - TestDB.ALL_H2_V2 - TestDB.ALL_POSTGRES @OptIn(InternalApi::class) @Test @@ -464,4 +464,27 @@ class DatabaseMigrationTests : DatabaseTestsBase() { logCaptor.clearLogs() logCaptor.close() } + + @Test + fun testColumnTypeChangeOnlyGeneratesMigrationStatement() { + val originalTable = object : Table("tester") { + val data = varchar("data", 50) + } + + val modifiedTable = object : Table("tester") { + val data = text("data") + } + + withDb(excludeSettings = columnTypeChangeUnsupportedDb) { + try { + SchemaUtils.create(originalTable) + + val statements = MigrationUtils.statementsRequiredForDatabaseMigration(modifiedTable, withLogs = false) + assertEquals(1, statements.size) + assertTrue(statements.first().contains("ALTER", ignoreCase = true)) + } finally { + SchemaUtils.drop(originalTable) + } + } + } }