-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
MySQL Connector/J 5.1.6, a maintenance release of the production 5.1 branch has been released. Connector/J is the Type-IV pure-Java JDBC driver for MySQL. Version 5.1.6 is suitable for use with any MySQL version including MySQL-4.1, MySQL-5.0, MySQL-5.1 RC or the MySQL-6.0 development release. It is now available in source and binary form from the Connector/J download pages at http://dev.mysql.com/downloads/connector/j/5.1.html and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can't find this version on some mirror, please try again later or choose another download site.) As always, we recommend that you check the change log http://dev.mysql.com/doc/refman/5.0/en/cj-news.html and "Upgrading" sections http://dev.mysql.com/doc/refman/5.0/en/cj-upgrading.html in the manual before upgrading as well as the "CHANGES" file in the download archive to be aware of changes in behavior that might affect your application. We welcome and appreciate your feedback, bug reports, bug fixes, patches etc.: http://forge.mysql.com/wiki/Contributing MySQL Connector/J 5.1.6 includes the following changes: - JDBC-4.0-ized XAConnections and datasources. - Fixed BUG#31790 MysqlValidConnectionChecker doesn't properly handle ReplicationConnection - Fixed Bug#20491 - DatabaseMetadata.getColumns() doesn't return correct column names if connection character set isn't UTF-8. (There was a server-side component of this that was fixed late in the 5.0 development cycle, it seems, this is the last piece that fixes some loose ends in the JDBC driver). This fix touches *all* metadata information coming from the MySQL server itself. - Fixed MysqlIO.nextRowFast() to only attempt to read server warning counts and status if talking to a 4.1 or newer server (fixes a hang when reading data from 4.0 servers). - Made profiler event handling extensible via the "profilerEventHandler" connection property. - Fixed Bug#31823 - CallableStatement.setNull() on a stored function would throw an ArrayIndexOutOfBounds when setting the last parameter to null when calling setNull(). - Added SSL-related configuration property "verifyServerCertificate". If set to "false", the driver won't verify the server's certificate when "useSSL" is set to "true". When using this feature, the keystore parameters should be secified by the "clientCertificateKeyStore*" properties, rather than system properties, as the JSSE doesn't make it straightforward to have a non-verifying trust store and the "default" key store. - Fixed ResultSetMetadata.getColumnName() for result sets returned from Statement.getGeneratedKeys() - it was returning null instead of "GENERATED_KEY" as in 5.0.x. - More applicable fix for the "random" load balance strategy in the face of node non-responsive, it re-tries a *different* random node, rather than waiting for the node to recover (for BUG#31053) - Fixed BUG#32577 - no way to store two timestamp/datetime values that happens over the DST switchover, as the hours end up being the same when sent as the literal that MySQL requires. Note that to get this scenario to work with MySQL (since it doesn't support per-value timezones), you need to configure your server (or session) to be in UTC, and tell the driver not to use the legacy date/time code by setting "useLegacyDatetimeCode" to "false". This will cause the driver to always convert to/from the server and client timezone consistently. This bug fix also fixes BUG#15604, by adding entirely new date/time handling code that can be switched on by "useLegacyDatetimeCode" being set to "false" as a JDBC configuration property. For Connector/J 5.1.x, the default is "true", in trunk and beyond it will be "false" (i.e. the old date/time handling code, warts and all will be deprecated). - Fixed BUG#32877 - Load balancing connection using best response time would incorrectly "stick" to hosts that were down when the connection was first created. We solve this problem with a black list that is used during the picking of new hosts. If the black list ends up including all configured hosts, the driver will retry for a configurable number of times (the "retriesAllDown" configuration property, with a default of 120 times), sleeping 250ms between attempts to pick a new connection. We've also went ahead and made the balancing strategy extensible. To create a new strategy, implement the interface com.mysql.jdbc.BalanceStrategy (which also includes our standard "extension" interface), and tell the driver to use it by passing in the class name via the "loadBalanceStrategy" configuration property. - Fixed BUG#30508 - ResultSet returned by Statement.getGeneratedKeys() is not closed automatically when statement that created it is closed. - Added two new connection properties, "selfDestructOnPingSecondsLifetime" and "selfDestructOnPingMaxOperations" designed to control overall connection lifetime (useful to reclaim resources on the server side) for connection pools that don't have such a facility. The driver will consult the values of these properties when a ping is sent, either through calling Connection.ping(), issuing the "ping marker" query (any query that starts with "/* ping */"), or when using JDBC-4.0, calling Connection.isValid(). If the connection has issued too many operations, or is too old, the driver will throw a SQLException with the SQLState of "08S01" at the time of the ping, which will cause the connection to be invalidated with most pools in use today. - Fixed issue where driver could send invalid server-side prepared statement IDs to the server when the driver was setup to do auto-reconnect as the connection could get set up enough to start sending queries on one thread, while the thread that "noticed" the connection was down hasn't completed re-preparing all of the server-side prepared statements that were open when the connection died. Potentially fixes cause for bug 28934. Potentially fixes other possible race conditions where one thread that has created a connection "shares" it with other threads if the connection is reconnected due to auto-reconnect functionality. - Fixed BUG#33823 - Public interface ResultSetInternalMethods with reference to non-public class com.mysql.jdbc.CachedResultSetMetaData. - For any SQLException caused by another Throwable, besides dumping the message or stack trace as a string into the message, set the underlying Throwable as the cause for the SQLException, making it accessible via getCause(). - Fixed BUG#34093 - Statements with batched values do not return correct values for getGeneratedKeys() when "rewriteBatchedStatements" is set to "true", and the statement has an "ON DUPLICATE KEY UPDATE" clause. - Fixed BUG#31192 - Encoding Issue retrieving serverVersion in MysqlIO in the method doHandshake when encoding doesn't contain ASCII characters in the "standard" place (i.e. ebcdic). - Fixed issue where META-INF in the binary .jar file wasn't packed correctly, leading to failure of the JDBC-4.0 SPI mechanism. - CallableStatements that aren't really stored procedure or stored function calls can now be used, for tools such as Oracle JDeveloper ADF that issue statements such as DDL through CallableStatements. - Fixed BUG#34518 - Statements using cursor fetch leaked internal prepared statements until connection was closed. The internal prepared statement is now held open while the result set is open, and closed by the result set itself being closed. - Fixed BUG#34677 - Blob.truncate() wouldn't take "0" as an argument. - CommunicationExceptions now carry information about the last time a packet was received from the MySQL server, as well as when the last packet was sent to one, in an effort to make it easier to debug communications errors caused by network timeouts. - Reverted a change to DatabaseMetadata.getColumns() from 5.0, where getColumns() would report NULL for COLUMN_SIZE for TIME, DATE, DATETIME and TIMESTAMP types. It now reports the column size, in the DatabaseMetadata implementations that use "SHOW" commands, and the INFORMATION_SCHEMA. - Fixed Bug#34762 - RowDataStatic does't always set the metadata in ResultSetRow, which can lead to failures when unpacking DATE, TIME, DATETIME and TIMESTAMP types when using absolute, relative, and previous result set navigation methods. - Fixed BUG#34703 - Connection.isValid() invalidates connection after timeout, even if connection is actually valid. - Fixed BUG#34194 - ResultSetMetaData.getColumnTypeName() returns "UNKNOWN" for GEOMETRY type. - Fixed BUG#33162 - NullPointerException instead of SQLException thrown for ResultSet.getTimestamp() when not positioned on a row. - The ConnectionLifecycleInterceptor interface now has callback methods for transaction initiation (transactionBegun()), and completion (transactionCompleted()), as reported by the *server* (i.e. calling Connection.setAutoCommit(false) will not trigger transactionBegun() being called, however the first statement which causes a transaction to start on the server will cause transactionBegun() to be called *after* the statement has been processed on the server). - Fixed Bug#34913 - ResultSet.getTimestamp() returns incorrect values for month/day of TIMESTAMPs when using server-side prepared statements (not enabled by default). - Fixed BUG#34937 - MysqlConnectionPoolDataSource does not support ReplicationConnection. Notice that we implemented com.mysql.jdbc.Connection for ReplicationConnection, however, only accessors from ConnectionProperties are implemented (not the mutators), and they return values from the currently active connection. All other methods from com.mysql.jdbc.Connection are implemented, and operate on the currently active connection, with the exception of resetServerState() and changeUser(), which operate on all connections held by the replication connection. - Connections created with jdbc:mysql:replication:// URLs now force roundRobinLoadBalance=true on the slaves, and round-robin load balancing now uses a "random" choice to more evenly distribute load across slave servers, especially in connection pools. Connections that are configured with "roundRobinLoadBalance=true" no longer set the failover state, as it's assumed that we're not attempting to fall-back to a master server. This fixes BUG#34963. Enjoy! -Mark - -- Mark Matthews, Architect (Enterprise Tools) MySQL, Inc. Chicago, USA - www.mysql.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFH0Eq1tvXNTca6JD8RAoH7AKC9K/qQIvIHGLlHY7RPwNODhywnVACgxDmy GNjMYaoJgmt3PlQtliTSM7E= =nJJe -----END PGP SIGNATURE----- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]