diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java index e4f161bca..d03a66f17 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java @@ -176,17 +176,24 @@ protected void assertDdl(List schemaChangesDdls) { @NotNull private static String getDdlString(MySqlDatabaseVersionResolver databaseVersionResolver) { - - return databaseVersionResolver.getVersion().getMajor() < MYSQL8 ? "CREATE TABLE `b` (\n" + - " `pk` int(11) NOT NULL AUTO_INCREMENT,\n" + - " `aa` int(11) DEFAULT NULL,\n" + - " PRIMARY KEY (`pk`)\n" + - ") ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1" - - : "CREATE TABLE `b` (\n" + - " `pk` int NOT NULL AUTO_INCREMENT,\n" + - " `aa` int DEFAULT NULL,\n" + - " PRIMARY KEY (`pk`)\n" + - ") ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"; + boolean isMariaDB = databaseVersionResolver.isMariaDb(); + if (isMariaDB || databaseVersionResolver.getVersion().getMajor() < MYSQL8) { + final StringBuilder sb = new StringBuilder("CREATE TABLE `b` (\n"); + sb.append(" `pk` int(11) NOT NULL AUTO_INCREMENT,\n"); + sb.append(" `aa` int(11) DEFAULT NULL,\n"); + sb.append(" PRIMARY KEY (`pk`)\n"); + sb.append(") ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1"); + if (isMariaDB) { + sb.append(" COLLATE=latin1_swedish_ci"); + } + return sb.toString(); + } + else { + return "CREATE TABLE `b` (\n" + + " `pk` int NOT NULL AUTO_INCREMENT,\n" + + " `aa` int DEFAULT NULL,\n" + + " PRIMARY KEY (`pk`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"; + } } } diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/IncrementalSnapshotIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/IncrementalSnapshotIT.java index a7257077a..7c42bbf4d 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/IncrementalSnapshotIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/IncrementalSnapshotIT.java @@ -253,6 +253,10 @@ public void updates() throws Exception { if (snapshot.equals("false")) { assertNotNull(query); } + else if (MySqlTestConnection.isMariaDb()) { + assertNotNull(query); + assertEquals("incremental", snapshot); + } else { assertNull(query); assertEquals("incremental", snapshot); diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlConnectorIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlConnectorIT.java index 881dc9e44..c0a7113ec 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlConnectorIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlConnectorIT.java @@ -669,7 +669,7 @@ private void shouldConsumeAllEventsFromDatabaseUsingSnapshotByField(Field dbIncl assertThat(persistedOffsetSource.binlogFilename()).isEqualTo(positionBeforeInserts.binlogFilename()); assertThat(persistedOffsetSource.binlogFilename()).isEqualTo(positionAfterInserts.binlogFilename()); final MySqlVersion mysqlVersion = MySqlTestConnection.forTestDatabase(DATABASE.getDatabaseName()).getMySqlVersion(); - if (mysqlVersion == MySqlVersion.MYSQL_5_5 || mysqlVersion == MySqlVersion.MYSQL_5_6) { + if (mysqlVersion == MySqlVersion.MYSQL_5_5 || mysqlVersion == MySqlVersion.MYSQL_5_6 || mysqlVersion == MySqlVersion.MARIADB_11) { // todo: for some reason on MySQL 5.6, the binlog position does not behave like it does on MySQL 5.7 - why? assertThat(persistedOffsetSource.binlogPosition()).isGreaterThanOrEqualTo(positionBeforeInserts.binlogPosition()); } diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlGeometryIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlGeometryIT.java index eb957a144..d500930e9 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlGeometryIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlGeometryIT.java @@ -46,7 +46,7 @@ public class MySqlGeometryIT extends AbstractConnectorTest { @Before public void beforeEach() { stopConnector(); - databaseDifferences = databaseGeoDifferences(MySqlTestConnection.isMySQL5()); + databaseDifferences = databaseGeoDifferences(MySqlTestConnection.isMySQL5() || MySqlTestConnection.isMariaDb()); DATABASE = new UniqueDatabase("geometryit", databaseDifferences.geometryDatabaseName()) .withDbHistoryPath(SCHEMA_HISTORY_PATH); diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MysqlDefaultGeneratedValueIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MysqlDefaultGeneratedValueIT.java index 6c7873d01..f587b798a 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MysqlDefaultGeneratedValueIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MysqlDefaultGeneratedValueIT.java @@ -5,6 +5,7 @@ */ package io.debezium.connector.mysql; +import static io.debezium.junit.EqualityCheck.GREATER_THAN_OR_EQUAL; import static io.debezium.junit.EqualityCheck.LESS_THAN; import static org.assertj.core.api.Assertions.assertThat; @@ -27,6 +28,7 @@ * @author Chris Cranford */ @SkipWhenDatabaseVersion(check = LESS_THAN, major = 5, minor = 7, reason = "Generated values were not added until MySQL 5.7") +@SkipWhenDatabaseVersion(check = GREATER_THAN_OR_EQUAL, major = 11, reason = "MariaDB does not allow you to specify AS and NOT NULL") public class MysqlDefaultGeneratedValueIT extends AbstractConnectorTest { // 4 meta events (set character_set etc.) and then 15 tables with 3 events each (drop DDL, create DDL, insert) diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/junit/MySqlDatabaseVersionResolver.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/junit/MySqlDatabaseVersionResolver.java index c8a161ecd..001f2a200 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/junit/MySqlDatabaseVersionResolver.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/junit/MySqlDatabaseVersionResolver.java @@ -15,6 +15,11 @@ */ public class MySqlDatabaseVersionResolver implements DatabaseVersionResolver { + public boolean isMariaDb() { + return MySqlTestConnection.forTestDatabase("mysql") + .getMySqlVersion() == MySqlTestConnection.MySqlVersion.MARIADB_11; + } + public DatabaseVersion getVersion() { final String versionString = MySqlTestConnection.forTestDatabase("mysql").getMySqlVersionString();