MariaDB Connector/J 3.1.0 Release Notes
The most recent Stable (GA) release of MariaDB Connector/J is:MariaDB Connector/J 3.5.3
DownloadRelease NotesChangelogConnector/J Overview
Release date: 15 Nov 2022
MariaDB Connector/J 3.1.0 is a Stable (GA) release.
For an overview of MariaDB Connector/J see theAbout MariaDB Connector/J page
Performance
Other than features, connector permit significant performance improvements, reaching the same level of performance than c connector
Most significant change are :
CONJ-1009 improve performance reading big result-set
CONJ-1014 avoid creating array when receiving server packet
CONJ-1015 pipelining sent (PREPARE+EXECUTE) are now sent into a single buffer, permitting in some case to have only one TCP-IP packet for 2 mysql packet.
Benchmark using JMH one a single 4 core ubuntu 22.04 server (AWS c5.xlarge) shows :
simple resultset command : "Select 1"
@Benchmark
public int run(MyState state) throws Throwable {
try (Statement st = state.connectionText.createStatement()) {
ResultSet rs = st.executeQuery("select 1");
rs.next();
return rs.getInt(1);
}
}

Client side prepared statement parsing : "DO 1000 parameters"
private static final String sql;
static {
StringBuilder sb = new StringBuilder("do ?");
for (int i = 1; i < 1000; i++) {
sb.append(",?");
}
sql = sb.toString();
}
@Benchmark
public int text(MyState state) throws Throwable {
try (PreparedStatement st = state.connectionText.prepareStatement(sql)) {
for (int i = 1; i <= 1000; i++) {
st.setInt(i, i);
}
return st.executeUpdate();
}
}

resultset with lots of columns : ""select 1 row from a 100 int columns"
@Benchmark
public int[] text(MyState state) throws Throwable {
try (PreparedStatement prep = state.connectionText.prepareStatement("select * FROM test100")) {
ResultSet rs = prep.executeQuery();
rs.next();
int[] objs = new int[100];
for (int i = 0; i < 100; i++) {
objs[i] = rs.getInt(i + 1);
}
return objs;
}
}

UUID Object support
Since MariaDB server 10.7, a new UUID data format is supported. getter and setter can now pass java.util.UUID parameter (i.e. PrepareStatement setObject(index, ) / Resultset getObject(index, UUID.class) )
Resultset.getObject without class or type precision will now return UUID object for UUID fields by default
UUID metadata
Metadata for UUID fields will now return ResultSetMetaData.getColumnTypeName(index) => "uuid" ResultSetMetaData.getColumnClassName(index) => "java.util.UUID" ResultSetMetaData.getColumnType(index) => Types.OTHER
replacing :
ResultSetMetaData.getColumnTypeName(index) => "CHAR" ResultSetMetaData.getColumnClassName(index) => "java.lang.String" ResultSetMetaData.getColumnType(index) => Types.CHAR
For compatibility, a new option uuidAsString
permit to consider UUID as String like previously.
Other changes
CONJ-992 load balance hosts are now chosen using ROUND ROBIN in place of RANDOM
CONJ-1008 default value for socket option useReadAheadInput change to false.
Changelog
For a complete list of changes made in MariaDB Connector/J 3.1.0, with links to detailed information on each push, see the changelog.
This page is: Copyright © 2025 MariaDB. All rights reserved.
Last updated
Was this helpful?