Releases: mariadb-corporation/mariadb-connector-j
MariaDB connector/j 1.5.7
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
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
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
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
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
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
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
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
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
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"