MySQL Connector/C 6.1 - Release Notes / ChangeLog
Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 
Full release notes:
http://dev.mysql.com/doc/relnotes/connector-c/en/
  
Changes in MySQL Connector/C 6.1.6
=====================================================================

   Security Notes

     * Connector/C 6.1.6 upgrades the linked OpenSSL library to
       version 1.0.1k. Issues fixed in the new version are
       described at
       http://www.openssl.org/news/vulnerabilities.html.

   Functionality Added or Changed

     * yaSSL sources included in Connector/C source packages and
       used in GPL binary distributions were upgraded to version
       2.3.7. (Bug #20201864)

   Bugs Fixed

     * For source packages, it was not possible to build
       Connector/C with the client protocol test trace plugin
       enabled. (Bug #20316149)

     * When there is no change in session state, the OK packet
       sent from server to the client contained an unneeded byte
       at the end of the packet. (Bug #19625718)

     * The client protocol trace plugin did not account for the
       removal of the EOF packet from the client/server protocol
       in MySQL 5.7.5. (Bug #19512199)

     * The mysql_session_track_get_first() and
       mysql_session_track_get_next() C API functions could
       cause a client crash if passed invalid arguments. (Bug
       #18769620)

     * mysql_config --libs_r produces output containing link
       flags for libmysqlclient_r, even though that library was
       removed in MySQL 5.5 and replaced with a symlink to the
       underlying libmysqlclient library. The output now refers
       directly to libmysqlclient. (The implication is that it
       is no longer necessary to maintain the symlink for the
       sake of being able to use mysql_config --libs_r.) (Bug
       #73724, Bug #19506315)

     * Invalid memory access could occur when using prepared
       statements if a mysql client connection was lost after
       statement preparation was complete and there was at least
       one statement that was in initialized state but not
       prepared yet. (Bug #70429, Bug #17512527)

     * Client auto-reconnect did not work for clients linked
       against libmysqlclient, even with MYSQL_OPT_RECONNECT
       enabled.
       Also, if a FEDERATED table was accessed after
       wait_timeout expired, a Lost connection to MySQL server
       error occurred without an attempt to re-establish the
       connection. (Bug #70026, Bug #17309863, Bug #14874, Bug
       #11745408)

     * mysql_real_connect() could close a file descriptor twice
       if the server was not running. (Bug #69423, Bug
       #19226740)

Changes in MySQL Connector/C 6.1.5 (2014-06-17)
=====================================================================

   Connector/C 6.1.5 upgrades the linked OpenSSL library from version
   1.0.1g to version 1.0.1h. Versions of OpenSSL prior to 1.0.1g are
   reported vulnerable to CVE-2014-0224.

   Functionality Added or Changed

     * The server can now report session-state changes to client
       programs. Reportable session state consists of these values:

          + The default schema (database)

          + Session-specific values for system variables

          + User-defined variables

          + Temporary tables

          + Prepared statements
       The MySQL client/server protocol now includes tracker
       information so that session state changes can be detected. One
       use for the tracker mechanism is that it provides a means for
       MySQL Connectors, Fabric, and client applications to determine
       whether any session context is available to ensure session
       migration from one server to another. (To change connections
       in a load-balanced environment, it is necessary to detect
       whether there is session state to take into consideration when
       deciding whether a switch can be made.)
       The user interface to control the tracker and retrieve
       state-change information from it has the following components,
       which enable implementation of state-change tracking on the
       client side:

          + Clients can request notification when there is a change
            to any of the session state-related values just listed,
            in the form of a flag that is set in the OK packet
            received from the server after the change occurs. To
            control notification, enable or disable the
            session_track_state_change system variable. This variable
            is disabled by default.

          + Clients can request notification of changed values for
            certain specific types of session state information:
               o The default schema name. To control notification,
                 enable or disable the session_track_schema system
                 variable. This variable is enabled by default.
               o The session values of system variables. Notification
                 occurs for the system variables named by the
                 session_track_system_variables system variable. By
                 default, notification is enabled for time_zone,
                 autocommit, character_set_client,
                 character_set_results, and character_set_connection.
                 (The latter three variables are those affected by
                 SET NAMES.)

          + To enable applications to extract the state-change
            information returned by the server, the MySQL C API
            includes a pair of functions:
               o mysql_session_track_get_first() fetches the first
                 state-change information received from the server.
               o mysql_session_track_get_next() fetches any remaining
                 state-change information received from the server.
                 Following a successful call to
                 mysql_session_track_get_first(), call this function
                 repeatedly as long as it returns success.
               o Because there are new API functions, the client
                 library ABI version is now 18.3. Shared library
                 names now include 18.3 where appropriate.

          + The mysqltest program has enable_session_track_info and
            disable_session_track_info commands to enable and disable
            tracking of session state-change information.
       For more information, see Server System Variables
       (http://dev.mysql.com/doc/refman/5.6/en/server-system-variable
       s.html) and mysql_session_track_get_first()
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-session-track-ge
       t-first.html). For information about the structure of the OK
       packet used to convey state-change information, see OK_Packet
       (http://dev.mysql.com/doc/internals/en/packet-OK_Packet.html).

     * Because there are new API functions
       (mysql_session_track_get_first(),
       mysql_session_track_get_next()), the client library ABI
       version is now 18.3. Shared library names now include 18.3
       where appropriate.

   Bugs Fixed

     * Calling mysql_get_server_version() with an invalid connection
       handler argument caused the client to exit. Now it returns 0
       and reports a CR_COMMANDS_OUT_OF_SYNC error. (Bug #18053212)

     * The C client library could leak memory when client plugins
       were used. (Bug #17933308)

     * On Windows, calling mysql_thread_init() call without
       mysql_init() caused the client to exit. windows. Now it
       returns a nonzero result because it is an error to call
       mysql_thread_init() before the client library is initialized
       with mysql_library_init(). (Bug #17514920)

     * There was a difference in certificate handling by yaSSL and
       OpenSSL (used for Community and Enterprise, respectively).
       OpenSSL expected a blank certificate to be sent when not all
       of the --ssl-ca, --ssl-cert, and --ssl-key options were
       specified, and yaSSL did not do so. To resolve this, yaSSL has
       been modified to send a blank certificate when an option is
       missing. (Bug #68788, Bug #16715064)

Changes in MySQL Connector/C 6.1.4 (2014-04-16)
=====================================================================

   Heartbleed Bug

     * Security Fix: The Heartbleed Bug is a serious vulnerability in
       the popular OpenSSL cryptographic software library, which is
       included in Commercial builds of Connector/C 6.1. (It is not
       included in the Community version of Connector/C 6.1; see the
       Note later in this section.) This vulnerability allows theft
       of information protected, under normal conditions, by SSL/TLS
       encryption, which provides communication security and privacy
       for Internet applications such as web browsing, email, instant
       messaging, and some virtual private networks.
       The Heartbleed Bug allows attackers to read the memory of the
       systems protected by vulnerable versions of the OpenSSL
       software. This compromises the secret keys used to identify
       service providers and to encrypt traffic, user names and
       passwords, and content. This allows attackers to eavesdrop on
       communications, to steal data directly from services and
       users, and to impersonate services and users. Additional
       sources of information regarding this issue are provided at
       the end of this section.
       Connector/C 6.1.4 upgrades the OpenSSL library used in the
       Commercial versions of the Connector/C 6.1 to version 1.0.1g,
       which fixes this issue.
       Users of previous Connector/C 6.1 Commercial releases are
       urged to upgrade to Connector/C 6.1.4 as soon as possible.
       Note
       This issue does not affect Connector/C 6.1 Community releases,
       which use yaSSL to provide encryption services, and do not
       include the OpenSSL software. For this reason, the Connector/C
       6.1.4 release is Commercial only, and contains only the fix
       for the Heartbleed bug (and no other changes); users of the
       Community edition of Connector/C 6.1.3 can continue to use
       this version without being affected by this issue, and to
       upgrade directly to Connector/C 6.1.5 when it is released.
       Additional sources of information.
       This issue has been identified as CVE-2014-0160
       (http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160). 
       Oracle customers can learn more about how this issue may
       impact Connector/C and other Oracle products they are using
       by reading this My Oracle Support Note (Document ID 1645479.1)
       (https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1645479.1)
       (Bug #18533200, CVE-2014-0160)

Changes in MySQL Connector/C 6.1.3 (2013-12-27)
=====================================================================
   Security Notes

     * A new MYSQL_OPT_SSL_ENFORCE option is available for the
       mysql_options() C API function to indicate whether to require
       the connection to use SSL. If enabled, an encrypted connection
       is attempted. If an encrypted connection cannot be
       established, the connection attempt fails.
       For more information, see mysql_options()
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-options.html).

   Functionality Added or Changed

     * Some dependencies between client-side plugin header files were
       removed:

          + The MYSQL_PLUGIN_EXPORT macro required by plugin
            declarations is now declared directly in
            mysql/client_plugin.h instead of getting the definition
            from mysql/plugin.h. That macro was the only thing
            required by client-side plugins and declared in
            server-side header mysql/plugin.h, so including
            mysql/client_plugin.h in an application no longer
            requires the application to also include mysql/plugin.h.

          + mysql/plugin_trace.h no longer uses C_MODE_START or
            C_MODE_END. Consequently, including mysql/plugin_trace.h
            in an application no longer requires the application to
            also include my_global.h.
       Applications might require mysql/plugin.h or my_global.h for
       other reasons, of course. (Bug #17582168)

     * A new mysql_get_option() C API function is available that
       returns the current value of applicable mysql_options()
       options. See mysql_get_option()
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-get-option.html)
       .

     * When a connection is returned to the thread pool plugin, the
       connection thread context must be cleaned up. Previously, this
       was done using COM_CHANGE_USER (which is like the
       mysql_change_user() C API function). However, that operation
       reauthenticates, which is unnecessary network roundtrip
       overhead in this context.
       Now it is possible for client connection state to be reset in
       a more lightweight manner without causing reauthentication.
       The API is exposed publicly through these changes:

          + A new COM_RESET_CONNECTION protocol command (defined in
            mysql_com.h)

          + A new mysql_reset_connection() C API function

          + A new resetconnection command for the mysql client
       Resetting a connection has effects similar to
       mysql_change_user() or an auto-reconnect except that the
       connection is not closed and reopened, and reauthentication is
       not done. See mysql_change_user()
       (http://dev.mysql.com/doc/refman/5.6/en/mysql-change-user.html
       )) and see Controlling Automatic Reconnection Behavior
       (http://dev.mysql.com/doc/refman/5.6/en/auto-reconnect.html)).
       For more information, see mysql_reset_connection()
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-reset-connection
       .html) and mysql --- The MySQL Command-Line Tool
       (http://dev.mysql.com/doc/refman/5.6/en/mysql.html).

     * Connector/C is now included in MySQL Installer (Windows).

     * Because there are new API functions (mysql_get_option(),
       mysql_reset_connection()), the library ABI version is now
       18.2. Shared library names now include 18.2 where appropriate.

   Bugs Fixed

     * It was not possible to build client-side plugins using
       Connector/C because client_plugin.h referenced a macro defined
       in the plugin.h file, which is not included in Connector/C
       distributions. (Bug #17582228)
       References: See also Bug #17582168.

     * After the fix for Bug #16409270, it was not possible to
       #include <mysql.h> following #include <windows.h>. (Bug
       #17514554)

     * Upgrading Connector/C using the 64-bit version of the Windows
       MSI package occurred in the default folder because registry
       search logic was hardcoded to use the 32-bit registry. (Bug
       #17515067)

     * A client crash occurred if mysql_set_server_option() or
       several other C API functions were called before
       mysql_real_connect(). (Bug #17338958)

Changes in MySQL Connector/C 6.1.2 (2013-09-30)
=====================================================================
   Functionality Added or Changed

     * The implementation of condition variables specific to Windows
       XP and Windows Server 2003 was removed from the source code
       because MySQL is not supported on those platforms as of MySQL
       5.6.
       Note
       This change has the following implication: Previously,
       Connector/C 6.1, while not officially supported on Windows XP
       or Windows Server 2003, could be used on those platforms. This
       is no longer possible.
       (Bug #17332056)

     * MySQL now supports the use of client-side plugins that
       implement a trace of communication between a client and the
       server that takes place using the client/server protocol.
       Protocol trace plugins use the client plugin API (see Writing
       Plugins
       (http://dev.mysql.com/doc/refman/5.6/en/writing-plugins.html))
       .
       In Connector/C source distributions, a test protocol trace
       plugin is implemented in the test_trace_plugin.cc file in the
       libmysql directory. This can be examined as a guide to writing
       other protocol trace plugins.

     * Static libraries built with VS2008, VS2010, VS2012 are now
       distributed as part of Connector/C packages for Windows: ZIP
       and MSI. New directories named vs9, vs10, and vs11 located
       under the lib directory contain static libraries and
       corresponding pdb files built with VS2008, VS2010, and VS2012,
       respectively.

   Bugs Fixed

     * The CLIENT_CONNECT_WITH_DB flag was improperly handled in the
       C client library. This could lead to a malformed packet sent
       to the server. (Bug #17351732)

     * The mysql_real_connect() C API function could leak memory if
       it failed. (Bug #17337684)

     * The mysql_options() C API function could leak memory if called
       more than once with the MYSQL_SET_CLIENT_IP option. (Bug
       #17297012)

     * The Connector/C MSI package was missing the following files:
       ChangeLog, README, LICENSE, COPYING, INFO_SRC, INFO_BIN. (Bug
       #17261526)

     * The Connector/C RPM package was missing the following files:
       INFO_SRC, INFO_BIN, my_print_defaults, perror. (Bug #17261610)

     * On Windows, a MySQL client program that simply used #include
       <mysql.h> could not be compiled due to missing Windows
       declarations in that file. The same program would compile on
       other platforms. (Bug #16409270)

     * The libmysql.dll library was missing several symbols: my_init,
       mysql_client_find_plugin, mysql_client_register_plugin,
       mysql_load_plugin, mysql_load_plugin_v, and
       mysql_plugin_options. (Bug #69204, Bug #16797982)

Changes in MySQL Connector/C 6.1.1 (2013-08-05)
=====================================================================
   Functionality Added or Changed
 
     * The C API libmysqlclient shared-library .so files now
       have version 18.1.0 (up from version 18.0.0 used in
       6.1.0). 18.1.0 can be used as a replacement for 18.0.0.
       (Bug #16809055)
 
   Bugs Fixed
 
     * The mysql_options4 symbol was missing from libmysql.dll. (Bug
       #69204, Bug #16797982)
 
Changes in MySQL Connector/C 6.1.0 (2013-05-02, General Availability)
=====================================================================
   Functionality Added or Changed
 
     * MySQL Connector/C 6.1 provides these features not present in
       6.0:
 
          + Support for the pluggable authentication framework that
            enables implementation of authentication methods as
            plugins. This framework can be used for MySQL native
            authentication as well as external authentication
            methods. See Pluggable Authentication
            (http://dev.mysql.com/doc/refman/5.6/en/pluggable-authent
            ication.html).
 
          + Client-side support for the SHA-256, PAM, and Windows
            native authentication plugins. See The SHA-256
            Authentication Plugin
            (http://dev.mysql.com/doc/refman/5.6/en/sha256-authentica
            tion-plugin.html), The PAM Authentication Plugin
            (http://dev.mysql.com/doc/refman/5.6/en/pam-authenticatio
            n-plugin.html), and The Windows Native Authentication
            Plugin
            (http://dev.mysql.com/doc/refman/5.6/en/windows-authentic
            ation-plugin.html).
            The older MySQL Connector/C 6.0 can connect only to
            accounts that use native MySQL passwords. If a client
            program attempts to connect to an account that requires a
            different authentication method, an "Access denied for
            user" error occurs.
 
          + Support for connecting to accounts that have expired
            passwords. See Password Expiration and Sandbox Mode
            (http://dev.mysql.com/doc/refman/5.6/en/password-expirati
            on.html).
 
          + Support for prepared CALL statements. This enables client
            programs to handle stored procedures that produce
            multiple result sets and to obtain the final value of OUT
            and INOUT procedure parameters. See C API Support for
            Prepared CALL Statements
            (http://dev.mysql.com/doc/refman/5.6/en/c-api-prepared-ca
            ll-statements.html).
 
          + Support for connecting over IPv6. See IPv6 Support
            (http://dev.mysql.com/doc/refman/5.6/en/ipv6-support.html
            ).
 
          + Support for binding client programs to a specific IP
            address at connect time. See mysql_options()
            (http://dev.mysql.com/doc/refman/5.6/en/mysql-options.htm
            l).
 
          + Support for specifying connection attributes to pass to
            the server at connect time. See mysql_options()
            (http://dev.mysql.com/doc/refman/5.6/en/mysql-options.htm
            l), and mysql_options4()
            (http://dev.mysql.com/doc/refman/5.6/en/mysql-options4.ht
            ml).
