MariaDB Connector/J 2.0.1 Release Notes
The most recent Stable (GA) release of MariaDB Connector/J is:
MariaDB Connector/J 3.5.0
Download Release Notes Changelog Connector/J Overview
Release date: 11 May 2017
MariaDB Connector/J 2.0.1 is a Stable (GA) release.
For an overview of MariaDB Connector/J see the About MariaDB Connector/J page
Notable Changes
Java 8 is the minimum required version
The last release with Java 7 compatibility is MariaDB Connector/J 1.6.0
Change from 2.0.1
The "useServerPrepStmts" option now defaults to false.
Benchmarks show that if the query has already been used (then prepared), there is a significant performance increase. On the other hand, when the command is not already prepared, the additional exchange for preparing this command will slightly slow down the overall execution of the command
The applications that repeatedly use the same queries have the ability to activate this option, but the general case is to use the direct command (text protocol).
Binary protocol is permissive and did permit using character for LIMIT that accept only integer :
try (PreparedStatement p = connection.prepareStatement("SELECT * from mysql.user LIMIT ?")) { p.setString(1, "10"); p.executeQuery(); }
With the "useServerPrepStmts" set to false, LIMIT parameter must be set to numeric field:
try (PreparedStatement p = connection.prepareStatement("SELECT * from mysql.user LIMIT ?")) { p.setInt(1, 10); p.executeQuery(); }
- CONJ-467 - changing database metadata compability to 4.2
- CONJ-460 - Query that contain multiqueries with fetch and EOF deprecation failed
- CONJ-464 - Using of "slowQueryThresholdNanos" option with value > Integer.MAX_VALUE results in class cast exception
- CONJ-452 - correcting inline ssl server certificate parsing
- CONJ-461 - LAST_INSERT_ID() validation check correction for rewrite statement
- CONJ-468 - autoIncrementIncrement value loaded during connection, avoiding a query for first statement for rewrite
New Option : CONJ-465 - new option "enablePacketDebug"
enablePacketDebug | Driver will save the last 16 MySQL packet exchanges (limited to first 1000 bytes). The hexadecimal value of those packets will be added to stacktrace when an IOException occurs. This option has no impact on performance but te driver will then take 16kb more memory. Default: false. Since 1.6.0, 2.0.1 |
---|
Change version 2.0.0 release candidate
Handle CLIENT_DEPRECATE_EOF flag
CONJ-318
Implement some protocol changes that permit saving some bytes.
(part of https://jira.mariadb.org/browse/MDEV-8931).
Handle SERVER_SESSION_STATE_CHANGE status flag
CONJ-341
With a MariaDB 10.2 or MySQL 5.7 server, ensure driver state:
- driver now always gets the current database, even when the database is changed by a query.
- when using rewriteBatchedStatements, return the correct autoincrement ids even when the session variable @auto_increment_increment has changed during the session.
Improve setQueryTimeout to use SET STATEMENT max_statement_time
CONJ-393
The previous implementation of query timeout handling (using Statement.setQueryTimeout) will create an additional thread with a scheduler.
When timeout is reached, a temporary connection will be created to permit executing "KILL QUERY <current connection id>", then closing the temporary connection.
When the query ends before timeout, the scheduled task will be canceled.
For servers > MariaDB 10.1.2, the query timeout will be handled server side using the "SET MAX_STATEMENT_TIME FOR" command.
Real cancelling streaming result sets
CONJ-315
When closing a statement that was fetching a result-set (using Statement.setFetchSize) and all rows were not read at the time of closing, a kill query command will be executed on close, to avoid having to parse all remaining results.
Memory optimization: streaming query
CONJ-442
Very large commands now don't use an intermediate buffer. Commands are sent directly to socket avoiding using memory. This permits sending very large objects (1G) without using any additional memory.
Faster connection
CONJ-366
Faster connection: bundle first commands in authentication packet
The driver executes different commands on connection. Those queries are now sent using pipeline (all queries are sent, only then are all results read).
New Options:
usePipelineAuth | Fast connection creation.Default: true. Since 2.0.0 |
---|
Performance improvement storing data in resultset
CONJ-368
Parsing row result optimisation to avoid creating byte array to the maximum for faster results and less memory use.
Remaining JDBC 4.2 missing implementation :
- CONJ-414 - support for large update count [CONJ-414]
- CONJ-409 - PrepareStatement.setObject(...) support for with java 8 temporal temporal object.
- CONJ-411 - support for Statement maxFieldSize
Misc
- CONJ-443 - NullpointerException when making concurrent procedure calls
- CONJ-391 - Improve connection using SELECT in place of SHOW to avoid creating a mutex server side.
- CONJ-402 - tcpKeepAlive option now default to true.
- CONJ-448 - QueryException: Incorrect arguments to mysqld_stmt_execute on inserting an "emptyString"-Lob with JPA
- CONJ-451 - Respect type parameter of ResultSet.getObject with type
- CONJ-455 - MetaData : tinyInt1isBit doesn't work properly in TINYINT(1) column that is marked as UNSIGNED
- CONJ-450 - NPE on setClientInfo if value is an empty string
- CONJ-457 - trustStore : Retain leading slash when trust store beings with 'file:/'
- CONJ-160 - ConnectionPool test using hikariCP
- CONJ-307 - valid connector java 9 early access
- CONJ-402 - make tcpKeepAlive option default to true
- CONJ-411 - Implement Statement maxFieldSize
- CONJ-449 - Permit CallableStatement streaming
Be notified of new MariaDB Server releases automatically by subscribing to the MariaDB Foundation community announce 'at' lists.mariadb.org announcement list (this is a low traffic, announce-only list). MariaDB plc customers will be notified for all new releases, security issues and critical bug fixes for all MariaDB plc products thanks to the Notification Services.
MariaDB may already be included in your favorite OS distribution. More
information can be found on the
Distributions which Include MariaDB
page.