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.1k. 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 #32719727)
References: See also: Bug #32680637.
Previously, if the connection to the server was not used within the period specified by the wait_timeout system variable and the server closed the connection, the client received no notification of the reason. Typically, the client would see Lost connection to MySQL server during query (CR_SERVER_LOST) or MySQL server has gone away (CR_SERVER_GONE_ERROR).
In such cases, the server now writes the reason to the connection before closing it, and the client receives a more informative error message: The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. (ER_CLIENT_INTERACTION_TIMEOUT).
The previous behavior still applies for client connections to older servers and connections to the server by older clients. (WL #14426)
If a classic MySQL protocol connection experiences a server timeout, Connector/ODBC now reports more precise disconnection information from the server. (WL #14426)
Setting PAD_SPACE=1 did not cause CHAR columns to be padded with spaces to their full length, which prevented the MSSQL linked server from working with ENUM and CHAR columns in the MySQL Database. (Bug #32537000)
The ODBC SQLProcedureColumns function returns incomplete results, fetches after usage would only return the first 40 parameters.
The workaround was to increase the
group_concat_max_lensize, for example 'group-concat-max-len = 1000000' under [mysqld]. (Bug #32504915, Bug #102589)
MySQL 8.0.24 added a new ER_CLIENT_INTERACTION_TIMEOUT error code, and it caused the ODBC driver to report the wrong SQLSTATE HY000 instead of 08S01 after the connection is terminated on the server by wait_/_interactive timeout. The ODBC driver is now linked against libmysqlclient 8.0.24 to handle this situation. (Bug #32394545)
Passing a query without parameters to SQLPrepare() would not prepare anything. In some scenarios it would immediately execute such a query, which would be the same as calling the SQLExecDirect() function. In other scenerios it executed without preparing by the using the SQLExecute() function. This could lead towards abnormally long query times. Now, the driver enforces preparation of the statement by the SQLPrepare() function even if the query has no parameters. (Bug #32079486)
Connector/ODBC report ENUM columns as SQL_CHAR as the ODBC standard does not support ENUM, and MS SQL Server expects CHAR data to always be the same fixed length as specified in the column definition. This fixes errors related to new line and tab symbols present in the UNICODE version of the driver. The workaround is to enable SSPS (default) by not setting NO_SSPS=1. (Bug #28783266, Bug #92748)
References: See also: Bug #32537000.