MySQL Connector/J 5.1.40 has been released

Sreedhar S <[email protected]> Mon, 3 Oct 2016 23:05:54 +0530
Newsgroups gmane.comp.db.mysql.announce,gmane.comp.db.mysql.general,gmane.comp.db.mysql.packagers,gmane.comp.db.mysql.java
Organization Oracle Corporation
Message-ID <[email protected]>
--------------609DBBF4847790B21613B154
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello all,

MySQL Connector Java 5.1.40, a maintenance release of the production 5.1
branch, has been released. Connector/J is a Type-IV pure-Java JDBC driver
for MySQL, supporting the JDBC 4.2 API.  It is suitable for use with MySQL
server versions 5.5, 5.6, and 5.7.

MySQL Connector Java is available in source and binary form from the
Connector/J download page at
http://dev.mysql.com/downloads/connector/j/5.1.html

MySQL Connector Java (Commercial) is available for download on the My
Oracle Support (MOS) website. This release will be available on
eDelivery (OSDC) in next month's upload cycle.

As always, we recommend that you check the "CHANGES" file in the
download archive to be aware of changes in behavior that might affect
your application.

MySQL Connector/J 5.1.40 includes the following general bug fixes and
improvements, also available in more detail on
http://dev.mysql.com/doc/relnotes/connector-j/en/news-5-1-40.html :

