github mariadb-corporation/mariadb-connector-j 1.5.0-RC1
MariaDB connector/j 1.5.0 release candidate 1

latest releases: 3.5.3, 3.4.2, 3.3.4...
pre-release8 years ago

Notable changes and additions

This version is a release candidate

Use native SSPI windows implementation

CONJ-295.

Java kerberos implementation is not well implemented with windows :

  • need a windows registry entry (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTGTSessionKey) so windows shared current ticket to java.
  • java kinit must be executed to create a Ticket.
  • restriction when client with local admin rights
  • ...

see openJDK issue for more informations

Kerberos GSSAPI implementation on windows in now based on Waffle that support windows SSPI based on JNA.

if waffle-jna (and dependencies) is on classpath, native implementation will automatically be used.

This removes all those problems

Support for TLSv1.1 and TLSv1.2

CONJ-249/CONJ-301

Driver before version 1.5 support only TLSv1.

Default supported protocol are now TLSv1 and TLSv1.1, other protocols can be activated by options.

MariaDB and MySQL community server permit TLSv1 and TLSv1.1.

MariaDB server from version 10.0.15 is using the openSSL library permitting TLSv1.2 (>= 5.5.41 for the 5.5 branch).
YaSSL doesn't support TLSv1.2, so if MariaDB server is build from sources with YaSSL, only TLSv1 and TLSv1.1 will be available, even for version > 10.0.15

TLSv1.2 can be enabled by setting option {{{enabledSslProtocolSuites}}} to values {{{"TLSv1, TLSv1.1, TLSv1.2"}}}.

A new option {{{enabledSslCipherSuites}}} permit to set specific cipher.

New Options :

name description
enabledSslProtocolSuites Force TLS/SSL protocol to a specific set of TLS versions (comma separated list).
Example : "TLSv1, TLSv1.1, TLSv1.2"
Default: TLSv1, TLSv1.1.
enabledSslCipherSuites Force TLS/SSL cipher (comma separated list).
Example : "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"
Default: use JRE ciphers.

Performance improvement

[CONJ-291]

Different performance improvement have been done :

  • Using PreparedStatement on client side use a simple query parser to identify query parameters. This parsing was taking up to 7% of query time, reduced to 3%.
  • Better UTF-8 decoding avoiding memory consumption and gain 1-2% query time for big String.
  • client parsing optimization : rewriteBatchedStatements (insert into ab (i) values (1) and insert into ab (i) values (2) rewritten as insert into ab (i) values (1), (2))
    is now 19% faster (Depending on queries 40-50% of CPU time was spend testing that buffer size is big enough to contain query).
  • there was some memory wastage when query return big resultset (> 10kb), slowing query.
  • ...

[CONJ-320]
Send X well established MySQL protocol without reading results, and read those X results afterwhile.
Basically that permit to avoid a lot of 'ping-pong' between driver and server.

New Options :

name description
useBatchMultiSend PreparedStatement.executeBatch() will send many QUERY before reading result packets.
Default: true.
useBatchMultiSendNumber When using useBatchMultiSend, indicate maximum query that can be send at a time.
Default: 100.

Prepare + execute in one call

CONJ-296

When using MySQL/MariaDB prepared statement, there will be 3 exchanges with server :

  • PREPARE - Prepares statement for execution.
  • EXECUTE - Executes a prepared statement preparing by a PREPARE statement.
  • DEALLOCATE PREPARE - Releases a prepared statement.

See Server prepare documentation for more information.

PREPARE and DEALLOCATE PREPARE are 2 additional client-server round-trip.
When database is MariaDB >= 10.2.2:

  • PREPARE and EXECUTE in one client-server round-trip.

Client logging

Client logging can be enable, permitting to log query information, execution time and different failover information.
This implementation need the standard SLF4J dependency.

New Options :

name description
log Enable log information. require Slf4j version > 1.4 dependency.
Default: false
maxQuerySizeToLog Only the first characters corresponding to this options size will be displayed in logs.
Default: 1024
slowQueryThresholdNanos Will log query with execution time superior to this value (if defined ).
Default: 1024
profileSql log query execution time.
Default: false

Don't miss a new mariadb-connector-j release

NewReleases is sending notifications on new releases.