Release Notes for the MariaDB Connector/J 3.0 series
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 25 Aug 2023
MariaDB Connector/J 3.0.11 is a Stable (GA) release.
This is the last release of the 3.0 release series as the release series 3.1 is compatible and is therefore replacing 3.0 as the maintenance releases.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-1089 correcting 3.0.10 incompatibility with java 8
For a complete list of changes made in MariaDB Connector/J 3.0.11, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 11 Jan 2023
MariaDB Connector/J 3.0.10 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-1023 Connector/J doesn't set SSL cap bit in Handshake Response Packet
CONJ-1026 timezone=auto option failure on non-fixed-offset zone machine
CONJ-1032 Compatibility for deprecated arguments is case sensitive now
For a complete list of changes made in MariaDB Connector/J 3.0.10, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 08 Nov 2022
MariaDB Connector/J 3.0.9 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
merge from 2.7.7 : CONJ-1016 avoid splitting BULK command into multiple commands in case of prepareStatement.setNull() use
merge from 2.7.7 : CONJ-1021 GSSAPI authentication might result in connection reset
merge from 2.7.7 : CONJ-1019 DatabaseMetaData.getImportedKeys should return real value for PK_NAME column
CONJ-1012 stored procedure register output parameter as null if set before registerOutParameter command
CONJ-1017 Calendar possible race condition, cause wrong timestamp setting
For a complete list of changes made in MariaDB Connector/J 3.0.9, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 20 Sep 2022
MariaDB Connector/J 3.0.8 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-1010 improve client side prepared parameter substitution
CONJ-997 regression in 3.x when using option galeraAllowedState resulting in an IndexOutOfBoundsException
CONJ-1002 2nd failover reconnection ignores default database/schema setting when not set by connection string
CONJ-1003 replication configuration always use 1st replica on 3.0
CONJ-996 BatchUpdateException doesn't inherited the SQLState & vendorCode from the cause SQL exception
CONJ-1006 disabling cachePrepStmts with useServerPrepStmts might result in Exception
CONJ-1007 Socket file descriptors are leaked after connecting with unix socket if DB is not up running
CONJ-999 setting createDatabaseIfNotExist option use on read-only server will refuse connection on 3.0
For a complete list of changes made in MariaDB Connector/J 3.0.8, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 4 Aug 2022
MariaDB Connector/J 3.0.7 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-993 SQLDataException reading DATA_TYPE on DatabaseMetaData.getTypeInfo() after 3.0.4
CONJ-986 Permit specific Statement.setLocalInfileInputStream for compatibility
CONJ-987 Version 3.0.0 returns String for VARBINARY instead of byte[] as 2.7.6 did
CONJ-989 Binary column read as String
CONJ-990 Setting timezone=UTC result in SQLSyntaxErrorException
CONJ-991 Regression: binary(16) is returned as String by getObject()
CONJ-994 Version 3.x rejects previously accepted boolean string parameter for BOOLEAN field
For a complete list of changes made in MariaDB Connector/J 3.0.7, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 29 Jun 2022
MariaDB Connector/J 3.0.6 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-984 Permit executing initial command with new option initSql
CONJ-976 Improve use of pipelining when allowLocalInfile is enabled
CONJ-985 ResultSet.getObject() returns ByteSet instead of Byte[] for BIT
CONJ-953 PreparedStatement.getGeneratedKeys() returns rows when no keys are generated in insert
CONJ-975 ArrayIndexOutOfBoundsException when attempt to getTime() from ResultSet
CONJ-979 ResultSet.getObject() returns Byte instead of Boolean for tinyint(1)
CONJ-980 Permit setObject with java.util.Date parameter
For a complete list of changes made in MariaDB Connector/J 3.0.6, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 25 May 2022
MariaDB Connector/J 3.0.5 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-958 When multiple hosts are defined in the connection URL and no failover or load balancing mode is used, MariaDB Connector/J will try the hosts sequentially until a connection is successful.
CONJ-961 LOAD DATA LOCAL INFILE is now enabled by default on the client side, for compatibility with MariaDB Connector/J 2.7.
The connector validates that only the filename used in the original request will be provided, to prevent a man-in-the-middle change of the filename.
This might cause Batch performance regression. In case of non use of LOCAL DATA LOCAL INFILE, disable option allowLocalInfile
explicitly can improve performance.
CONJ-956 ArrayIndexOutOfBoundsException when alias length > 250
CONJ-947 value after milliseconds precision lost when timestamp is encoded
CONJ-949 keep clientCertificateKeyStoreUrl and clientCertificateKeyStoreUrl aliases
CONJ-950 metadata TEXT/TINYTEXT/MEDIUMTEXT/LONGTEXT wrong column type and length
CONJ-954 java.time.OffsetDateTime not supported
CONJ-958 compatibility with 2.7: now loop through hosts when multiple host without failover mode
CONJ-959 java.time.Instant not supported
CONJ-962 resultset for negative TIME value return erronous LocalDateTime values
CONJ-965 better error message when not loading serverSslCert file
CONJ-967 clearParameters() breaks validity when using output parameters in stored procedures
CONJ-969 org.mariadb.jdbc.ClientPreparedStatement is missing a toString implementation, useful for logging
For a complete list of changes made in MariaDB Connector/J 3.0.5, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 25 Mar 2022
MariaDB Connector/J 3.0.4 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
CONJ-921 DatabaseMetadata#getTables throws a syntax error if a NULL value is used for tableNamePattern
CONJ-922 A DECIMAL overflow for long/int/short is not throwing an exception
CONJ-924 A NULL value returned for a column can result in java.lang.IllegalArgumentException: Unexpected data type NULL
CONJ-926 The authentication is restricted to the methods 'mysql_native_password,client_ed25519,auth_gssapi_client' instead of allowing all supported methods, if the option restrictedAuth is not set (default NULL).
CONJ-923 32 bit value returned instead of a 64 bit value for generated id / updated rows
CONJ-933 When the load-balancing HA mode is used a host is not used anymore after a connection failed, even if a connection would be possible again.
CONJ-935 Connection.getMetaData() returns values of type MariaDbClob instead of the expected type String
CONJ-937 metadata.getColumnTypeName() returns the values with a wrong types
CONJ-934 A connection fails if the password is set before the username for MariaDbDataSource
CONJ-932 The login packet has non-standard length information for the attributes, which can result in issues when using wireshark.
CONJ-945 When using failover the definition of retriesAllDown is ignored when trying to reconnect
CONJ-940 Updates of rows is not possible for storage engines which do not provide the metadata information for primary columns
CONJ-925 missing OSGI metadata is missing
For a complete list of changes made in MariaDB Connector/J 3.0.4, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 25 Jan 2022
MariaDB Connector/J 3.0.3 is a Stable (GA) release.
NOTE: MariaDB Connector/J 3.0.3 is NOT fully compatible with the latest release of version 2.7.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
New version 3.0 is a complete rewrite of the connector, with code simplification, reduced size (15%), more than 90% coverage tested, with performance gain.
Licence is still LGPL-2.1 or later with copyright to MariaDB Corporation AB only (2.x was a fork from Drizzle-JDBC - BSD licensed)
What’s new :
Binary prepare statement improvement
faster connection creation
Support of new 10.6 metadata skip
Pipelining PREPARE
REDO failover transaction
Better java version support
New option tcpKeepIdle
, tcpKeepCount
, tcpKeepInterval
for java 11+
Provide a full JPMS module descriptor
new option restrictedAuth
to permit authentication plugin restriction
metadata queries performance improvement
Easy logging
Deprecated option removal
Support codec registry implementation
Other than features, connector permit significant performance improvements : Here are real world TPCC benchmarks results, comparing connector version 2.7.4 and 3.0.3
When using option useServerPrepStmts
, the connector uses BINARY protocol, meaning executing PREPARE + EXECUTE commands.
Queries issued from the application are sent one by one to the server, waiting on the results of the first query before sending the next. Communication with the server follows this synchronous request-response messaging pattern.
When using binary protocol, a PREPARE command is issued (if not in cache) before executing an EXECUTE command.
For MariaDB server 10.2+, the connector will send an optimistic PREPARE + EXECUTE, sending queries one after another. EXECUTE command will be executed only if the PREPARE command succeeds. This avoids some network latency reading PREPARE result before sending EXECUTE command.
10.6 Server with MDEV-19237 permit to avoid resending metadata when they haven’t changed.
This concerns SQL commands that return a resultset, when using option useServerPrepStmts
.
Now, the server will send metadata only if they have changed (DDL change for example). This avoids useless information transiting on the network and parsing those metadata.
Connector internal JMH Benchmark results, selecting one row of a 100 int column table :
Connection creation by default won't execute additional command to set session environement. Depending on options, there might be a few commands, but driver avoid them to the maximum.
After a failover occurs, reconnection will be automatically done according to high-availability configuration. Even if implementation is now smaller and clearer, the result will be the same.
After reconnection, the connector might still throw an exception if the state is unsure. Failover on replica are transparent. This is different when the failover occurs during the execution of a query on a master server.
A new option transactionReplay
permit to replay transactions :
Most of the time, queries occur in transactions so redo transaction implementation will solve most of the failover cases transparently. Option is disabled by default. When enabled, all queries in a transaction are cached until transaction resolution.
If a failover occurs, the driver will recreate a new connection and replay cache.
There is a few limitations:
When the last command was a "commit" sent to the server, an exception will be thrown, the driver cannot know the current state.
application must have idempotent queries only (queries can be "replayable")
If the transaction is too big (cache size limit set with new option transactionReplaySize
), the driver won’t cache the transaction anymore, so a failover during that specific transaction will result in throwing an exception.
Driver uses Multi-Release JARs (MRJAR), to simultaneously contain implementations for different versions of java. This permit still supports Java 8, but provides solutions for higher versions of java.
Connector now provides a java 9 full module-info JPMS descriptor
Java 11 socket extended option TCP_KEEPIDLE, TCP_KEEPCOUNT and TCP_KEEPINTERVAL are now configurable with tcpKeepIdle
, tcpKeepCount
, tcpKeepInterval
options respectively. (These options don't have any effect if using a java version lower than 11).
A new option restrictedAuth
permits to restrict authentication plugins.
Example connection string jdbc:mariadb:*localhost/db?restrictedAuth=mysql_native_password,client_ed25519
will restrict plugin use of standard mysql_native_password and client_ed25519 only.*
Metadata queries use of information_schema improvement for partial or exact matching, permitting faster results.
Logging can now be easily enabled at runtime, using slf4j if present, or fallback to JDK logger / console if not.
INFO level log connection error
DEBUG/FINE level log commands
TRACE/FINEST level log network exchanges
It occurs that mysql AND mariadb driver are sometimes available in the same classpath,
so, now, driver only accept jdbc:mariadb:
by default.
If for some reason, connection string is required to be jdbc:mysql:
Driver will be used only if connection string contain 'permitMysqlScheme'.
example :jdbc:mysql:*localhost/test?permitMysqlScheme
.*
Ssl configuration use now a new option sslMode
to simplify configuration
Possible value are :
disable
No ssl (default)
trust
Encryption only (no certificate and hostname validation) (DEVELOPMENT ONLY)
verify-ca
Encryption, certificates validation, BUT no hostname verification
verify-full
Standard SSL use: Encryption, certificate validation and hostname validation
This can still be done by 2.x options (useSsl, disableSslHostnameVerification, trustServerCertificate) for compatibility, but this is the preferred way.
A new option timezone
permits to force session timezone in case of client having a different timezone compare to server. if set timezone must to either offset or IANA tz (like '+5:00' or 'America/New_York')': connector will set connection timezone. This replace options useLegacyDatetimeCode
and serverTimezone
that did cause some problems when using some functions that are affected by the time zone setting.
Even if connectors aim to be compatible with the 2.x version, there has been very few option removal since connection exists. This is now the time :
allowMasterDownConnection
In master/replica setup, master must be up
assureReadOnly
connectors now configure replica connection being read-only
autoReconnect
doesn’t have any sense now, better use high availability mode
cachePrepStmts
always cache when using binary protocol
callableStmtCacheSize
always cache when using binary protocol
continueBatchOnError
enablePacketDebug
log are now set using standard logger
ensureSocketState
removed, this was a debugging option
failOnReadOnly
one master must always be present when using master/replica setup
failoverLoopRetries
failover number of attempts rely now only on retriesAllDown option
jdbcCompliantTruncation
The connector ensures STRICT_TRANS_TABLES is always set to follow JDBC expected truncation.
keyPassword
loadBalanceBlacklistTimeout
denied lists are handled automatically, and if all servers are denied, the connector will reconnect using the denied servers. No need for these options anymore.
log
log are now set using standard logger
maximizeMysqlCompatibility
very old option for old mysql connector compatibility
nullCatalogMeansCurrent
was to permit non JDBC behavior for compatibility with old version correction
passwordCharacterEncoding
pinGlobalTxToPhysicalConnection
prepStmtCacheSqlLimit
forced to 8K value
profileSql
log are now set using standard logger
retriesAllDown
not compatible with new failover implementation
rewriteBatchedStatements
replaced by use of faster batching implementation ( COM_STMT_BULK)
serverTimezone
sharedMemory
plugin removed
slowQueryThresholdNanos
staticGlobal
tcpNoDelay
Who would want to disable NAGLE to have a slow connector
tcpRcvBuf
tcpSndBuf
trackSchema
Automatically set
trustStore
Use java standard truststore or option serverSslCert to provide certificates.
trustStorePassword
Same than trustStore
trustStoreType
Same than trustStore
useBatchMultiSend
replaced by use of faster batching implementation ( COM_STMT_BULK)
useBatchMultiSendNumber
See useBatchMultiSend
useFractionalSeconds
server are expected to support fractional seconds (all mariadb server support it, mysql since 5.6)
useLegacyDatetimeCode
useOldAliasMetadataBehavior
was to permit non JDBC behavior for compatibility with old version correction
validConnectionTimeout
No automatic validation done by connector, pool must validate connection, not connector having a thread for that
Specific support for aurora has been removed, since Issues were piling up without the community proposing any PR for them and without access for us to test those modifications.
For a complete list of changes made in MariaDB Connector/J 3.0.3, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 16 Sep 2021
MariaDB Connector/J 3.0.2 is a Release Candidate (RC) release.
Do not use non-stable (non-GA) releases in production!
NOTE: MariaDB Connector/J 3.0.2 is fully compatible with the latest release of version 2.7. Further maintenance releases will not be provided for version 2.7 after MariaDB Connector/J 3.0 becomes stable (GA).
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
See mariadb-connector-j-300-release-notes.md and mariadb-connector-j-301-release-notes.md for 3.0 release. with the following changes:
CONJ-879 Java 9 module full support ( Aws IAM credential now use sdk v2 authentication to permit use of modules)
CONJ-897 Ensure having connection's thread id in Exception / debug logs
CONJ-896 Ensure pool connections validation when a socket fail
For a complete list of changes made in MariaDB Connector/J 3.0.2, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 11 Aug 2021
MariaDB Connector/J 3.0.1 is a Beta (Beta) release.
Do not use beta releases in production!
NOTE: MariaDB Connector/J 3.0.1 is fully compatible with the latest release of version 2.7. Further maintenance releases will not be provided for version 2.7 after MariaDB Connector/J 3.0 becomes stable (GA).
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
See mariadb-connector-j-300-release-notes.md for 3.0 release. with the following fixes :
CONJ-879 Provide JPMS module descriptor
CONJ-880 metadata query performance correction
CONJ-884 MariaDbPoolDataSource leaks connections when the mariadb server restarts
CONJ-885 org.mariadb.jdbc.internal.util.pool.Pool swallows SQLException during addConnection
CONJ-891 getImportedKeys with null catalog restrict result to current database
CONJ-894 Adding useMysqlMetadata for 2.7 compatibility
For a complete list of changes made in MariaDB Connector/J 3.0.1, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
The most recent Stable (GA) release of MariaDB Connector/Java is:
DownloadRelease NotesChangelogConnector/J Overview
Release date: 04 May 2021
MariaDB Connector/J 3.0.0 is a Alpha (Alpha) release.
Do not use alpha releases in production!
NOTE: MariaDB Connector/J 3.0.0 is fully compatible with the latest release of version 2.7. Further maintenance releases will not be provided for version 2.7 after MariaDB Connector/J 3.0 becomes stable (GA).
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
This version is a complete rewrite of the Java driver. The goal being to have a more performant, easy to read, extendable, small driver.
Complete rewrite, code simplification / clarification, reduced size (15%), more than 90% coverage tested.
Performance Improvements:
Prepare and execution are now using pipelining when using option useServerPrepStmts
Performance enhancement with MariaDB 10.6 server when using option useServerPrepStmts
, skipping metadata (see MDEV-19237)
New Options :
The options useSsl
, trustServerCertificate
, and disableSslHostnameVerification
still exist, but sslMode
allows for easier configuration.
If using slf4j
, just enable the package "org.mariadb.jdbc" log.
Level ERROR
will log connection errors
Level WARNING
will log query errors
Level DEBUG
will log queries
Level TRACE
will log all exchanges with server
If not using slf4j
, console logging will be used.
If you really want to use the JDK logger, the System property
"mariadb.logging.fallback
" set to JDK
will indicate to use common
logging.
The Failover implementation now permits redoing transactions : when creating a transaction, all commands will be cached, and can be replayed in case of failover.
This functionality can be enabled using the option transactionReplay
.
This is not enabled by default, because it requires that the application avoid using non-idempotent commands.
Example:
START TRANSACTION;
SELECT next_val(hibernate_sequence);
INSERT INTO myCar(id, name) VALUE (?, ?) //WITH parameters: 1, 'car1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //WITH parameters: 2, 1, 'detail1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //WITH parameters: 3, 2, 'detail2'
COMMIT;
Equivalent options are tcpKeepIdle
, tcpKeepCount
, tcpKeepInterval
Because these are available only with Java 11, setting these options with java < 11 will have no effect.
New Options :
example setting restrictedAuth
to "mysql_native_password,client_ed25519,auth_gssapi_client", only those plugins can be use. If server return ask for an authentication plugin not listed in restrictedAuth
, driver will throw an exception.
The driver is built with a Service Provider Interface (SPI), permitting easy ways to extend the driver.
Possible extensions:
org.mariadb.jdbc.codec.Codec
: Allows encoding/decoding types
org.mariadb.jdbc.plugin.authentication.AuthenticationPlugin
: Allows authentication plugin additions. Defaults are "mysql_clear_password", "auth_gssapi_client", "client_ed25519", "mysql_native_password", "dialog" (PAM), and "caching_sha2_password"
org.mariadb.jdbc.plugin.credential.CredentialPlugin
: Allows login/password retrieval. Defaults are "AwsIamCredentialPlugin" to permit retrieve a temporary IAM authentication, "EnvCredentialPlugin" to get environment authentication, and "PropertiesCredentialPlugin" to get authentication info from java property
org.mariadb.jdbc.plugin.tls.TlsSocketPlugin
: Allows extended TLS implementation
CONJ-864 - includeThreadDumpInDeadlockExceptions
always includes the thread dump, even when it is not a deadlock exception
CONJ-858 - Properties parameters that differ from string not taken in account
For a complete list of changes made in MariaDB Connector/J 3.0.0, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.