MySQL Connector/ODBC Changelog

What's new in MySQL Connector/ODBC 8.1.0

Jul 19, 2023
  • Functionality Added or Changed:
  • Added OpenTelemetry support. (WL #15624)
  • Bugs Fixed:
  • Fixed a memory leak generated by reading data. (Bug #111036, Bug #35491247)

New in MySQL Connector/ODBC 8.0.33 (Apr 18, 2023)

  • Functionality Added or Changed:
  • Added a new OCI_CONFIG_PROFILE connection option to define a profile set in OCI_CONFIG_FILE; and it defaults to DEFAULT. These options are for the authentication_oci_client plugin used with the Oracle Cloud Infrastructure (OCI) to support ephemeral key pairs and security tokens.
  • Also moved "OCI Config File" from the "Connection" tab to the "Authentication" tab in the GUI next to the new "OCI Config Profile" option. (WL #15482)
  • Improved JSON data character support by presenting JSON columns as utf8mb4 strings instead of binary data. This change also affected the following ODBC functions:
  • SQLColumns() result set changes:
  • DATA_TYPE (column #5) and SQL_DATA_TYPE (column #14) are now SQL_LONGVARCHAR or SQL_WLONGVARCHAR depending on the driver type (ANSI or UNICODE); previously it was always SQL_LONGVARCHAR.
  • COLUMN_SIZE (column #7) and BUFFER_LENGTH (column #8) are now 4294967295; previously they were NULL.
  • CHAR_OCTET_LENGTH (column #16) is now 4294967295; previously it was 0.
  • SQLDescribeCol() result parameter changes:
  • The DataTypePtr parameter returns SQL_LONGVARCHAR or SQL_WLONGVARCHAR depending on the driver type (ANSI or UNICODE); previously it was always SQL_LONGVARCHAR.
  • SQLColAttribute() return changes:
  • The SQL_DESC_CONCISE_TYPE and SQL_DESC_TYPE field identifiers return SQL_LONGVARCHAR or SQL_WLONGVARCHAR depending on the driver type (ANSI or UNICODE); previously it was always SQL_LONGVARCHAR.
  • The SQL_DESC_DISPLAY_SIZE field identifier returns 1073741823; previously it was -2. It's calculated as 4G/(UTF8MB4_SIZE).
  • The SQL_DESC_LOCAL_TYPE_NAME field identifier returns an empty string; previously it was SQL_ERROR.
  • The SQL_DESC_TYPE_NAME field field identifier returns the type name as a character string "JSON"; previously it was a garbled string.
  • (WL #15423)
  • Bugs Fixed:
  • Packaging: Improved the MSI installer compatibilities so that driver versions for different architectures are no longer interdependent. All dependency libraries and executables are installed with the driver, a driver can be installed in a non-default directory, and driver architecture and licensing information is now visible in the list of installed applications. (Bug #35084016)
  • When using client-side prepared statements (NO_SSPS=1), a _utf8mb4 prefix was added to string data sent from the client side even if utf8mb4 was already defined as the character set. Unnecessary prefixes were removed. (Bug #35075941)
  • The SQL_MAX_CONCURRENT_ACTIVITIES value changed from 0 (unlimited) to 1 because Connector/ODBC supports one active statement per connection. (Bug #34916959)
  • On macOS, Connector/ODBC now locates iODBC libraries installed via Homebrew. (Bug #34529199)
  • JSON column data was not properly translated; the data is now interpreted as UTF8MB4 instead of BINARY. A workaround was to cast the JSON column as CHAR. (Bug #33353465)
  • Connector/ODBC now sets the following performance_schema connection attributes, which coincide with how other connectors behave: _connector_version (the connector version, such as 8.0.33), _connector_license (the connector's license type, such as GPL-2.0 or Commercial), _connector_name (always set to mysql-connector-odbc), and _connector_type (the ODBC driver type, either ANSI or Unicode). (Bug #33137632, WL #15417)
  • With using ADO/VB6, updating a record set containing a field of type BIT with cursor location adUseServer could emit an error. The connector now marks BIG(N>1) columns as not searchable to exclude them from WHERE clauses produced by ADO/VB6. As before, type BIT is still reported as ODBC type SQL_BINARY to preserve backwards compatibility. (Bug #16590994)
  • Improved prepared statement performance by decreasing the frequency of setlocale() calls used to enforce the '.' character as a decimal separator. (Bug #107745, Bug #34350417)
  • Renamed compare() to parser_compare() in the parser module to avoid a symbol collision with the XSB ODBC interface. (Bug #70493, Bug #26474343)

New in MySQL Connector/ODBC 8.0.32 (Jan 26, 2023)

  • Functionality Added or Changed:
  • Removed distutils support, which is deprecated as of Python 3.10 and removed in Python 3.12.
  • Adopted type hint enforcement for function and class attributes with mypy; this is compliant with PEP 8 for module mysql.connector. The integration includes a git pre-commit hook for mypy.
  • On Windows, added a kerberos_auth_mode connection option that's set to either "SSPI" (default) or "GSSAPI". This allows choosing between SSPI and GSSAPI at runtime for the authentication_kerberos_client authentication plugin on Windows. Previously, only the SSPI mode was supported on Windows. For general usage information, see Kerberos Pluggable Authentication. This connection is ignored on other platforms, such as Linux, as they only support GSSAPI.
  • Limitation: GSSAPI can't be used with the pure Python implementation on Windows using authentication with a username and password, a limitation with the C library used by the python-gssapi package used by the pure Python implementation of Connector/Python.
  • Bugs Fixed:
  • Using USE_TZ=True in the Django settings would raise this exception: ValueError: Not naive datetime (tzinfo is already set).
  • Removed debug messages that showed authentication data. (Bug #34695103)
  • Updated the protobuf version requirement to version >= 3.11.0, <=3.20.3.
  • Connecting to MariaDB could fail with an unsupported character set because the default MySQL character collection is MySQL 8.0 specific. Now the 5.7 character set is used by default, but is switched to a 8.0 character set if the queried server is version 8.0.
  • Incorrect MySQLCursor.statement values were returned with cursor.execute(query_string, multi=True) under the following conditions: The query string contained two or more queries seperated by a semicolon, and the non-first query used a literal or identifier containing either an odd number of backticks, quotes, or double quotes.
  • On Windows, changed the security support provider (SSP) from Kerberos to Negotiate. Using Negotiate will then select either Kerberos or NTLM as the SSP.
  • On Windows, the Connector/Python MSI did would not detect and install with Python 3.11. The workaround is to use pip install mysql-connector-python instead.
  • When using a prepared cursor, if a datetime column contained 00:00:00 as the time, a Python date object was returned instead of datetime.
  • The MySQLCursor.executemany() method failed to batch insert data since the regular expression (RE) sentinel did not detect batch cases correctly; this meant using the one-on-one insert instead, which led to decreased performance.
  • Added a new init_command connection option; an SQL query that's immediately executed after the connection is established.
  • Russian characters were not handled correctly by the c-ext version's X DevAPI driver. String values are now encoded to their byte string representation before being sent to protobuf.
  • When fetching results from a prepared cursor using the pure Python implementation, it would fail if the VARBINARY column contained bytes that could not be decoded. The bytes are now returned if they cannot be decoded.
  • Fixed multiple reference leaks and removed redundant code.
  • The cursors (both pure and c-ext versions) uses a single SELECT query to retrieve procedure result parameters after a procedure call; but one SET call was used per parameter when setting the input parameters. This was optimized to always use a single SET call for one or multiple parameters.
  • Improved warning handling throughout the connector.
  • Added a new MySQLCursorPreparedDict class option that is similar to MySQLCursorPrepared; the difference is that the former returns a fetched row as a dictionary where column names are used as keys while the latter returns a row as a traditional record (tuple).
  • Enable the use of dictionaries as parameters in prepared statements using the '(param)s' format as placeholders.
  • Using MySQLConverter.escape() on datetime objects raised this error: TypeError: an integer is required. Now it does not attempt to escape values that are not bytes or string types.
  • Not all parameters were added to the INSERT statement when using INSERT IGNORE with cursor.executemany().

New in MySQL Connector/ODBC 5.3.14 (Dec 15, 2022)

  • Bugs Fixed:
  • Connector/ODBC is now built with MySQL client library 5.7.28, which includes OpenSSL 1.1.1d. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. (Bug #30340670)
  • On EL7, and only when using the generic Linux packages, SQLSetPos usage caused an unexpected shutdown. (Bug #29630465)

New in MySQL Connector/ODBC 8.0.28 (Apr 26, 2022)

  • Functionality Added or Changed:
  • The TLSv1 and TLSv1.1 connection protocols were previously deprecated in Connector/ODBC 8.0.26 and support for them is removed starting with this release. Instead, use TLSv1.2 or TLSv1.3.
  • The associated NO_TLS_1_0 and NO_TLS_1_1 connection parameters were removed.
  • Connector/ODBC can now establish connections using Multi-Factor Authentication (MFA), such that up to three passwords can be specified. The new PASSWORD1, PASSWORD2, and PASSWORD3 connection options are available for specifying the first, second, and third MFA passwords, respectively. The PASSWORD1 option is a synonym for the existing PASSWORD option. In addition, PWD1, PWD2, and PWD3 aliases were added.
  • Bugs Fixed:
  • Microsoft Access could unexpectedly halt when browsing MySQL linked tables when columns in the tables had gaps; and for roughly 100+ record tables as the ODBC driver was incorrectly using memory allocating functions from libmysqlclient. (Bug #33557670, Bug #105503)
  • For platforms on which Connector/ODBC utilizes MySQL Server's bundled OpenSSL library (MacOS, Windows, and GenLinux), MySQL Server's linked OpenSSL library was updated to version 1.1.1L. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. (Bug #33309900)
  • SQLColumns() now uses INFORMATION_SCHEMA instead of the deprecated COM_FIELD_LIST by default. COM_FIELD_LIST is only used when NO_I_S is set by Connector/ODBC (which disables INFORMATION_SCHEMA usage). (Bug #29476463, Bug #94235)

New in MySQL Connector/ODBC 8.0.27 (Oct 19, 2021)

  • Functionality Added or Changed:
  • In Connector/ODBC 8.0.26, the capability was introduced for applications that use the classic MySQL connections for accounts that use the authentication_kerberos server-side authentication plugin, provided that the correct Kerberos tickets are available or can be obtained from Kerberos. That capability was available on client hosts running Linux only. It is now available on client hosts running Windows.
  • Bugs Fixed:
  • Changed the NO_SCHEMA default value from 0 to 1. It's enabled to behave like in the older versions the ODBC driver to not accept schema parameters and not declare support for schema functions.
  • The MSI installation package did not install plugin libraries present in the Zip package, such as fido_client, kerberos_client, and ldap_sasl_client.
  • Fixed the internal character set conversions of string data inside the driver; some UTF8MB4 characters were not properly converted.
  • The ODBC driver can now load plugins from their default location without need to specify the plugins directory using the PLUGIN_DIR connection option.
  • Added logic to correctly detect OUT/INOUT parameters from a stored procedure, as a workaround to a libmysqlclient issue.
  • The second call to a stored procedure failed if the statement was closed after the results of the first call had been received.

New in MySQL Connector/ODBC 8.0.22 (Jan 18, 2021)

  • Functionality Added or Changed:
  • For enhanced security of the existing ENABLE_LOCAL_INFILE connection string option, the new ENABLE_LOCAL_DIR option allows restricting LOCAL data loading to files located in this designated directory. Example usage:
  • // LOAD LOCAL DATA DIR FROM /tmp
  • SQLRETURN rc =
  • SQLDriverConnect(
  • hdbc1,NULL,
  • "DSN=myDSN;UID=root;PWD=pwd;DATABASE=test;LOAD_DATA_LOCAL_DIR=/tmp",
  • SQL_NTS, conn_out, sizeof(conn_out), &conn_out_len,
  • SQL_DRIVER_NOPROMPT);
  • // LOAD LOCAL DATA FROM EVERYWHERE
  • SQLRETURN rc =
  • SQLDriverConnect(
  • hdbc1,NULL,
  • "DSN=myDSN;UID=root;PWD=pwd;DATABASE=test;ENABLE_LOCAL_INFILE=1;",
  • SQL_NTS, conn_out, sizeof(conn_out), &conn_out_len,
  • SQL_DRIVER_NOPROMPT);
  • Connections made using the MySQL Enterprise Edition SASL LDAP authentication plugin now are supported on Windows and Linux, but not on macOS. Connector/ODBC implements the SCRAM-SHA-1 authentication method of the SASL authentication protocol.
  • Bugs Fixed:
  • Fixed an issue where a parameterized query could cause memory corruption. (Bug #31678876, Bug #100329)
  • Under some circumstances when using server-side prepared statements, the first row of a multi-row match was not returned with the result; while it was returned when using client-side prepared statements instead. (Bug #31373948, Bug #95423)
  • Inserting binary data (BLOBs) using SQLPutData() would report a syntax error. (Bug #31349038)

New in MySQL Connector/ODBC 8.0.20 (Apr 27, 2020)

  • Functionality Added or Changed:
  • On Debian, DEB packages are now released instead of TGZ files. The file base names are mysql-connector-odbc-* (driver package) and mysql-connector-odbc-setup (setup package). The setup package contains the GUI configuration widget library (libmyodbc8S.so) and depends on the driver package. The driver package depends on the unixODBC libraries (libodbc, libodbcinst); and does not conflict with the official Debian package (libmyoodbc).
  • Bugs Fixed:
  • When using SQL_C_WCHAR with SQLGetData, binary data was not returned correctly as its hexacecimal representation. Related, using SQL_C_CHAR with SQLGetData did return binary data as hex. (Bug #28864788, Bug #92429)
  • When binding an SQL_BIT type column to the SQL_C_CHAR type, SQLFetchScroll would return the values as an integer instead of a char. (Bug #28484784, Bug #91904)

New in MySQL Connector/ODBC 8.0.17 (Jul 22, 2019)

  • Functionality Added or Changed:
  • README.md and CONTRIBUTING.md files were created for the convenience of git users. These files are not distributed with binaries, whereas README.txt remains distributed.
  • Bugs Fixed:
  • The myodbc-installer command line utility did not display all DSN options. (Bug #29753227)
  • On Windows, building and installing from source could yield a binary that would not execute due to a case-sensitivity issue in the CMake logic. (Bug #29210040)

New in MySQL Connector/ODBC 5.3.13 (May 2, 2019)

  • Connector/ODBC 5.3 is now built with MySQL client library 5.7.26, which includes OpenSSL 1.0.2R. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. (Bug #29489006)
  • An exception was emitted when fetching contents of a BLOB/TEXT records after executing a statement as a server-side prepared statement with a bound parameter.
  • The workaround is not using parameters or specifying NO_SSPS=1 in the connection string; this allows the driver to fetch the data. (Bug #29282638, Bug #29512548, Bug #28790708, Bug #93895, Bug #94545, Bug #92078)

New in MySQL Connector/ODBC 8.0.16 (Apr 25, 2019)

  • Bugs Fixed:
  • Connector/ODBC 8.0 is now built with OpenSSL 1.0.2R. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. (Bug #29538143)
  • An exception was emitted when fetching contents of a BLOB/TEXT records after executing a statement as a server-side prepared statement with a bound parameter.
  • The workaround is not using parameters or specifying NO_SSPS=1 in the connection string; this allows the driver to fetch the data. (Bug #29282638, Bug #29512548, Bug #28790708, Bug #93895, Bug #94545, Bug #92078)

New in MySQL Connector/ODBC 8.0.14 (Apr 25, 2019)

  • Functionality Added or Changed:
  • MySQL Connector/ODBC is now compatible with MSVC 2017, while retaining compatibility with MSVC 2015:
  • Previously, Connector/ODBC binary distributions were compatible with projects built using MSVC 2015. Binary distributions now are compatible with projects built using MSVC 2017 or 2015.
  • Previously, Connector/ODBC source distributions could be built using MSVC 2015. Source distributions now can be built using MSVC 2017 or 2015.
  • Previously, the MSI installer accepted the Visual C++ Redistributable for Visual Studio 2015. The MSI installer now accepts the Visual C++ Redistributable for Visual Studio 2017 or 2015.
  • The connection string overrides the DSN value if both are set.
  • A new ENABLE_LOCAL_INFILE connection option was added to the connection string, DSN, and GUI. Disabled by default, set ENABLE_LOCAL_INFILE=1 to enable LOAD DATA operations. This toggles the MYSQL_OPT_LOCAL_INFILE mysql_options() option.
  • Two informative text files were added: INFO_BIN contains information about the build environment used to produce the distribution, and INFO_SRC provides information about the product version and the source repository from which the distribution was produced. Source distributions include the INFO_SRC file only.

New in MySQL Connector/ODBC 8.0.13 (Oct 23, 2018)

  • Functionality Added or Changed:
  • Added dynamic libmysql linking support via the -DMYSQLCLIENT_STATIC_LINKING:BOOL=TRUE|FALSE option; defaults to FALSE to enable dynamic linking.
  • Bugs Fixed:
  • Fixed column metadata handling with Microsoft Access. (Bug #28670725, Bug #91856)
  • The following obsolete options were removed: NO_SCHEMA (use NO_CATALOG instead), DISABLE_SSL_DEFAULT (use SSLMODE instead), and SSL_ENFORCE (use SSLMODE instead). (Bug #28407520)
  • The ODBC Driver returned 0 for the SQL_MAX_SCHEMA_NAME_LEN attribute, and now returns 64 as the maximum length for a MySQL schema name. (Bug #28385722)
  • Because the MySQL ODBC driver ignored the SQL_RD_OFF value for the SQL_ATTR_RETRIEVE_DATA attribute, it incorrectly kept writing into the data buffers. This led to write access violation errors when data was written into the buffer when the user application explicitly requested not to write there. (Bug #28098219, Bug #91060)

New in MySQL Connector/ODBC 5.3.10 (Jan 31, 2018)

  • Functionality Added or Changed:
  • SQL query timeout (SQL_ATTR_QUERY_TIMEOUT) support was added. (Bug #26474362, Bug #69416)
  • When building Connector/ODBC from source, users now have a choice of linking dynamically or statically to the MySQL client library. Dynamic linking is selected by default. See Building Connector/ODBC from a Source Distribution on Windows or Building Connector/ODBC from a Source Distribution on Unix for details.
  • However, the binary distributions of Connector/ODBC from Oracle remain statically linked to the client library.
  • Bugs Fixed:
  • Fixed an OpenRecordSet memory leak due to get_session_variable() not freeing a result for errors. (Bug #27155880, Bug #88143)
  • Calling MySQLDriverConnect with the pcbConnStrOut argument set to NULL caused an unexpected failure. (Bug #27101767, Bug #88371)
  • SELECT FOR UPDATE statements could fail with PREFETCH set. (Bug #26646688, Bug #87457)
  • Connector/ODBC now compiles on MySQL 5.5. Thanks to Vadim Zeitlin for the patch. (Bug #26633971, Bug #87413)

New in MySQL Connector/ODBC 5.3.9 (Jul 25, 2017)

  • Functionality Added or Changed:
  • When compiling Connector/ODBC on Windows platforms, it can now be linked statically (equivalent to the /MT compiler option in Visual Studio) or dynamically (equivalent to the /MD compiler option in Visual Studio) to the Visual C++ runtime. The default option is to link dynamically; if you want to link statically. set the new CMake option, STATIC_MSVCRT, to true.
  • Another new CMake option, WITH_NODEFAULTLIB, has been introduced for specifying the Visual C++ runtime you want to link Connector/ODBC to when using mixed link types (that is, when link type to the Visual C++ runtime differs for Connector/ODBC and the MySQL client library it links to).
  • See Building Connector/ODBC from a Source Distribution on Windows for details.
  • Bugs Fixed:
  • The SQLForeignKeys() function returned an empty result set when the information schema was being used. (Bug #26388694)
  • Calling SQLExecute() after calling SQLFreeStmt() with the SQL_RESET_PARAMS option resulted in an assertion failure. With this fix, a proper error is now thrown in the situation. (Bug #19148246)
  • A segmentation fault occurred in SQLFetch() when SQL_ATTR_CURSOR_TYPE was set to SQL_CURSOR_DYNAMIC. (Bug #18805392)
  • Connector/ODBC quit unexpectedly in SQLForeignKeys() when SQL_MODE was set to ANSI_QUOTES. (Bug #18641824)

New in MySQL Connector/ODBC 5.3.8 (Apr 29, 2017)

  • SECURITY NOTES:
  • Security Fix: The linked OpenSSL library for Connector/ODBC Commercial 5.3.8 has been updated from version 1.0.2j to version 1.0.2k. Versions of OpenSSL prior to 1.0.2k are reported to be vulnerable to 2017-3731, CVE-2017-3732, and CVE-2017-7055.
  • This change does not affect the Oracle-produced MySQL Community build of Connector/ODBC 5.3.8, which uses the yaSSL library instead. (Bug #25615448, CVE-2017-3731, CVE-2017-3732, CVE-2017-7055)
  • BUG FIXES:
  • When error 2006 (“MySQL server has gone away”) occurred, Connector/ODBC wrongly returned the SQL_NO_DATA error. (Bug #25671389)
  • When the SQL_TIMESTAMP_STRUCT was used, if the date portion of a timestamp was populated but the time portion was uninitialized, queries involving the timestamp would fail with a Date overflow error. With this fix, the uninitialized time value is simply ignored. (Bug #25386024)
  • Segmentation faults occurred when catalog, column, or table names that were too long were passed as arguments to metadata functions like SQLColumnPrivileges(),SQLColumns(),SQLTablePrivileges() and SQLTables(). With this fix, proper errors are returned in those cases. (Bug #18796005)
  • An assertion error occurred when calling SQLSetDescField() with SQL_DESC_COUNT as FieldIdentifier, irrespective of the record number set. (Bug #18641633)
  • Connector/ODBC quit unexpectedly when a negative column number was passed as an argument for the SQLGetData() method. (Bug #18636600)
  • When server-side prepared statements were enabled, using the prefetch option caused SQL syntax errors to be returned for queries that contained parameter markers. (Bug #17386788)
  • After the attribute SQL_ATTR_MAX_ROWS had been set for a certain statement handler, a new statement handler also had the same value set automatically. The fix makes sure a new statement handler returns all rows by default. (Bug #17259397, Bug #69554)
  • If the NO_INFORMATION_SCHEMA connection option was set, the SQLTables() function did not return the catalog correctly when a wildcard or SQL_ALL_CATALOGS was used in its arguments. (Bug #14005343)

New in MySQL Connector/ODBC 5.3.7 (Dec 13, 2016)

  • Security Notes:
  • Security Fix: The linked OpenSSL library for Connector/ODBC Commercial 5.3.7 has been updated from version 1.0.1q to version 1.0.2j. Versions of OpenSSL prior to 1.0.2j are reported to be vulnerable to CVE-2016-6304.
  • This change does not affect the Oracle-produced MySQL Community build of Connector/ODBC 5.3.7, which uses the yaSSL library instead. (Bug #24753385, CVE-2016-6304)
  • Functionality Added or Changed:
  • A new configuration option, SSL_MODE, has been introduced for setting the SSL mode of the connection to the server. This option overrides the now deprecated sslverify and SSL_ENFORCE options. See Connector/ODBC DSN Configuration Options for details.
  • Added new configuration option NO_TLS_1_0, NO_TLS_1_1, and NO_TLS_1_2 for controlling TLS versions for encrypting connecting. See Connector/ODBC DSN Configuration Options for details. For more information about connection protocols in MySQL, see Secure Connection Protocols and Ciphers.
  • Bugs Fixed:
  • An assertion failure occurred when mysql_stmt_close() was called on a broken connection.
  • Connector/ODBC could not be built with CMake 3.0.2 or later. The build script has been fixed to correct the issue.

New in MySQL Connector/ODBC 5.3.6 (Jun 29, 2016)

  • Security Notes:
  • Security Fix: The linked OpenSSL library for Connector/ODBC Commercial 5.3.6 has been updated from version 1.0.1m to version 1.0.1q. Versions of OpenSSL prior to 1.0.1q are reported to be vulnerable to CVE-2015-3195.
  • This change does not affect the Oracle-produced MySQL Community build of Connector/ODBC 5.3.6, which uses the yaSSL library instead. (CVE-2015-3195)
  • Functionality Added or Changed:
  • Two new option parameters, DISABLE_SSL_DEFAULT and SSL_ENFORCE, have been introduced for specifying whether the default requirement to use SSL connections is to be followed. See Connector/ODBC Option Parameters for details. (Bug #21027928)
  • Bugs Fixed:
  • The function MySQLGetPrivateProfileStringW() used malloc() to allocate memory and then xfree() to free the allocated memory for a returned value. That caused some issues when certain third-party versions of MySQL client library (like MariaDB 10.x) was used. The issues have been fixed by replacing malloc() with my_malloc(). (Bug #21074676, Bug #76984)
  • Attempt to build Connector/ODBC from source on a Linux platform against the client library and header files shipped with MySQL server 5.7.6 or newer failed. It was due to the changes made to the client library and the header files, to which Connector/ODBC has now been adapted. (Bug #20685833)
  • An application that used ActiveX Data Objects (ADO) and the Connector/ODBC ANSI driver hung after trying to write French characters to a database that used the UTF-8 character set. (Bug #20526062)
  • Calling the SQLGetDiagField function with the DiagIdentifier SQL_DIAG_ROW_COUNT always returned “0,” even if there were updated, deleted, or modified rows. (Bug #16920750)
  • Because Connector/ODBC did not parse comments properly, the parameter markers embedded in comments caused the complaint that SQLBindParameter was not used for all parameters. (Bug #16613308, Bug #53891)

New in MySQL Connector/ODBC 5.3.5 (Jun 29, 2016)

  • Security Fix: Connector/ODBC 5.3 Commercial has been updated to use OpenSSL version 1.0.1m, which has been publicly reported as not vulnerable to CVE-2015-0286.

New in MySQL Connector/ODBC 5.3.4 (Jul 19, 2014)

  • Security Note:
  • Security Fix: The linked OpenSSL library for Connector/ODBC Commercial 5.3.4 has been updated from version 1.0.1g to version 1.0.1h. Versions of OpenSSL prior to and including 1.0.1g are reported to be vulnerable to CVE-2014-0224.
  • This change does not affect the Oracle-produced MySQL Community build of Connector/ODBC 5.3.4, which uses the yaSSL library instead. (CVE-2014-0224)
  • Functionality Added or Changed:
  • Introduced a new DSN configuration option, rsakey, for specifying the full-path name of the PEM file that contains the RSA public key for using the SHA256 authentication plugin of MySQL. See Connector/ODBC DSN Configuration Options for details.
  • Added NULL handle checks in functions exported by Connector/ODBC.

New in MySQL Connector/ODBC 5.3.3 (Jul 19, 2014)

  • Heartbleed Bug
  • Security Fix: Connector/ODBC 5.3 Commercial has been updated to use OpenSSL version 1.0.1g, which has been publicly reported as not vulnerable to CVE-2014-0160. Please see Oracle Note #1645479.1 for further details.
  • Since the only change in Connector/ODBC 5.3.3 is the inclusion of OpenSSL libraries publicly reported as unaffected by CVE-2014-0160, and since Oracle-produced MySQL Community builds use yaSSL libraries, which have been reported as not affected by CVE-2014-0160, Oracle will not produce builds for Connector/ODBC Community for version 5.3.3. This means the Community edition of Connector/ODBC will skip version 5.3.3. (Bug #18533200, CVE-2014-0160)

New in MySQL Connector/ODBC 5.3.2 (Apr 8, 2014)

  • Functionality Added or Changed:
  • Added support for the connection flag DFLT_BIGINT_BIND_STR.
  • Bugs Fixed:
  • Implemented a workaround for a control issue with GtkComboBox and GtkComboBoxEntry, in which the dialog control intercepted the keyboard signals, so that focus could be set to other controls using the keyboard.

New in MySQL Connector/ODBC 5.3.1 Beta (Dec 4, 2013)

  • Functionality Added or Changed:
  • Implemented the SQL_ATTR_RESET_CONNECTION connection attribute, newly introduced in ODBC 3.8. See the ODBC specifications for details. Currently, the connection attribute is supported by the Unicode driver, but not the ANSI driver.
  • Bugs Fixed:
  • Calling SQLBulkOperations() without setting SQLSetStmtAttr resulted in a segmentation fault. (Bug #17714290)
  • A memory leak occurred when using Connector/ODBC to update the contents of a row. (Bug #17653461, Bug #70662)
  • A bad memory access occurred in the ssps_get_out_params function in my_prepared_stmt.c, when a call was made to a stored procedure with any IN parameters coming after the last OUT or INOUT parameter. (Bug #17640929, Bug #70642)
  • A memory leak occurred in SQLConnect() when it was invoked after a call of SQLSetConnectAttr() that used the parameter SQL_ATTR_CURRENT_CATALOG. (Bug #17586844)
  • A memory leak occurred in SQLSetStmtAttr(), because statement deallocation was missing. (Bug #17441507)
  • A segmentation fault occurred when SQLColumns()'s table argument is longer than 256 characters, or its column argument is longer than 129 characters. This fix makes Connector/ODBC return a proper error for the situation. (Bug #17358838)
  • A memory leak occurred in SQLProcedureColumns() when no function or procedure column satisfying the selection condition existed. (Bug #17298721)
  • An assertion failure occurred in SQLDescribeCol() if the column number used is larger than the number of columns in the result set. (Bug #17311065)
  • The function SQLPutData() gave an error when handling a Unicode string that had SQL_NTS given as its string length. (Bug #14810497, Bug #66943)
  • From Connector/ODBC version 5.2.2 onwards, the function SQLForeignKeys() did not work if the connection option NO_INFORMATION_SCHEMA was set. (Bug #13712420, Bug #64307)

New in MySQL Connector/ODBC 5.3.0 Alpha (Oct 25, 2013)

  • Functionality Added or Changed:
  • Added a lock in the ENV structure against simultaneous accesses to an environment handle's connection list, in order to avoid memory access issues that might occur when multiple threads share the same environment handle. (Bug #17240611, Bug #69864)
  • Support for File Data Source Names. (Bug #11746219, Bug #24581)
  • Bookmark support added in MyODBC.
  • Added new variable in CMake configuration files ODBCCP32_LIB for odbccpp32.lib path, and added MYSQLCLIENT_LIB_NAME for linking MySQL client library statically or dynamically by specifying the MySQL client library (libmysql.*, mysqlclient.*, libmysqlclient_r.*, libmysqlclient.*) to be used.
  • Added a new test module for crash bugs (my_crash.c).
  • Added GUI DSN setup dialog for some Unix-based systems.
  • Support of ODBC 3.8 standard: driver self-identification and input/output stream parameters
  • Bugs Fixed:
  • Memory leaks occurred in SQLPrepare() and SQLExecDirect() when SQLBindParamater was used on the SQL statements. This fix frees previous results of mysql_stmt_result_metadata() in order to prevent the memory leaks. (Bug #17400483, Bug #70113)
  • A memory leak occurred in fetch_varlength_columns() while calling SQLExecDirect(), because freeing result_bind buffers requires field_count, which was set to “0” when mysql_stmt_free_result() was called. This fix frees result_bind buffers before calling mysql_stmt_free_result(). (Bug #17441296)
  • The exit condition for a for loop in stringutil.c is changed to avoid a possible out-of-bounds error and the associated reports by Valgrind. (Bug #17397596, Bug #64105)
  • Microsoft Visual Studio 2010 crashed when reading rows from any table in Server Explorer with connections to DSNs made by Connector/ODBC. (Bug #17304031, Bug #69950)
  • When SQL TIME data was converted to the C data type of TIMESTAMP, if the value of the hour field is greater than 24, the date fields did not get set to the current date and the fraction field for seconds did not get set to zero as required by the ODBC specifications. (Bug #17016839, Bug #69545)
  • When trying to create a linked server in Micrsoft SQL Server 2008 to a MySQL server set up with Connector/ODBC as a DSN, the Microsoft SQL Server (if it is a 64-bit version) crashed or the linked server suffered a catastrophic failure (if a 32-bit version of the Microsoft SQL Server is used). (Bug #16604346, Bug #63386)
  • When reading TIME column data using the SQLGetData method into the SQL_C_TYPE_TIME datatype, errors occured when the time string contained more than 6-digits (e.g., 120:53:44). (Bug #16176981, Bug #67793)
  • When called after SQLPrepare, the funciton SQLMoreResults returned SQL_ERROR, instead of SQL_NO_DATA as required by the ODBC specification. (Bug #16101282, Bug #67920)
  • Connector/ODBC used the “;” character instead of a null byte (“\0”) to terminate keyword-value pairs in attribute strings. (Bug #15940689, Bug #66548)
  • When using the Unicode-enabled version of the Connector/ODBC driver to connect to any MySQL server of version 5.5.2 or older, all statements failed with the error message “Server does not support 4-byte encoded UTF8 characters.” (Bug #14838690, Bug #67428)
  • The configured values of a DSN's parameters overrode the values provided through the connection string, instead of the other way round. (Bug #11760574, Bug #52996)

New in MySQL Connector/ODBC 5.2.6 (Oct 10, 2013)

  • Functionality Added or Changed:
  • Added a lock in the ENV structure against simultaneous accesses to an environment handle's connection list, in order to avoid memory access issues that might occur when multiple threads share the same environment handle.
  • Bugs Fixed:
  • Memory leaks occurred in SQLPrepare() and SQLExecDirect() when SQLBindParamater was used on the SQL statements. This fix frees previous results of mysql_stmt_result_metadata() in order to prevent the memory leaks.
  • The exit condition for a for loop in stringutil.c is changed to avoid a possible out-of-bounds error and the associated reports by Valgrind.
  • Microsoft Visual Studio 2010 crashed when reading rows from any table in Server Explorer with connections to DSNs made by Connector/ODBC.
  • When SQL TIME data was converted to the C data type of TIMESTAMP, if the value of the hour field is greater than 24, the date fields did not get set to the current date and the fraction field for seconds did not get set to zero as required by the ODBC specifications.
  • When trying to create a linked server in Micrsoft SQL Server 2008 to a MySQL server set up with Connector/ODBC as a DSN, the Microsoft SQL Server (if it is a 64-bit version) crashed or the linked server suffered a catastrophic failure (if a 32-bit version of the Microsoft SQL Server is used).
  • When reading TIME column data using the SQLGetData method into the SQL_C_TYPE_TIME datatype, errors occured when the time string contained more than 6-digits (e.g., 120:53:44).
  • When called after SQLPrepare, the funciton SQLMoreResults returned SQL_ERROR, instead of SQL_NO_DATA as required by the ODBC specification.
  • Connector/ODBC used the “;” character instead of a null byte (“\0”) to terminate keyword-value pairs in attribute strings.
  • When using the Unicode-enabled version of the Connector/ODBC driver to connect to any MySQL server of version 5.5.2 or older, all statements failed with the error message “Server does not support 4-byte encoded UTF8 characters.”
  • The configured values of a DSN's parameters overrode the values provided through the connection string, instead of the other way round.

New in MySQL Connector/ODBC 5.2.5 (May 7, 2013)

  • Bugs Fixed:
  • The query_print() function could cause a serious error on 32-bit systems due to a 32-bit / 64-bit mismatch in its return value. This error could occur when logging was enabled, for example when using configuration settings such as:
  • [Driver]
  • option=524292
  • (Bug #16367440, Bug #68201)
  • Microsoft Access could experience a severe error when updating a BIT column in view representing a MySQL table, for example through the datasheet interface. (Bug #16287859, Bug #68243)

New in MySQL Connector/ODBC 5.2.4 (May 7, 2013)

  • Functionality Added or Changed:
  • The new connection option can_handle_exp_pwd indicates that your application includes error-handling logic to deal with the error code for an expired password. See Connector/ODBC Connection Parameters for the details of this connection option and the associated SQL state and native error code. See ALTER USER Syntax for details about password expiration for MySQL server accounts.
  • This new option is added to the Windows GUI, through a checkbox Can Handle Expired Password on the Connection tab of the Details dialog.
  • The following reserved words were added to the list returned by the SQLGetInfo() ODBC function, for compatibility with the latest MySQL 5.6 syntax:
  • GET
  • IO_AFTER_GTIDS
  • IO_BEFORE_GTIDS
  • MASTER_BIND
  • ONE_SHOT
  • PARTITION
  • SQL_AFTER_GTIDS
  • SQL_BEFORE_GTIDS
  • Bugs Fixed:
  • When a column with type TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT was retrieved from a table with a binary collation, the text fields were converted to a hexadecimal representation, even though these values were not really BLOBs. The unnecessary conversion could expand the data, causing overflow problems when storing the result values. (Bug #11746572, Bug #27282)

New in MySQL Connector/ODBC 5.2.3 (May 7, 2013)

  • Bugs Fixed:
  • Insert operations could fail if the inserted values contained any bit fields, mapped to table columns declared as bit(1):
  • Data too long for column 'column_name'
  • (Bug #15997361, Bug #67702)
  • The is_minimum_version function could return an incorrect result in some cases where the difference was in the third component of the release number. (Bug #15926340)
  • An application making extensive use of prepared statements could encounter an error:
  • Can't create more than
  • max_prepared_stmt_count statements (current value: 16382)
  • The issue occurred even if SQLFreeStmt() calls were used. The Prepared_stmt_count value grew until it exceeded the internal limit. A workaround was to disable server-side prepared statements. (Bug #14812778, Bug #67340)
  • On a 64-bit system, calls to the SQLBindCol function using indicator variables (through the last parameter) could return incorrect results. (Bug #11766437, Bug #59541)
  • The symbols SQLInstallDriverEx, SQLInstallDriverExW, and SQLRemoveDriverW were exported, causing incompatibility with some commercial ODBC packages such as DataDirect ODBC, and making Connector/ODBC dependent on the unixODBC library libodbcinst.so.1. This issue was first observed in Connector/ODBC 5.1.8. (Bug #11766724, Bug #59900)

New in MySQL Connector/ODBC 5.2.2 (May 7, 2013)

  • Functionality Added or Changed:
  • The implementation of the SQLBindParameter() function was enhanced to support “out” and “inout” parameters when calling stored procedures. Designate the bind parameters intended to hold output values from stored procedures using the type specifiers SQL_PARAM_OUTPUT or SQL_PARAM_INPUT_OUTPUT.
  • Note
  • Currently, the support for “out” and “inout” parameters does not apply to LONGTEXT and LONGBLOB columns.
  • Server-side prepared statements are now enabled by default. To revert to the former behavior, using client-side emulation for prepared statemnts, specify the NO_SSPS option when configuring the DSN.
  • The download page now offers choices of a Unicode driver or an ANSI driver. Now users can get an ANSI driver with the combination of high performance and the latest standard-compliant behavior, rather than staying on the older 3.51 codebase.
  • Bugs Fixed:
  • Improved error handling for bad input data, such as an incorrect SQLSetConnectAttr length. This fix improves reliability in cases such as an ANSI application using a Unicode driver. (Bug #14620420)
  • The string returned by the SQLNativeSql function was not null-terminated as it should be. (Bug #14559721)
  • After executing a stored procedure returning a combination of resultsets and OUT parameters, Connector/ODB would be disconnected from the server. The issue occurred after fetching the result sets and executing a subsequent query. (Bug #14512187)
  • Specifying certain values for the CHARSET option in the connection string could cause a serious error when a query was executed. (Bug #14363601)

New in MySQL Connector/ODBC 5.2.1 (May 7, 2013)

  • Functionality Added or Changed:
  • Driver prepares statements on server.
  • Support of INOUT and OUT parameters.
  • Built against the MySQL server 5.5.27 client library.
  • Bugs Fixed:
  • Close proximity issue when handling OS signals in myodbc. (Bug #14303803)
  • Several catalog or info functions could raise an incorrect error String data, right truncated when only partial information was requested. For example, if the application called SQLDescribeCol(hstmt, ColNumber, ColName, BufferLen, ....), but did not want the column name (ColName == NULL and BufferLen == 0). SQL_SUCCESS_WITH_INFO could also be returned rather than the correct value SQL_SUCCESS. This issue affected many ADO, DAO, and other applications.
  • Affected functions include:
  • Spurious error and incorrect return code:
  • SQLDescribeCol
  • SQLDescribeColA
  • SQLDescribeColW
  • SQLGetInfoA
  • SQLGetInfoW
  • Incorrect return code:
  • SQLColAttribute
  • SQLColAttributeW
  • SQLGetConnectAttr
  • SQLGetConnectAttrW
  • SQLGetCursorName
  • SQLGetCursorNameW
  • SQLGetInfo
  • SQLGetInfoW
  • SQLNativeSql
  • SQLNativeSqlW
  • (Bug #14285620)
  • Long table names crash OBDC driver. (Bug #14085211, Bug #65200)

New in MySQL Connector/ODBC 5.1.12 (May 7, 2013)

  • Functionality Added or Changed:
  • The new connection option can_handle_exp_pwd indicates that your application includes error-handling logic to deal with the error code for an expired password. See Connector/ODBC Connection Parameters for the details of this connection option and the associated SQL state and native error code. See ALTER USER Syntax for details about password expiration for MySQL server accounts.
  • This new option is added to the Windows GUI, through a checkbox Can Handle Expired Password on the Connection tab of the Details dialog.
  • The following reserved words were added to the list returned by the SQLGetInfo() ODBC function, for compatibility with the latest MySQL 5.6 syntax:
  • GET
  • IO_AFTER_GTIDS
  • IO_BEFORE_GTIDS
  • MASTER_BIND
  • ONE_SHOT
  • PARTITION
  • SQL_AFTER_GTIDS
  • SQL_BEFORE_GTIDS
  • Bugs Fixed:
  • The string returned by the SQLNativeSql function was not null-terminated as it should be. (Bug #14559721)
  • Specifying certain values for the CHARSET option in the connection string could cause a serious error when a query was executed. (Bug #14363601)
  • If multiple statements were called using the same statement handle, SQLColumns and possibly other catalog functions could return wrong results. Some field length values were not reset in the descriptor records. The issue occurred even if the statement handle was closed with SQL_CLOSE between the statements. (Bug #14338051)
  • If an application received a SIGPIPE signal, then another SIGPIPE signal immediately after (before the first signal handler was finished), the application could terminate rather than handling the second signal. (Bug #14303803)
  • Several catalog or info functions could raise an incorrect error String data, right truncated when only partial information was requested. For example, if the application called SQLDescribeCol(hstmt, ColNumber, ColName, BufferLen, ....), but did not want the column name (ColName == NULL and BufferLen == 0). SQL_SUCCESS_WITH_INFO could also be returned rather than the correct value SQL_SUCCESS. This issue affected many ADO, DAO, and other applications.
  • Affected functions include:
  • Spurious error and incorrect return code:
  • SQLDescribeCol
  • SQLDescribeColA
  • SQLDescribeColW
  • SQLGetInfoA
  • SQLGetInfoW
  • Incorrect return code:
  • SQLColAttribute
  • SQLColAttributeW
  • SQLGetConnectAttr
  • SQLGetConnectAttrW
  • SQLGetCursorName
  • SQLGetCursorNameW
  • SQLGetInfo
  • SQLGetInfoW
  • SQLNativeSql
  • SQLNativeSqlW
  • (Bug #14285620)
  • Calling the SQLTables function with a very long database or table name could cause a serious error. This fix allows the SQLTables function to accept database and table names with the maximum length of 64 characters. (Bug #14085211)
  • On a 64-bit system, calls to the SQLBindCol function using indicator variables (through the last parameter) could return incorrect results. (Bug #11766437, Bug #59541)
  • The symbols SQLInstallDriverEx, SQLInstallDriverExW, and SQLRemoveDriverW were exported, causing incompatibility with some commercial ODBC packages such as DataDirect ODBC, and making Connector/ODBC dependent on the unixODBC library libodbcinst.so.1. This issue was first observed in Connector/ODBC 5.1.8. (Bug #11766724, Bug #59900)
  • When a column with type TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT was retrieved from a table with a binary collation, the text fields were converted to a hexadecimal representation, even though these values were not really BLOBs. The unnecessary conversion could expand the data, causing overflow problems when storing the result values. (Bug #11746572, Bug #27282)

New in MySQL Connector/ODBC 5.1.11 (May 7, 2013)

  • Functionality Added or Changed:
  • A new connection option, prefetch, allows applications to scroll through large query result sets, N records at a time. See Connector/ODBC Connection Parameters for details.
  • Bugs Fixed:
  • The SQLTables() function did not return the catalog correctly if the wildcard or SQL_ALL_CATALOGS was used. (Bug #13914518)
  • The fraction member in SQL_TIMESTAMP_STRUCT was always set to 0 when a timestamp was retrieved using SQLGetData(). The fix causes the fraction member to be correctly set, with a value representing nanoseconds. This issue did not occur when a result was retrieved as a string (SQLGetData() with SQL_C_CHAR). (Bug #12767740, Bug #60646)
  • Fractional seconds part of timestamp was ignored in prepared statements that use SQLBindParameter and SQL_C_TIMESTAMP type. For example, a prepared query comparing two timestamp values that only differed in the fractional part would consider the values identical. (Bug #12767761, Bug #60648)
  • On Windows platforms, some memory was leaked on each connection attempt due to an incorrect response to a SQLGetDiagRec() call. (Bug #11766029, Bug #59059)

New in MySQL Connector/ODBC 5.1.10 (May 7, 2013)

  • SQLFetch has to return error if indicator pointer is NULL for NULL value. (Bug #13542600)
  • In some cases, a TIMESTAMP field could be described as SQL_NO_NULLS. (Bug #13532987)
  • A failure on one statement causes another statement to fail. (Bug #13097201, Bug #62657)