Changes in MySQL Connector/J 5.1.40             (2016-10-03)

    Version 5.1.40 is a maintenance release of the production 5.1
    branch. It is suitable for use with MySQL server versions
    5.5, 5.6, and 5.7. It supports the Java Database Connectivity
    (JDBC) 4.2 API.

    Functionality Added or Changed

      * A very old workaround for Bug#36326 (fixed in release
        5.1.32) has been removed, so Connector/J can now use
        local transaction states when the MySQL server has query
        cache enabled. (Bug #19974685)

      * Added support for the error codes of two MySQL server
        errors, ER_XA_RBTIMEOUT
        (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se 
<http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html#error_er_xa_rbtimeout>
rver.html#error_er_xa_rbtimeout 
<http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html#error_er_xa_rbtimeout>) 
and ER_XA_RBDEADLOCK
        (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se 
<http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html#error_er_xa_rbdeadlock>
rver.html#error_er_xa_rbdeadlock 
<http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html#error_er_xa_rbdeadlock>). 
(Bug #13702433, Bug
        #64188)

    Bugs Fixed

      * In certain cases, the exception interceptor was being
        triggered twice in the internal SQLException factory
        method. Also, if the exception interceptor returned an
        exception with the cause already initialized, the same
        factory method would fail to initialize the cause again,
        and the real cause for the exception remained uncaptured.
        (Bug #23743956, Bug #82115)

      * Continuing to use a Fabric connection after one of the
        slaves was removed might result in a
        ConcurrentModificationException. This happened because
        the list of slave hosts managed by Connector/J was being
        traversed and modified at the same time as the
        replication topology was changed. This patch fixes the
        issue by having Connector/J use a slave host list that is
        safe to be modified. (Bug #23738636)

      * When the connection property useCursorFetch was "true"
        and updatable result sets were used, executeQuery()
        failed for JSON data with an SQLException: Unknown type.
        It was because the data decoding routine for updatable
        JSON data was missing from Connector/J, and it has now
        been implemented. (Bug #23197238)

      * The FabricMySQLConnectionProxy method nativeSQL() always
        returned null. The method is now properly implemented.
        (Bug #23103408, Bug #81072)

      * In a Fabric setup,
        getMetaData().supportsMixedCaseIdentifiers() always
        returned "true," even if lower_case_table_names was set
        to "1" on the servers. This was because
        FabricMySQLConnectionProxy.lowerCaseTableNames() was not
        implemented properly. With this fix, the function now
        returns the proper value for the current active
        connection, so that
        getMetaData().supportsMixedCaseIdentifiers() also returns
        the correct value.
        Users are reminded that in a Fabric setup,
        lower_case_table_names, as well as all other settings,
        should be configured the same way for all servers in the
        Fabric server group. (Bug #23103406, Bug #81056)

      * A memory leakage occurred when the connection properties
        cachePrepStmts and useServerPrepStmts were both set to be
        true and server-side prepared statements were set as
        non-poolable, which resulted in the prepared statement
        being not closable by the client, and the number of
        prepared statements then kept on increasing.
        When the memory leakage described above occurred, it did
        not make Connector/J fail, as Connector/J switched to
        using client-side prepared statements when the maximum
        number of prepared statements was reached. However, when
        rewriteBatchedStatements was also set to true, the switch
        to client-side prepared statements did not occur, and
        Connector/J threw the MySQLSyntaxErrorException ("Can't
        create more than max_prepared_stmt_count statements")
        when the client wanted to create more prepared statements
        than allowed.
        This fix corrected the way prepared statements are
        handled in order to avoid both of the problems described
        above. (Bug #22954007, Bug #80615)

      * ResultSet.getString() sometimes returned garbled data for
        columns of the JSON data type. This was because JSON data
        was binary encoded by MySQL using the utf8mb4 character
        set, but decoded by Connector/J using the ISO-8859-1
        character set. This patch fixes the decoding for JSON
        data. Thanks to Dong Song Ling for contributing to the
        fix. (Bug #22891845, Bug #80631)

      * When working with MySQL Fabric, Connector/J hung when the
        Fabric node was down. With this fix, when the Fabric node
        is down, all active connections continue to work based on
        the cached information on the server group and the
        sharding setup, although no new connections can be
        established. (Bug #22750465)

      * When Connector/J retrieved the value of a BIT column as
        an integer using, for example, getInt() or getLong(), it
        returned a wrong value if the BIT value happened to be
        equivalent to the decimal value of some ASCII digit. This
        was because Connector/J attempted to parse the value as a
        string-encoded integer; thus, for example, the BIT value
        "110001" (decimal 49 in binary) was interpreted as the
        string "1" (whose ASCII value in decimal is 49), so the
        numerical value of "1" was returned. This fix corrected
        the parsing behavior of Connector/J on BIT values, so
        they are always interpreted as binary coded. (Bug
        #21938551, Bug #78685)

      * Connector/J could not parse the host name and port number
        from connection URLS staring with the word "address,"
        resulting in an UnknownHostException. This was because
        the URLs were being interpreted incorrectly as using the
        alternate URL format, which starts with "address=...."
        This patch fixes the parser for proper interpretation of
        the URL in the situation. (Bug #21389278, Bug #77649)

      * When the connection property useLocalTransactionState was
        set to "true" and autocommit was set to "false" on the
        server, if any exception was thrown, any further calls
        for rollback() or commit() were not sent to the server.
        It was because when there was an exception while
        executing a query, Connector/J lost the information
        regarding the server's transaction state. This patch
        fixes this issue by preserving the previous transaction
        state for the current connection when any exception is
        thrown. (Bug #20212882, Bug #75209)

      * An invalid connection URL caused Connector/J to throw a
        NullPointerException. With this fix, an SQLException is
        thrown instead in the situation. (Bug #18759269, Bug
        #72632)

      * When a very large amount of compressed data is
        transmitted from the server to the client and under very
        special circumstances, a CommunicationsException might
        occur. It happened when a single compressed packet from
        the server was not big enough to provide an entire
        uncompressed packet to the client side. With this fix,
        Connector/J reads as many compressed packets as necessary
        to fill the size of the uncompressed packet that was
        being requested. (Bug #11756431, Bug #48346)


Documentation
--------------
Online: http://dev.mysql.com/doc/connector-j/5.1/en/

Reporting Bugs
---------------
We welcome and appreciate your feedback and bug reports:
http://bugs.mysql.com/

Enjoy and thanks for the support!

On behalf of the MySQL Release Team
-Sreedhar S


--------------609DBBF4847790B21613B154--