Skip to content

Commit 67a35e3

Browse files
committed
Fix native compilation for MariaDB java client 3.5
1. Authentication plugins now have factories, so the substitution for PAM had to change. See mariadb-corporation/mariadb-connector-j@734e7de#diff-dc08764181b86cf19de46936c85631d8c3501d4fe3b198b610bc152505960327L40-L41 2. Configuration parsing now reflectively calls methods on the builder, instead of accessing fields directly, so we must enable method reflection. It would seem field reflection is still necessary for other reasons. See mariadb-corporation/mariadb-connector-j@a12ae9f#diff-2573c2b3bd0420719971212a9d3d2268d8de6b1de6c54deb77e50f007501fe6eL949-R766 See mariadb-corporation/mariadb-connector-j@3.5.1...3.5.2#diff-6986b23619644158a24e91357d3086a29899387d29069100be8edb11856b55a0L144-R147 See mariadb-corporation/mariadb-connector-j@a12ae9f#diff-2573c2b3bd0420719971212a9d3d2268d8de6b1de6c54deb77e50f007501fe6eL942
1 parent 469d22c commit 67a35e3

File tree

3 files changed

+19
-31
lines changed

3 files changed

+19
-31
lines changed

extensions/jdbc/jdbc-mariadb/deployment/src/main/java/io/quarkus/jdbc/mariadb/deployment/MariaDBJDBCReflections.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
1414
reflectiveClass
1515
.produce(ReflectiveClassBuildItem.builder("org.mariadb.jdbc.Driver").build());
1616

17-
//MariaDB's connection process requires reflective read to all fields of Configuration and its Builder:
17+
//MariaDB's connection process requires reflective access to both fields and methods of Configuration and its Builder:
1818
reflectiveClass.produce(
1919
ReflectiveClassBuildItem.builder("org.mariadb.jdbc.Configuration", "org.mariadb.jdbc.Configuration$Builder")
20-
.fields().build());
20+
.fields().methods().build());
2121
}
2222
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.quarkus.jdbc.mariadb.runtime.graal;
2+
3+
import org.mariadb.jdbc.Configuration;
4+
import org.mariadb.jdbc.HostAddress;
5+
6+
import com.oracle.svm.core.annotate.Substitute;
7+
import com.oracle.svm.core.annotate.TargetClass;
8+
9+
@TargetClass(className = "org.mariadb.jdbc.plugin.authentication.standard.SendPamAuthPacketFactory")
10+
public final class SendPamAuthPacketFactory_Substitutions {
11+
12+
@Substitute
13+
public void initialize(String authenticationData, byte[] seed, Configuration conf, HostAddress hostAddress) {
14+
throw new UnsupportedOperationException("Authentication strategy 'dialog' is not supported in GraalVM");
15+
}
16+
17+
}

extensions/jdbc/jdbc-mariadb/runtime/src/main/java/io/quarkus/jdbc/mariadb/runtime/graal/SendPamAuthPacket_Substitutions.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)