diff --git a/spring-modulith-events/spring-modulith-events-jdbc/pom.xml b/spring-modulith-events/spring-modulith-events-jdbc/pom.xml
index 0090cf0b..ab264c5c 100644
--- a/spring-modulith-events/spring-modulith-events-jdbc/pom.xml
+++ b/spring-modulith-events/spring-modulith-events-jdbc/pom.xml
@@ -104,6 +104,12 @@
test
+
+ org.testcontainers
+ mariadb
+ test
+
+
org.testcontainers
mssqlserver
@@ -140,6 +146,12 @@
test
+
+ org.mariadb.jdbc
+ mariadb-java-client
+ test
+
+
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/main/java/org/springframework/modulith/events/jdbc/DatabaseType.java b/spring-modulith-events/spring-modulith-events-jdbc/src/main/java/org/springframework/modulith/events/jdbc/DatabaseType.java
index 34367f00..7a0e8513 100644
--- a/spring-modulith-events/spring-modulith-events-jdbc/src/main/java/org/springframework/modulith/events/jdbc/DatabaseType.java
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/main/java/org/springframework/modulith/events/jdbc/DatabaseType.java
@@ -50,6 +50,24 @@ enum DatabaseType {
}
},
+ MARIADB("mariadb", "MariaDB") {
+
+ @Override
+ Object uuidToDatabase(UUID id) {
+ return id.toString();
+ }
+
+ @Override
+ UUID databaseToUUID(Object id) {
+ return UUID.fromString(id.toString());
+ }
+
+ @Override
+ boolean isSchemaSupported() {
+ return false;
+ }
+ },
+
POSTGRES("postgresql", "PostgreSQL"),
MSSQL("sqlserver", "Microsoft SQL Server") {
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/main/resources/schema-mariadb.sql b/spring-modulith-events/spring-modulith-events-jdbc/src/main/resources/schema-mariadb.sql
new file mode 100644
index 00000000..370dec71
--- /dev/null
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/main/resources/schema-mariadb.sql
@@ -0,0 +1,11 @@
+CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
+(
+ ID VARCHAR(36) NOT NULL,
+ LISTENER_ID VARCHAR(512) NOT NULL,
+ EVENT_TYPE VARCHAR(512) NOT NULL,
+ SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
+ PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
+ COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
+ PRIMARY KEY (ID),
+ INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
+);
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerIntegrationTests.java b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerIntegrationTests.java
index a241ed6c..86dd9d5f 100644
--- a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerIntegrationTests.java
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerIntegrationTests.java
@@ -123,6 +123,10 @@ class DatabaseSchemaInitializerIntegrationTests {
@ActiveProfiles("mysql")
class MySQL extends WithInitEnabled {}
+ @Nested
+ @ActiveProfiles("mariadb")
+ class MariaDB extends WithInitEnabled {}
+
@Nested
@ActiveProfiles("mssql")
class MSSQL extends WithInitEnabled {}
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerUnitTests.java b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerUnitTests.java
index b376e547..cb5b177a 100644
--- a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerUnitTests.java
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerUnitTests.java
@@ -47,6 +47,13 @@ class DatabaseSchemaInitializerUnitTests {
assertThatIllegalStateException().isThrownBy(() -> createInitializer(withSchema(schema), DatabaseType.MYSQL));
}
+ // GH-836
+ @ParameterizedTest
+ @ValueSource(strings = { "", "test" })
+ void rejectsExplicitSchemaNameForMariDB(String schema) {
+ assertThatIllegalStateException().isThrownBy(() -> createInitializer(withSchema(schema), DatabaseType.MARIADB));
+ }
+
// GH-804
@ParameterizedTest
@ValueSource(strings = { "", "test" })
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/JdbcEventPublicationRepositoryIntegrationTests.java b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/JdbcEventPublicationRepositoryIntegrationTests.java
index 73b40847..4e77f087 100644
--- a/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/JdbcEventPublicationRepositoryIntegrationTests.java
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/JdbcEventPublicationRepositoryIntegrationTests.java
@@ -469,6 +469,14 @@ class JdbcEventPublicationRepositoryIntegrationTests {
@WithMySql
class MysqlWithDeleteCompletion extends WithDeleteCompletion {}
+ // MariaDB
+
+ @WithMariaDB
+ class MariaDBWithNoDefinedSchemaName extends WithNoDefinedSchemaName {}
+
+ @WithMariaDB
+ class MariaDBWithDeleteCompletion extends WithDeleteCompletion {}
+
@Value
private static final class TestEvent {
String eventId;
@@ -493,6 +501,11 @@ class JdbcEventPublicationRepositoryIntegrationTests {
@Retention(RetentionPolicy.RUNTIME)
@interface WithMySql {}
+ @Nested
+ @ActiveProfiles("mariadb")
+ @Retention(RetentionPolicy.RUNTIME)
+ @interface WithMariaDB {}
+
@Nested
@ActiveProfiles("postgres")
@Retention(RetentionPolicy.RUNTIME)
diff --git a/spring-modulith-events/spring-modulith-events-jdbc/src/test/resources/application-mariadb.properties b/spring-modulith-events/spring-modulith-events-jdbc/src/test/resources/application-mariadb.properties
new file mode 100644
index 00000000..f15d301f
--- /dev/null
+++ b/spring-modulith-events/spring-modulith-events-jdbc/src/test/resources/application-mariadb.properties
@@ -0,0 +1,2 @@
+spring.datasource.url=jdbc:tc:mariadb:11.5.2:///events
+spring.datasource.driverClassName=org.testcontainers.jdbc.ContainerDatabaseDriver
diff --git a/src/docs/antora/modules/ROOT/pages/appendix.adoc b/src/docs/antora/modules/ROOT/pages/appendix.adoc
index eb175693..ea1708b4 100644
--- a/src/docs/antora/modules/ROOT/pages/appendix.adoc
+++ b/src/docs/antora/modules/ROOT/pages/appendix.adoc
@@ -203,6 +203,14 @@ include::{jdbc-schema-base}/schema-hsqldb.sql[]
include::{jdbc-schema-base}/schema-mysql.sql[]
----
+[[schemas.mariadb]]
+=== MariaDB
+
+[source, sql]
+----
+include::{jdbc-schema-base}/schema-mariadb.sql[]
+----
+
[[schemas.postgresql]]
=== PostgreSQL