Skip to content

Releases: mariadb-corporation/mariadb-connector-j

MariaDB connector/j 1.5.7

12 Jan 16:42
Compare
Choose a tag to compare

Notable changes and additions

This version is a Correction release

Bugfix

  • CONJ-407 : handling failover when packet > max_allowed_packet reset the connection state.
  • CONJ-403 : possible NPE on ResultSet.close() correction
  • CONJ-405 : Calendar instance not cleared before being used in ResultSet.getTimestamp

MariaDB connector/j 1.5.6

21 Dec 22:34
Compare
Choose a tag to compare

Notable changes and additions

This version is a Correction release

Bugfix

  • CONJ-399 : resultSet getLong() for BIGINT column fails if value is Long.MIN_VALUE in Text protocol
  • CONJ-395 : Aurora does not randomise selection of read replicas
  • CONJ-392 : Aurora cluster endpoint detection timezone issue
  • CONJ-394 : mysql_native_password plugin authentication fail when default-auth set
  • CONJ-388 : handle timestamp '0000-00-00 00:00:00' getString()
  • CONJ-391 : Use SELECT in place of SHOW command on connection
  • CONJ-396 : revised implementation for handling multiple resultSet correctly for a unique command (was failing if more than 2)

Misc

  • CONJ-380 : continous integration now test against maxscale

MariaDB connector/j 1.5.5

08 Nov 00:56
Compare
Choose a tag to compare

Notable changes and additions

This version is a Correction release

Bugfix

  • CONJ-386 : Disabling useBatchMultiSend option for Aurora, since can hang connection.
  • CONJ-385 : Store procedure with resultSet get wrong getUpdateCount() value (0 in place of -1)
  • CONJ-383 : permit OldAuthSwitchRequest protocol (compatibility with 5.5 server using plugin)
  • CONJ-382 : Client sockets remain when server close socket on connection (when server maximum connections number has been reached)
  • CONJ-381 : Metadata getProcedureColumns precision's information corrected for date/timestamp/datetime
  • CONJ-379 : Metadata TINYTEXT type return Types.LONGVARCHAR instead of Types.VARCHAR
  • CONJ-376 : Maxscale compatibility : Permit protocol compression only if server permit it
  • CONJ-375 : Load data infile with large files fails with OutOfMemoryError correction
  • CONJ-370 : use KeyStore default property when not using keyStore option
  • CONJ-369 : Encoding on clob column when useServerPrepStmts=true correction
  • CONJ-362 : fix a possible race condition MariaDbPooledConnection

MariaDB connector/j 1.5.4

09 Oct 22:49
Compare
Choose a tag to compare

Notable changes and additions

This version is a Correction release

Bugfix

  • CONJ-363 : Connection.getClientInfo implementation correction to follow JDBC rules
  • CONJ-361 : PrepareStatement setString() with empty string correction.
  • CONJ-360 : replacing ManagementFactory.getRuntimeMXBean() that cause possible slow connection depending on environment
  • CONJ-359 : Metadata getColumns(...) resultSet doesnt have "IS_GENERATEDCOLUMN" info

MariaDB connector/j 1.5.3

02 Oct 23:20
Compare
Choose a tag to compare

Notable changes and additions

This version is a Correction release

Bugfix

  • CONJ-358 : Permit using private key with password that differ from keyStore password
  • CONJ-356 : secure connection : use KeyStore private key and associate public keys certificates only
  • CONJ-342 : Empty clientCertificateKeyStoreUrl option correction
  • CONJ-353 : IBM jdk compatibility issue
  • CONJ-354 : Streaming issue when using procedures in PrepareStatement/Statement
  • CONJ-345 : Regression with using COLLATE keyword in PrepareStatement query
  • CONJ-352 : metadata correction on getPrecision() for numeric fields
  • CONJ-350 : make prepare fallback to client prepare if query cannot be prepare

MariaDB connector/j 1.5.2

31 Aug 00:04
Compare
Choose a tag to compare

Notable changes and additions

This version is a GA candidate

Bugfix

  • CONJ-331 : clearWarnings() now throw exception on closed connection
  • CONJ-299 : PreparedStatement.setObject(Type.BIT, "1") registered as true.
  • CONJ-293 : permit named pipe connection without host
  • CONJ-333 : ResultSet.getString() of PreparedStatement return NULL When TIME column value=00:00:00

1.5.1.RC corrections

  • CONJ-335 : Pool connection may fail to connect with good user
  • CONJ-332 : option enabledSslCipherSuites rely on java supportedCipherSuites (replacing enabledCipherSuites)
  • UTF-8 conversion correction

MariaDB connector/j 1.5.1 release candidate

15 Aug 23:15
Compare
Choose a tag to compare

Notable changes and additions

This version is a release candidate

Evolution

Aurora host auto-discovery

(CONJ-325)

Aurora now auto discover nodes from cluster endpoint.

Aurora endpoints

Every aurora instance has a specific endpoint, i.e. an URL that identify the host. Those endpoints look like xxx.yyy.zzz.rds.amazonaws.com.

There is another endpoint named "cluster endpoint" (format xxx.cluster-yyy.zzz.rds.amazonaws.com) which is assigned to the current master instance and will change when a new master is promoted.

In previous version, cluster endpoint use was discouraged, since when a failover occur, this cluster endpoint can point for a limited time to a host that isn't the current master anymore. Old recommandation was to list all specific end-points, like :

jdbc:mysql:aurora://a.yyy.zzz.rds.amazonaws.com.com,b.yyy.zzz.rds.amazonaws.com.com/db

This kind of url string will still work, but now, recommended url string has to use only cluster endpoint :

jdbc:mysql:aurora://xxx.cluster-yyy.zzz.rds.amazonaws.com/db

Driver will automatically discover master and slaves of this cluster from current cluster end-point during connection time. This permit to add new replicas to the cluster instance will be discovered without changing driver configuration.

This discovery append at connection time, so if you are using pool framework, check if this framework as a property that controls the maximum lifetime of a connection in the pool, and set a value to avoid infinite lifetime. When this lifetime is reached, pool will discarded the current connection, and create a new one (if needed). New connections will use the new replicas.
(If connections are never discarded, new replicas will begin be used only when a failover occur)

Bugfix

  • CONJ-329 and CONJ-330 : rewriteBatchedStatements execute single query exceptions correction.

MariaDB connector/j 1.5.0 release candidate 1

28 Jul 17:27
Compare
Choose a tag to compare

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

MariaDB connector/j 1.4.6

13 Jun 14:21
Compare
Choose a tag to compare

Release information

This version is a bugfix release

Corrections

  • [CONJ-293] Permit named pipe connection without host in connection string
  • [CONJ-309] Possible NPE on aurora when failover occur during connection initialisation
  • [CONJ-312] NPE while loading a null from TIMESTAMP field using binary protocol
  • [misc] batch with one parameter correction (using rewriteBatchedStatements option)

MariaDB connector/j 1.4.5

19 May 07:02
Compare
Choose a tag to compare

Release information

This version is a bugfix release

Corrections

  • [CONJ-297] Useless memory consumption when using Statement.setQueryTimeout
  • [CONJ-294] PrepareStatement failover handling : use master connection to a minimum
  • [CONJ-290] Timestamps format error when using prepareStatement with options useFractionalSeconds and useServerPrepStmts
  • [CONJ-218] MariaDbDatabaseMetaData getTables() follow the jdbc recommendation TABLE_TYPE "TABLE" replacing "BASE_TABLE"