Skip to content

Commit 0f83e41

Browse files
authored
Allow version parsing for mariadb 11 and above (#1344)
Signed-off-by: Lukas Prettenthaler <[email protected]>
1 parent 9073da6 commit 0f83e41

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLDatabaseMetadata.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ public static MySQLDatabaseMetadata parse(String serverVersion) {
3535
boolean isMariaDb = serverVersion.contains("MariaDB");
3636
String productName = isMariaDb ? "MariaDB" : "MySQL";
3737

38+
String fullServerVersion = serverVersion;
39+
if (isMariaDb) {
40+
// MariaDB server version < 11.x.x is by default prefixed by "5.5.5-"
41+
serverVersion = serverVersion.replace("5.5.5-", "");
42+
}
3843
String versionToken = null;
39-
int versionTokenStartIdx = isMariaDb ? 6 : 0; // MariaDB server version is by default prefixed by "5.5.5-"
44+
int versionTokenStartIdx = 0;
4045
int versionTokenEndIdx = versionTokenStartIdx;
4146
while (versionTokenEndIdx < len) {
4247
char c = serverVersion.charAt(versionTokenEndIdx);
@@ -62,7 +67,7 @@ public static MySQLDatabaseMetadata parse(String serverVersion) {
6267
LOGGER.warn("Incorrect parsing server version tokens", ex);
6368
}
6469

65-
return new MySQLDatabaseMetadata(serverVersion, productName, majorVersion, minorVersion, microVersion);
70+
return new MySQLDatabaseMetadata(fullServerVersion, productName, majorVersion, minorVersion, microVersion);
6671
}
6772

6873
@Override

vertx-mysql-client/src/test/java/io/vertx/mysqlclient/MySQLServerVersionParserTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ public void testMariaDB_V10_1() {
5858
Assert.assertEquals(45, actual.microVersion());
5959
}
6060

61+
@Test
62+
public void testMariaDB_V11_0_2() {
63+
actual = MySQLDatabaseMetadata.parse("11.0.2-MariaDB-1:11.0.2+maria~ubu2204");
64+
Assert.assertEquals("11.0.2-MariaDB-1:11.0.2+maria~ubu2204", actual.fullVersion());
65+
Assert.assertEquals("MariaDB", actual.productName());
66+
Assert.assertEquals(11, actual.majorVersion());
67+
Assert.assertEquals(0, actual.minorVersion());
68+
Assert.assertEquals(2, actual.microVersion());
69+
}
70+
6171
@Test
6272
public void testPercona_V8_0() {
6373
actual = MySQLDatabaseMetadata.parse("8.0.19-10");

0 commit comments

Comments
 (0)