From c1fb5ecc9c4057ad65fd1bc50bf02b6c3e5d724e Mon Sep 17 00:00:00 2001 From: Adalbert Makarovych Date: Wed, 29 Oct 2025 14:26:12 +0200 Subject: [PATCH 1/2] Removed tinyint1isbit option --- README.md | 1 - .../r2dbc/MariadbConnectionConfiguration.java | 32 ------------------- .../MariadbConnectionFactoryProvider.java | 1 - .../server/ColumnDefinitionPacket.java | 4 --- .../r2dbc/integration/ConfigurationTest.java | 6 ++-- .../r2dbc/integration/codec/BitParseTest.java | 10 +++--- .../integration/codec/TinyIntParseTest.java | 19 ----------- .../MariadbConnectionConfigurationTest.java | 8 ++--- 8 files changed, 9 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index f6cd6b1a..8e3029ee 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,6 @@ Basic example: | **`prepareCacheSize`** | if useServerPrepStmts = true, cache the prepared informations in a LRU cache to avoid re-preparation of command. Next use of that command, only prepared identifier and parameters (if any) will be sent to server. This mainly permit for server to avoid reparsing query. | *int* | 256 | | **`pamOtherPwd`** | Permit to provide additional password for PAM authentication with multiple authentication step. If multiple passwords, value must be URL encoded. | *string* | | | **`autocommit`** | Set default autocommit value on connection initialization" | *Boolean* | true | -| **`tinyInt1isBit`** | Convert Bit(1)/TINYINT(1) default to boolean type | *boolean* | true | | **`restrictedAuth`** | if set, restrict authentication plugin to secure list. Default provided plugins are mysql_native_password, mysql_clear_password, client_ed25519, dialog, sha256_password and caching_sha2_password | *string* | | | **`loopResources`** | permits to share netty EventLoopGroup among multiple async libraries/framework | *LoopResources* | | | **`sslContextBuilderCustomizer`** | Permits to customized SSL context builder. | *UnaryOperator* | | diff --git a/src/main/java/org/mariadb/r2dbc/MariadbConnectionConfiguration.java b/src/main/java/org/mariadb/r2dbc/MariadbConnectionConfiguration.java index c379b378..154af570 100644 --- a/src/main/java/org/mariadb/r2dbc/MariadbConnectionConfiguration.java +++ b/src/main/java/org/mariadb/r2dbc/MariadbConnectionConfiguration.java @@ -50,7 +50,6 @@ public final class MariadbConnectionConfiguration { private final boolean useServerPrepStmts; private final Boolean autocommit; private final boolean permitRedirect; - private final boolean tinyInt1isBit; private final String[] restrictedAuth; private final LoopResources loopResources; private final UnaryOperator sslContextBuilderCustomizer; @@ -89,7 +88,6 @@ private MariadbConnectionConfiguration( boolean skipPostCommands, @Nullable Integer prepareCacheSize, @Nullable CharSequence[] pamOtherPwd, - boolean tinyInt1isBit, String restrictedAuth, @Nullable LoopResources loopResources, @Nullable UnaryOperator sslContextBuilderCustomizer, @@ -137,7 +135,6 @@ private MariadbConnectionConfiguration( this.autocommit = (autocommit != null) ? autocommit : Boolean.TRUE; this.permitRedirect = permitRedirect; this.skipPostCommands = skipPostCommands; - this.tinyInt1isBit = tinyInt1isBit; this.loopResources = loopResources != null ? loopResources : TcpResources.get(); this.useServerPrepStmts = !this.allowMultiQueries && useServerPrepStmts; this.sslContextBuilderCustomizer = sslContextBuilderCustomizer; @@ -170,7 +167,6 @@ private MariadbConnectionConfiguration( Boolean autocommit, boolean permitRedirect, boolean skipPostCommands, - boolean tinyInt1isBit, String[] restrictedAuth, LoopResources loopResources, UnaryOperator sslContextBuilderCustomizer) { @@ -200,7 +196,6 @@ private MariadbConnectionConfiguration( this.autocommit = (autocommit != null) ? autocommit : Boolean.TRUE; this.permitRedirect = permitRedirect; this.skipPostCommands = skipPostCommands; - this.tinyInt1isBit = tinyInt1isBit; this.restrictedAuth = restrictedAuth; this.loopResources = loopResources; this.sslContextBuilderCustomizer = sslContextBuilderCustomizer; @@ -237,7 +232,6 @@ public MariadbConnectionConfiguration redirectConf( this.autocommit, this.skipPostCommands, false, - this.tinyInt1isBit, this.restrictedAuth, this.loopResources, this.sslContextBuilderCustomizer); @@ -383,12 +377,6 @@ public static Builder fromOptions(ConnectionFactoryOptions connectionFactoryOpti MariadbConnectionFactoryProvider.SKIP_POST_COMMANDS))); } - if (connectionFactoryOptions.hasOption(MariadbConnectionFactoryProvider.TINY_IS_BIT)) { - builder.tinyInt1isBit( - boolValue( - connectionFactoryOptions.getValue(MariadbConnectionFactoryProvider.TINY_IS_BIT))); - } - if (connectionFactoryOptions.hasOption( MariadbConnectionFactoryProvider.CONNECTION_ATTRIBUTES)) { String connAttributes = @@ -601,10 +589,6 @@ public boolean skipPostCommands() { return skipPostCommands; } - public boolean tinyInt1isBit() { - return tinyInt1isBit; - } - public int getPrepareCacheSize() { return prepareCacheSize; } @@ -816,7 +800,6 @@ public static final class Builder implements Cloneable { private Boolean autocommit = Boolean.TRUE; private boolean permitRedirect = true; private boolean skipPostCommands = false; - private boolean tinyInt1isBit = true; @Nullable private List tlsProtocol; @Nullable private String serverSslCert; @Nullable private String clientSslCert; @@ -888,7 +871,6 @@ private MariadbConnectionConfiguration build(boolean checkMandatory) { this.skipPostCommands, this.prepareCacheSize, this.pamOtherPwd, - this.tinyInt1isBit, this.restrictedAuth, this.loopResources, this.sslContextBuilderCustomizer, @@ -1199,18 +1181,6 @@ public Builder skipPostCommands(boolean skipPostCommands) { return this; } - /** - * Permit to indicate how BIT(1) must return as boolean or byte . Default value True (returns - * boolean). - * - * @param tinyInt1isBit return boolean for BIT(1) - * @return this {@link Builder} - */ - public Builder tinyInt1isBit(boolean tinyInt1isBit) { - this.tinyInt1isBit = tinyInt1isBit; - return this; - } - /** * Permit pipelining (sending request before resolution of previous one). * @@ -1361,8 +1331,6 @@ public String toString() { + sslTunnelDisableHostVerification + ", pamOtherPwd=" + hiddenPamPwd - + ", tinyInt1isBit=" - + tinyInt1isBit + ", autoCommit=" + autocommit + ", permitRedirect=" diff --git a/src/main/java/org/mariadb/r2dbc/MariadbConnectionFactoryProvider.java b/src/main/java/org/mariadb/r2dbc/MariadbConnectionFactoryProvider.java index 87f2519d..d954643a 100644 --- a/src/main/java/org/mariadb/r2dbc/MariadbConnectionFactoryProvider.java +++ b/src/main/java/org/mariadb/r2dbc/MariadbConnectionFactoryProvider.java @@ -29,7 +29,6 @@ public final class MariadbConnectionFactoryProvider implements ConnectionFactory public static final Option AUTO_COMMIT = Option.valueOf("autocommit"); public static final Option PERMIT_REDIRECT = Option.valueOf("permitRedirect"); public static final Option SKIP_POST_COMMANDS = Option.valueOf("skipPostCommands"); - public static final Option TINY_IS_BIT = Option.valueOf("tinyInt1isBit"); public static final Option PREPARE_CACHE_SIZE = Option.valueOf("prepareCacheSize"); public static final Option SSL_MODE = Option.valueOf("sslMode"); public static final Option TRANSACTION_REPLAY = Option.valueOf("transactionReplay"); diff --git a/src/main/java/org/mariadb/r2dbc/message/server/ColumnDefinitionPacket.java b/src/main/java/org/mariadb/r2dbc/message/server/ColumnDefinitionPacket.java index a9b9b980..0a0ad218 100644 --- a/src/main/java/org/mariadb/r2dbc/message/server/ColumnDefinitionPacket.java +++ b/src/main/java/org/mariadb/r2dbc/message/server/ColumnDefinitionPacket.java @@ -196,8 +196,6 @@ public boolean isBinary() { public MariadbType getType() { switch (dataType) { case TINYINT: - // TINYINT(1) are considered as boolean - if (length == 1 && conf.tinyInt1isBit()) return MariadbType.BOOLEAN; return isSigned() ? MariadbType.TINYINT : MariadbType.UNSIGNED_TINYINT; case YEAR: return MariadbType.SMALLINT; @@ -235,8 +233,6 @@ public MariadbType getType() { case DECIMAL: return MariadbType.DECIMAL; case BIT: - // BIT(1) are considered as boolean - if (length == 1 && conf.tinyInt1isBit()) return MariadbType.BOOLEAN; return MariadbType.BIT; case TINYBLOB: case MEDIUMBLOB: diff --git a/src/test/java/org/mariadb/r2dbc/integration/ConfigurationTest.java b/src/test/java/org/mariadb/r2dbc/integration/ConfigurationTest.java index 86ede551..b90affe8 100644 --- a/src/test/java/org/mariadb/r2dbc/integration/ConfigurationTest.java +++ b/src/test/java/org/mariadb/r2dbc/integration/ConfigurationTest.java @@ -338,7 +338,7 @@ void sessionVariablesParsing() { @Test void confStringValue() { String connectionUrl = - "r2dbc:mariadb://admin:pass@localhost:3306/dbname?allowMultiQueries=blabla&autoCommit=1&tinyInt1isBit=0"; + "r2dbc:mariadb://admin:pass@localhost:3306/dbname?allowMultiQueries=blabla&autoCommit=1"; ConnectionFactoryOptions options = ConnectionFactoryOptions.parse(connectionUrl); MariadbConnectionConfiguration.Builder builder = MariadbConnectionConfiguration.fromOptions(options); @@ -357,7 +357,7 @@ void confStringValue() { + " allowPipelining=true, useServerPrepStmts=false, timezone=null," + " prepareCacheSize=null, tlsProtocol=null, serverSslCert=null," + " clientSslCert=null, clientSslKey=null, clientSslPassword=null, sslMode=TRUST," - + " sslTunnelDisableHostVerification=false, pamOtherPwd=*,*, tinyInt1isBit=false," + + " sslTunnelDisableHostVerification=false, pamOtherPwd=*,*," + " autoCommit=true, permitRedirect=true}", builder.toString()); builder.tlsProtocol((String) null); @@ -370,7 +370,7 @@ void confStringValue() { + " allowPipelining=true, useServerPrepStmts=false, timezone=null," + " prepareCacheSize=null, tlsProtocol=null, serverSslCert=null," + " clientSslCert=null, clientSslKey=null, clientSslPassword=null, sslMode=TRUST," - + " sslTunnelDisableHostVerification=false, pamOtherPwd=*,*, tinyInt1isBit=false," + + " sslTunnelDisableHostVerification=false, pamOtherPwd=*,*," + " autoCommit=true, permitRedirect=true}", builder.toString()); MariadbConnectionConfiguration conf = builder.build(); diff --git a/src/test/java/org/mariadb/r2dbc/integration/codec/BitParseTest.java b/src/test/java/org/mariadb/r2dbc/integration/codec/BitParseTest.java index 29820231..1918ad17 100644 --- a/src/test/java/org/mariadb/r2dbc/integration/codec/BitParseTest.java +++ b/src/test/java/org/mariadb/r2dbc/integration/codec/BitParseTest.java @@ -60,10 +60,8 @@ void defaultValuePrepare() { } @Test - void defaultValueNoTiny() throws Throwable { - MariadbConnectionConfiguration conf = - TestConfiguration.defaultBuilder.clone().tinyInt1isBit(false).build(); - MariadbConnection connection = new MariadbConnectionFactory(conf).create().block(); + void defaultValueNoTiny() { + MariadbConnection connection = new MariadbConnectionFactory(TestConfiguration.defaultBuilder.build()).create().block(); try { connection .createStatement("SELECT t1 FROM BitTable2 WHERE 1 = ? ORDER BY t4") @@ -109,7 +107,7 @@ private void defaultValue(MariadbConnection connection) { .execute() .flatMap(r -> r.map((row, metadata) -> Optional.ofNullable(row.get(0)))) .as(StepVerifier::create) - .expectNext(Optional.of(Boolean.FALSE), Optional.of(Boolean.TRUE), Optional.empty()) + .expectNext(Optional.of(BitSet.valueOf(new byte[] {(byte) 0})), Optional.of(BitSet.valueOf(new byte[] {(byte) 1})), Optional.empty()) .verifyComplete(); } @@ -512,7 +510,7 @@ private void meta(MariadbConnection connection) { .execute() .flatMap(r -> r.map((row, metadata) -> metadata.getColumnMetadata(0).getType())) .as(StepVerifier::create) - .expectNextMatches(c -> c.equals(MariadbType.BOOLEAN)) + .expectNextMatches(c -> c.equals(MariadbType.BIT)) .verifyComplete(); } } diff --git a/src/test/java/org/mariadb/r2dbc/integration/codec/TinyIntParseTest.java b/src/test/java/org/mariadb/r2dbc/integration/codec/TinyIntParseTest.java index ed9512ce..3b36475c 100644 --- a/src/test/java/org/mariadb/r2dbc/integration/codec/TinyIntParseTest.java +++ b/src/test/java/org/mariadb/r2dbc/integration/codec/TinyIntParseTest.java @@ -77,25 +77,6 @@ void defaultValuePrepare() { defaultValue(sharedConnPrepare); } - @Test - void defaultValueNoTiny() throws Throwable { - MariadbConnectionConfiguration conf = - TestConfiguration.defaultBuilder.clone().tinyInt1isBit(false).build(); - MariadbConnection connection = new MariadbConnectionFactory(conf).create().block(); - try { - connection - .createStatement("SELECT t1 FROM tinyIntTable1 WHERE 1 = ? ORDER BY t2") - .bind(0, 1) - .execute() - .flatMap(r -> r.map((row, metadata) -> Optional.ofNullable(row.get(0)))) - .as(StepVerifier::create) - .expectNext(Optional.of((byte) 0), Optional.of((byte) 1), Optional.empty()) - .verifyComplete(); - } finally { - connection.close().block(); - } - } - private void defaultValue(MariadbConnection connection) { connection .createStatement("SELECT t1 FROM tinyIntTable WHERE 1 = ? ORDER BY t2") diff --git a/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java b/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java index ed5a14c8..83edb849 100644 --- a/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java +++ b/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java @@ -47,7 +47,6 @@ public void builder() { .allowPublicKeyRetrieval(true) .useServerPrepStmts(true) .autocommit(false) - .tinyInt1isBit(false) .allowPipelining(false) .allowMultiQueries(false) .socket("/path/to/mysocket") @@ -58,7 +57,7 @@ public void builder() { .timezone("auto") .build(); Assertions.assertEquals( - "r2dbc:mariadb:loadbalance://localhost/MyDB?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&timezone=auto&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=MyUSer&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone=Europe/Paris&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&useServerPrepStmts=true&autocommit=false&tinyInt1isBit=false&restrictedAuth=mysql_native_password,client_ed25519", + "r2dbc:mariadb:loadbalance://localhost/MyDB?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&timezone=auto&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=MyUSer&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone=Europe/Paris&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&useServerPrepStmts=true&autocommit=false&&restrictedAuth=mysql_native_password,client_ed25519", conf.toString()); } @@ -103,7 +102,6 @@ public void connectionString() { + "&allowPublicKeyRetrieval=true" + "&useServerPrepStmts=true" + "&autocommit=false" - + "&tinyInt1isBit=false" + "&allowPipelining=false" + "&allowMultiQueries=true" + "&socket=/path/to/mysocket" @@ -136,7 +134,6 @@ public void connectionString() { + "&cachingRsaPublicKey=cachingRSAPublicKey" + "&allowPublicKeyRetrieval=true" + "&autocommit=false" - + "&tinyInt1isBit=false" + "&restrictedAuth=mysql_native_password,client_ed25519", conf.toString()); } @@ -176,7 +173,6 @@ public void connectionStringLoadBalance() { + "&allowPublicKeyRetrieval=true" + "&useServerPrepStmts=true" + "&autocommit=false" - + "&tinyInt1isBit=false" + "&allowPipelining=false" + "&allowMultiQueries=true" + "&socket=/path/to/mysocket" @@ -184,7 +180,7 @@ public void connectionStringLoadBalance() { MariadbConnectionConfiguration conf = MariadbConnectionConfiguration.fromOptions(options).build(); Assertions.assertEquals( - "r2dbc:mariadb:loadbalance://localhost/db?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=ro:ot&allowMultiQueries=true&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone='Europe/Paris'&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&autocommit=false&tinyInt1isBit=false&restrictedAuth=mysql_native_password,client_ed25519", + "r2dbc:mariadb:loadbalance://localhost/db?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=ro:ot&allowMultiQueries=true&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone='Europe/Paris'&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&autocommit=false&&restrictedAuth=mysql_native_password,client_ed25519", conf.toString()); } From 22e6eccae525dc73b9c9c8a037dcd05d37c6463c Mon Sep 17 00:00:00 2001 From: Adalbert Makarovych Date: Wed, 29 Oct 2025 14:53:29 +0200 Subject: [PATCH 2/2] Fixed test --- .../r2dbc/unit/MariadbConnectionConfigurationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java b/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java index 83edb849..821496b4 100644 --- a/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java +++ b/src/test/java/org/mariadb/r2dbc/unit/MariadbConnectionConfigurationTest.java @@ -57,7 +57,7 @@ public void builder() { .timezone("auto") .build(); Assertions.assertEquals( - "r2dbc:mariadb:loadbalance://localhost/MyDB?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&timezone=auto&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=MyUSer&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone=Europe/Paris&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&useServerPrepStmts=true&autocommit=false&&restrictedAuth=mysql_native_password,client_ed25519", + "r2dbc:mariadb:loadbalance://localhost/MyDB?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&timezone=auto&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=MyUSer&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone=Europe/Paris&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&useServerPrepStmts=true&autocommit=false&restrictedAuth=mysql_native_password,client_ed25519", conf.toString()); } @@ -180,7 +180,7 @@ public void connectionStringLoadBalance() { MariadbConnectionConfiguration conf = MariadbConnectionConfiguration.fromOptions(options).build(); Assertions.assertEquals( - "r2dbc:mariadb:loadbalance://localhost/db?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=ro:ot&allowMultiQueries=true&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone='Europe/Paris'&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&autocommit=false&&restrictedAuth=mysql_native_password,client_ed25519", + "r2dbc:mariadb:loadbalance://localhost/db?connectTimeout=PT0.15S&tcpKeepAlive=true&tcpAbortiveClose=true&transactionReplay=true&password=***&pamOtherPwd=otherPwd&prepareCacheSize=125&socket=/path/to/mysocket&username=ro:ot&allowMultiQueries=true&allowPipelining=false&connectionAttributes=entry1=val1,entry2=val2&sessionVariables=timezone='Europe/Paris'&sslMode=trust&serverSslCert=/path/to/serverCert&tlsProtocol=TLSv1.2,TLSv1.3&clientSslKey=clientSecretKey&clientSslPassword=***&sslTunnelDisableHostVerification=true&rsaPublicKey=/path/to/publicRSAKey&cachingRsaPublicKey=cachingRSAPublicKey&allowPublicKeyRetrieval=true&autocommit=false&restrictedAuth=mysql_native_password,client_ed25519", conf.toString()); }