From 5f84822784446590273adaf8a88b8d544a34e1ba Mon Sep 17 00:00:00 2001 From: devgor88 Date: Thu, 5 Dec 2024 10:59:01 +0300 Subject: [PATCH 01/13] fix: Add support for creating sequence in MariaDB --- exposed-core/api/exposed-core.api | 8 ++++++++ .../main/kotlin/org/jetbrains/exposed/sql/Database.kt | 10 ++++++++++ .../sql/statements/api/ExposedDatabaseMetadata.kt | 6 ++++++ .../jetbrains/exposed/sql/vendors/MariaDBDialect.kt | 9 ++++++++- exposed-jdbc/api/exposed-jdbc.api | 2 ++ .../sql/statements/jdbc/JdbcDatabaseMetadataImpl.kt | 2 ++ 6 files changed, 36 insertions(+), 1 deletion(-) diff --git a/exposed-core/api/exposed-core.api b/exposed-core/api/exposed-core.api index fa6f0174e8..4c0ff210cd 100644 --- a/exposed-core/api/exposed-core.api +++ b/exposed-core/api/exposed-core.api @@ -662,6 +662,8 @@ public final class org/jetbrains/exposed/sql/Database { public final fun getDefaultFetchSize ()Ljava/lang/Integer; public final fun getDialect ()Lorg/jetbrains/exposed/sql/vendors/DatabaseDialect; public final fun getIdentifierManager ()Lorg/jetbrains/exposed/sql/statements/api/IdentifierManagerApi; + public final fun getMajorVersion ()I + public final fun getMinorVersion ()I public final fun getSupportsAlterTableWithAddColumn ()Z public final fun getSupportsAlterTableWithDropColumn ()Z public final fun getSupportsMultipleResultSets ()Z @@ -669,6 +671,7 @@ public final class org/jetbrains/exposed/sql/Database { public final fun getUseNestedTransactions ()Z public final fun getVendor ()Ljava/lang/String; public final fun getVersion ()Ljava/math/BigDecimal; + public final fun isVersionCovers (II)Z public final fun isVersionCovers (Ljava/math/BigDecimal;)Z public final fun setUseNestedTransactions (Z)V public fun toString ()Ljava/lang/String; @@ -3562,6 +3565,8 @@ public abstract class org/jetbrains/exposed/sql/statements/api/ExposedDatabaseMe public abstract fun getDatabaseProductVersion ()Ljava/lang/String; public abstract fun getDefaultIsolationLevel ()I public abstract fun getIdentifierManager ()Lorg/jetbrains/exposed/sql/statements/api/IdentifierManagerApi; + public abstract fun getMajorVersion ()I + public abstract fun getMinorVersion ()I public abstract fun getSchemaNames ()Ljava/util/List; public abstract fun getSupportsAlterTableWithAddColumn ()Z public abstract fun getSupportsAlterTableWithDropColumn ()Z @@ -4142,10 +4147,13 @@ public final class org/jetbrains/exposed/sql/vendors/KeywordsKt { public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect : org/jetbrains/exposed/sql/vendors/MysqlDialect { public static final field Companion Lorg/jetbrains/exposed/sql/vendors/MariaDBDialect$Companion; + public static final field SEQUENCE_MIN_MAJOR_VERSION I + public static final field SEQUENCE_MIN_MINOR_VERSION I public fun ()V public fun createIndex (Lorg/jetbrains/exposed/sql/Index;)Ljava/lang/String; public fun getFunctionProvider ()Lorg/jetbrains/exposed/sql/vendors/FunctionProvider; public fun getName ()Ljava/lang/String; + public fun getSupportsCreateSequence ()Z public fun getSupportsOnlyIdentifiersInGeneratedKeys ()Z public fun getSupportsSetDefaultReferenceOption ()Z } diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Database.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Database.kt index 20e3400f03..022f6c600c 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Database.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Database.kt @@ -64,6 +64,16 @@ class Database private constructor( /** Whether the version number of the database is equal to or greater than the provided [version]. */ fun isVersionCovers(version: BigDecimal) = this.version >= version + /** The major version number of the database as a [Int]. */ + val majorVersion by lazy { metadata { majorVersion } } + + /** The minor version number of the database as a [Int]. */ + val minorVersion by lazy { metadata { minorVersion } } + + /** Whether the version number of the database is equal to or greater than the provided [majorVersion] and [minorVersion]. */ + fun isVersionCovers(majorVersion: Int, minorVersion: Int) = + this.majorVersion >= majorVersion && this.minorVersion >= minorVersion + /** Whether the database supports ALTER TABLE with an add column clause. */ val supportsAlterTableWithAddColumn by lazy( LazyThreadSafetyMode.NONE diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/api/ExposedDatabaseMetadata.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/api/ExposedDatabaseMetadata.kt index 78271a0e70..2217c7107a 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/api/ExposedDatabaseMetadata.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/api/ExposedDatabaseMetadata.kt @@ -18,6 +18,12 @@ abstract class ExposedDatabaseMetadata(val database: String) { /** The version number of the database as a `BigDecimal`. */ abstract val version: BigDecimal + /** The major version number of the database. */ + abstract val majorVersion: Int + + /** The minor version number of the database. */ + abstract val minorVersion: Int + /** The name of the database based on the name of the underlying JDBC driver. */ abstract val databaseDialectName: String diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index 4299efb852..e3ff4915dc 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -1,6 +1,7 @@ package org.jetbrains.exposed.sql.vendors import org.jetbrains.exposed.sql.* +import org.jetbrains.exposed.sql.transactions.TransactionManager internal object MariaDBFunctionProvider : MysqlFunctionProvider() { override fun nextVal(seq: Sequence, builder: QueryBuilder) = builder { @@ -58,6 +59,9 @@ class MariaDBDialect : MysqlDialect() { override val functionProvider: FunctionProvider = MariaDBFunctionProvider override val supportsOnlyIdentifiersInGeneratedKeys: Boolean = true override val supportsSetDefaultReferenceOption: Boolean = false + override val supportsCreateSequence: Boolean by lazy { + TransactionManager.current().db.isVersionCovers(SEQUENCE_MIN_MAJOR_VERSION, SEQUENCE_MIN_MINOR_VERSION) + } override fun createIndex(index: Index): String { if (index.functions != null) { @@ -69,5 +73,8 @@ class MariaDBDialect : MysqlDialect() { return super.createIndex(index) } - companion object : DialectNameProvider("MariaDB") + companion object : DialectNameProvider("MariaDB") { + const val SEQUENCE_MIN_MAJOR_VERSION = 10 + const val SEQUENCE_MIN_MINOR_VERSION = 3 + } } diff --git a/exposed-jdbc/api/exposed-jdbc.api b/exposed-jdbc/api/exposed-jdbc.api index 5ee212d776..7e77bb5495 100644 --- a/exposed-jdbc/api/exposed-jdbc.api +++ b/exposed-jdbc/api/exposed-jdbc.api @@ -42,7 +42,9 @@ public final class org/jetbrains/exposed/sql/statements/jdbc/JdbcDatabaseMetadat public fun getDatabaseProductVersion ()Ljava/lang/String; public fun getDefaultIsolationLevel ()I public fun getIdentifierManager ()Lorg/jetbrains/exposed/sql/statements/api/IdentifierManagerApi; + public fun getMajorVersion ()I public final fun getMetadata ()Ljava/sql/DatabaseMetaData; + public fun getMinorVersion ()I public fun getSchemaNames ()Ljava/util/List; public fun getSupportsAlterTableWithAddColumn ()Z public fun getSupportsAlterTableWithDropColumn ()Z diff --git a/exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/sql/statements/jdbc/JdbcDatabaseMetadataImpl.kt b/exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/sql/statements/jdbc/JdbcDatabaseMetadataImpl.kt index e8d8a7d34b..38cc37baea 100644 --- a/exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/sql/statements/jdbc/JdbcDatabaseMetadataImpl.kt +++ b/exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/sql/statements/jdbc/JdbcDatabaseMetadataImpl.kt @@ -17,6 +17,8 @@ import java.util.concurrent.ConcurrentHashMap class JdbcDatabaseMetadataImpl(database: String, val metadata: DatabaseMetaData) : ExposedDatabaseMetadata(database) { override val url: String by lazyMetadata { url } override val version: BigDecimal by lazyMetadata { BigDecimal("$databaseMajorVersion.$databaseMinorVersion") } + override val majorVersion: Int by lazyMetadata { databaseMajorVersion } + override val minorVersion: Int by lazyMetadata { databaseMinorVersion } override val databaseDialectName: String by lazyMetadata { when (driverName) { From e6bb1df4f846b9c72c3a3eefb32d53c12e2f664d Mon Sep 17 00:00:00 2001 From: devgor88 Date: Fri, 6 Dec 2024 16:25:46 +0300 Subject: [PATCH 02/13] test: EXPOSED-662 add new create table test --- .../sql/tests/shared/ddl/CreateTableTests.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt index 80f1d5c9b0..5fa1cc54af 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt @@ -666,4 +666,17 @@ class CreateTableTests : DatabaseTestsBase() { } } } + + @Test + fun `two consequence transactions`() { + val testTable = object : IntIdTable("consequenceTable") { + val int = integer("intColumn") + } + withDb { + SchemaUtils.listTables() + } + withDb { + testTable.exists() + } + } } From 1606c652dade081317ff042f9196cca98dbab241 Mon Sep 17 00:00:00 2001 From: devgor88 Date: Fri, 6 Dec 2024 22:16:30 +0300 Subject: [PATCH 03/13] fix: add mariadb cases to DatabaseMigrationTests --- .../jetbrains/exposed/sql/vendors/MariaDBDialect.kt | 10 ++++++++++ .../exposed/sql/tests/shared/TransactionExecTests.kt | 1 + .../sql/tests/shared/ddl/DatabaseMigrationTests.kt | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index e3ff4915dc..c55f451d77 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -73,6 +73,16 @@ class MariaDBDialect : MysqlDialect() { return super.createIndex(index) } + override fun sequences(): List { + val sequences = mutableListOf() + TransactionManager.current().exec("SELECT SEQUENCE_NAME FROM INFORMATION_SCHEMA.SEQUENCES") { rs -> + while (rs.next()) { + sequences.add(rs.getString("SEQUENCE_NAME")) + } + } + return sequences + } + companion object : DialectNameProvider("MariaDB") { const val SEQUENCE_MIN_MAJOR_VERSION = 10 const val SEQUENCE_MIN_MINOR_VERSION = 3 diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/TransactionExecTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/TransactionExecTests.kt index c5f65b9141..dda528a679 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/TransactionExecTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/TransactionExecTests.kt @@ -96,6 +96,7 @@ class TransactionExecTests : DatabaseTestsBase() { TestDB.SQLSERVER -> "SELECT current_value AS $columnAlias FROM sys.sequences" TestDB.ORACLE -> "SELECT ${ExecTable.id.autoIncColumnType?.autoincSeq}.CURRVAL AS $columnAlias FROM DUAL" TestDB.POSTGRESQL -> "SELECT lastval() AS $columnAlias" + TestDB.MARIADB -> "SELECT LASTVAL(${ExecTable.id.autoIncColumnType?.autoincSeq}) AS $columnAlias" else -> "SELECT LAST_INSERT_ID() AS $columnAlias" } diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt index a0fd642449..b8fac58c78 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt @@ -521,6 +521,11 @@ class DatabaseMigrationTests : DatabaseTestsBase() { assertEquals(1, statements.size) assertEquals("ALTER TABLE TEST_TABLE ALTER COLUMN ID BIGINT AUTO_INCREMENT NOT NULL", statements[0]) } + TestDB.MARIADB -> { + assertEquals(2, statements.size) + assertEquals("ALTER TABLE test_table MODIFY COLUMN id BIGINT AUTO_INCREMENT NOT NULL", statements[0]) + assertEquals(expectedDropSequenceStatement(sequenceName), statements[1]) + } else -> { assertEquals(2, statements.size) assertTrue(statements[0].startsWith("ALTER TABLE TEST_TABLE ALTER COLUMN ID", ignoreCase = true)) @@ -622,6 +627,11 @@ class DatabaseMigrationTests : DatabaseTestsBase() { assertEquals(1, statements.size) assertEquals("ALTER TABLE TEST_TABLE ALTER COLUMN ID BIGINT AUTO_INCREMENT NOT NULL", statements[0]) } + TestDB.MARIADB -> { + assertEquals(2, statements.size) + assertEquals("ALTER TABLE test_table MODIFY COLUMN id BIGINT AUTO_INCREMENT NOT NULL", statements[0]) + assertEquals(expectedDropSequenceStatement(sequence.name), statements[1]) + } else -> { assertEquals(2, statements.size) assertTrue(statements[0].startsWith("ALTER TABLE TEST_TABLE ALTER COLUMN ID", ignoreCase = true)) From 1b52dfe0816b94c6c7c083af276c327ebab710ba Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sat, 7 Dec 2024 11:01:47 +0300 Subject: [PATCH 04/13] Revert "test: EXPOSED-662 add new create table test" This reverts commit e6bb1df4f846b9c72c3a3eefb32d53c12e2f664d. --- .../sql/tests/shared/ddl/CreateTableTests.kt | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt index 5fa1cc54af..80f1d5c9b0 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateTableTests.kt @@ -666,17 +666,4 @@ class CreateTableTests : DatabaseTestsBase() { } } } - - @Test - fun `two consequence transactions`() { - val testTable = object : IntIdTable("consequenceTable") { - val int = integer("intColumn") - } - withDb { - SchemaUtils.listTables() - } - withDb { - testTable.exists() - } - } } From 338926aa20b47d3ad9b8b29ca34c89e51fd5677a Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sat, 7 Dec 2024 11:37:52 +0300 Subject: [PATCH 05/13] fix: add mariadb one more case to DatabaseMigrationTests --- .../sql/tests/shared/ddl/DatabaseMigrationTests.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt index b8fac58c78..c47db4866d 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/DatabaseMigrationTests.kt @@ -432,6 +432,16 @@ class DatabaseMigrationTests : DatabaseTestsBase() { withDb(excludeSettings = listOf(TestDB.SQLITE)) { testDb -> if (currentDialectTest.supportsCreateSequence) { try { + // MariaDB does not allow to create auto column without defining it as a key + val tableWithAutoIncrement = if (testDb == TestDB.MARIADB) { + object : IdTable("test_table") { + override val id: Column> = long("id").autoIncrement().entityId() + override val primaryKey = PrimaryKey(id) + } + } else { + tableWithAutoIncrement + } + SchemaUtils.create(tableWithAutoIncrement) assertEquals(0, MigrationUtils.statementsRequiredForDatabaseMigration(tableWithAutoIncrement, withLogs = false).size) From cf1c97e3798d8d222b839f296207abef9a42b0ce Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sun, 8 Dec 2024 13:42:26 +0300 Subject: [PATCH 06/13] fix: table's name must not be more than 64 characters in MariaDB --- .../jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt index cbdb559426..fb6b891ad0 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt @@ -228,7 +228,7 @@ class SequencesTests : DatabaseTestsBase() { @Test fun testExistingSequencesForAutoIncrementWithCustomSequence() { - val tableWithExplicitSequenceName = object : IdTable() { + val tableWithExplicitSequenceName = object : IdTable("tableWithExplicitCustomSequenceName") { override val id: Column> = long("id").autoIncrement(myseq).entityId() } @@ -251,7 +251,7 @@ class SequencesTests : DatabaseTestsBase() { @Test fun testExistingSequencesForAutoIncrementWithExplicitSequenceName() { val sequenceName = "id_seq" - val tableWithExplicitSequenceName = object : IdTable() { + val tableWithExplicitSequenceName = object : IdTable("tableWithExplicitSequenceName") { override val id: Column> = long("id").autoIncrement(sequenceName).entityId() } From 7a78a0394ac3ffed024bbe536a243c20701e0302 Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sun, 8 Dec 2024 14:08:14 +0300 Subject: [PATCH 07/13] fix: supportsSequenceAsGeneratedKeys is false --- .../kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index c55f451d77..51f596bcb7 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -63,6 +63,9 @@ class MariaDBDialect : MysqlDialect() { TransactionManager.current().db.isVersionCovers(SEQUENCE_MIN_MAJOR_VERSION, SEQUENCE_MIN_MINOR_VERSION) } + // actually MariaDb supports it but jdbc driver prepares statement without RETURNING clause + override val supportsSequenceAsGeneratedKeys: Boolean = false + override fun createIndex(index: Index): String { if (index.functions != null) { exposedLogger.warn( From d9be5f8dd2f12a1c3024520de62960b2f1b11121 Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sun, 8 Dec 2024 14:15:35 +0300 Subject: [PATCH 08/13] fix: sequences table implemented in 11.5 version --- .../org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index 51f596bcb7..b41a698177 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -87,7 +87,7 @@ class MariaDBDialect : MysqlDialect() { } companion object : DialectNameProvider("MariaDB") { - const val SEQUENCE_MIN_MAJOR_VERSION = 10 - const val SEQUENCE_MIN_MINOR_VERSION = 3 + const val SEQUENCE_MIN_MAJOR_VERSION = 11 + const val SEQUENCE_MIN_MINOR_VERSION = 5 } } From 4f9bc1b93552cc385612aa2c304be395602e608b Mon Sep 17 00:00:00 2001 From: devgor88 Date: Sun, 8 Dec 2024 14:15:51 +0300 Subject: [PATCH 09/13] fix: api update --- exposed-core/api/exposed-core.api | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exposed-core/api/exposed-core.api b/exposed-core/api/exposed-core.api index 4c0ff210cd..83b7f9d74a 100644 --- a/exposed-core/api/exposed-core.api +++ b/exposed-core/api/exposed-core.api @@ -4155,7 +4155,9 @@ public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect : org/jetbra public fun getName ()Ljava/lang/String; public fun getSupportsCreateSequence ()Z public fun getSupportsOnlyIdentifiersInGeneratedKeys ()Z + public fun getSupportsSequenceAsGeneratedKeys ()Z public fun getSupportsSetDefaultReferenceOption ()Z + public fun sequences ()Ljava/util/List; } public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect$Companion : org/jetbrains/exposed/sql/vendors/VendorDialect$DialectNameProvider { From 3a70be588222095785ec8b4baee202d92f44863b Mon Sep 17 00:00:00 2001 From: devgor88 Date: Wed, 18 Dec 2024 15:02:17 +0300 Subject: [PATCH 10/13] fix: change version from 11.5 to 10.3 --- .../exposed/sql/vendors/MariaDBDialect.kt | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index b41a698177..6f4eff7919 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -76,18 +76,8 @@ class MariaDBDialect : MysqlDialect() { return super.createIndex(index) } - override fun sequences(): List { - val sequences = mutableListOf() - TransactionManager.current().exec("SELECT SEQUENCE_NAME FROM INFORMATION_SCHEMA.SEQUENCES") { rs -> - while (rs.next()) { - sequences.add(rs.getString("SEQUENCE_NAME")) - } - } - return sequences - } - companion object : DialectNameProvider("MariaDB") { - const val SEQUENCE_MIN_MAJOR_VERSION = 11 - const val SEQUENCE_MIN_MINOR_VERSION = 5 + const val SEQUENCE_MIN_MAJOR_VERSION = 10 + const val SEQUENCE_MIN_MINOR_VERSION = 3 } } From fa76ce788cfa2e49d788b2eab96bd5a1e19bc688 Mon Sep 17 00:00:00 2001 From: devgor88 Date: Wed, 18 Dec 2024 15:10:25 +0300 Subject: [PATCH 11/13] fix: api fix --- exposed-core/api/exposed-core.api | 1 - 1 file changed, 1 deletion(-) diff --git a/exposed-core/api/exposed-core.api b/exposed-core/api/exposed-core.api index 83b7f9d74a..bd83728d1d 100644 --- a/exposed-core/api/exposed-core.api +++ b/exposed-core/api/exposed-core.api @@ -4157,7 +4157,6 @@ public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect : org/jetbra public fun getSupportsOnlyIdentifiersInGeneratedKeys ()Z public fun getSupportsSequenceAsGeneratedKeys ()Z public fun getSupportsSetDefaultReferenceOption ()Z - public fun sequences ()Ljava/util/List; } public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect$Companion : org/jetbrains/exposed/sql/vendors/VendorDialect$DialectNameProvider { From 30bf0090ec2894982577d83b347eb72baa6f6a3d Mon Sep 17 00:00:00 2001 From: devgor88 Date: Fri, 24 Jan 2025 18:35:03 +0300 Subject: [PATCH 12/13] Revert "fix: table's name must not be more than 64 characters in MariaDB" This reverts commit cf1c97e3798d8d222b839f296207abef9a42b0ce. --- .../jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt index fb6b891ad0..cbdb559426 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/SequencesTests.kt @@ -228,7 +228,7 @@ class SequencesTests : DatabaseTestsBase() { @Test fun testExistingSequencesForAutoIncrementWithCustomSequence() { - val tableWithExplicitSequenceName = object : IdTable("tableWithExplicitCustomSequenceName") { + val tableWithExplicitSequenceName = object : IdTable() { override val id: Column> = long("id").autoIncrement(myseq).entityId() } @@ -251,7 +251,7 @@ class SequencesTests : DatabaseTestsBase() { @Test fun testExistingSequencesForAutoIncrementWithExplicitSequenceName() { val sequenceName = "id_seq" - val tableWithExplicitSequenceName = object : IdTable("tableWithExplicitSequenceName") { + val tableWithExplicitSequenceName = object : IdTable() { override val id: Column> = long("id").autoIncrement(sequenceName).entityId() } From 398be6b9a7fa172ab3e752225f48ad4b0ff0474e Mon Sep 17 00:00:00 2001 From: devgor88 Date: Fri, 24 Jan 2025 18:47:00 +0300 Subject: [PATCH 13/13] fix: make constant private --- exposed-core/api/exposed-core.api | 2 -- .../org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/exposed-core/api/exposed-core.api b/exposed-core/api/exposed-core.api index bd83728d1d..c01dc3498e 100644 --- a/exposed-core/api/exposed-core.api +++ b/exposed-core/api/exposed-core.api @@ -4147,8 +4147,6 @@ public final class org/jetbrains/exposed/sql/vendors/KeywordsKt { public final class org/jetbrains/exposed/sql/vendors/MariaDBDialect : org/jetbrains/exposed/sql/vendors/MysqlDialect { public static final field Companion Lorg/jetbrains/exposed/sql/vendors/MariaDBDialect$Companion; - public static final field SEQUENCE_MIN_MAJOR_VERSION I - public static final field SEQUENCE_MIN_MINOR_VERSION I public fun ()V public fun createIndex (Lorg/jetbrains/exposed/sql/Index;)Ljava/lang/String; public fun getFunctionProvider ()Lorg/jetbrains/exposed/sql/vendors/FunctionProvider; diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt index 1916edbed2..86093dad04 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/vendors/MariaDBDialect.kt @@ -89,7 +89,7 @@ class MariaDBDialect : MysqlDialect() { } companion object : DialectNameProvider("MariaDB") { - const val SEQUENCE_MIN_MAJOR_VERSION = 10 - const val SEQUENCE_MIN_MINOR_VERSION = 3 + private const val SEQUENCE_MIN_MAJOR_VERSION = 10 + private const val SEQUENCE_MIN_MINOR_VERSION = 3 } }