diff --git a/dbeam-core/pom.xml b/dbeam-core/pom.xml
index ea4980a4..b58e9371 100644
--- a/dbeam-core/pom.xml
+++ b/dbeam-core/pom.xml
@@ -56,6 +56,10 @@
com.mysql
mysql-connector-j
+
+ org.mariadb.jdbc
+ mariadb-java-client
+
com.google.cloud.sql
postgres-socket-factory
@@ -64,6 +68,10 @@
com.google.cloud.sql
mysql-socket-factory-connector-j-8
+
+ com.google.cloud.sql
+ mariadb-socket-factory
+
com.google.guava
diff --git a/dbeam-core/src/main/java/com/spotify/dbeam/args/JdbcConnectionUtil.java b/dbeam-core/src/main/java/com/spotify/dbeam/args/JdbcConnectionUtil.java
index 6f70b7bd..1c5b3b88 100644
--- a/dbeam-core/src/main/java/com/spotify/dbeam/args/JdbcConnectionUtil.java
+++ b/dbeam-core/src/main/java/com/spotify/dbeam/args/JdbcConnectionUtil.java
@@ -23,6 +23,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
+import java.util.stream.Collectors;
public class JdbcConnectionUtil {
@@ -30,14 +31,23 @@ public class JdbcConnectionUtil {
ImmutableMap.of(
"postgresql", "org.postgresql.Driver",
"mysql", "com.mysql.cj.jdbc.Driver",
- "h2", "org.h2.Driver");
+ "mariadb", "org.mariadb.jdbc.Driver",
+ "h2", "org.h2.Driver"
+ );
+
+ private static String driverPrefixes =
+ driverMapping.keySet().stream()
+ .map(k -> "jdbc:" + k)
+ .collect(Collectors.joining(", "));
public static String getDriverClass(final String url) throws ClassNotFoundException {
final String[] parts = url.split(":", 3);
Preconditions.checkArgument(
- parts.length > 1 && "jdbc".equals(parts[0]) && driverMapping.get(parts[1]) != null,
- "Invalid jdbc connection URL: %s. Expect jdbc:postgresql or jdbc:mysql as prefix.",
- url);
+ parts.length > 1 && "jdbc".equals(parts[0]) && driverMapping.containsKey(parts[1]),
+ "Invalid jdbc connection URL: %s. Expected one of %s as prefix.",
+ url,
+ driverPrefixes
+ );
return Class.forName(driverMapping.get(parts[1])).getCanonicalName();
}
}
diff --git a/e2e/ddl.sql b/e2e/ddl.sql
index 29d2f866..760eff4f 100644
--- a/e2e/ddl.sql
+++ b/e2e/ddl.sql
@@ -1,5 +1,5 @@
--- This file contatins psql views with complex types to validate and troubleshoot dbeam
+-- This file contains psql views with complex types to validate and troubleshoot dbeam
-- import with:
-- psql -f ddl.sql postgres
diff --git a/pom.xml b/pom.xml
index 5fec16c1..20976458 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,6 +135,7 @@
1.78.1
4.13.2
8.4.0
+ 3.5.1
42.7.4
1.18.0
@@ -365,6 +366,11 @@
mysql-connector-j
${mysql.version}
+
+ org.mariadb.jdbc
+ mariadb-java-client
+ ${mariadb.version}
+
com.google.cloud.sql
postgres-socket-factory
@@ -376,6 +382,11 @@
mysql-socket-factory-connector-j-8
${socket-factory.version}
+
+ com.google.cloud.sql
+ mariadb-socket-factory
+ ${socket-factory.version}
+
org.hamcrest
hamcrest