MySQL Connector/ODBC Release Notes

2.18 Changes in MySQL Connector/ODBC 8.0.24 (2021-04-20, General Availability)

Security Notes

Functionality Added or Changed

  • 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)

Bugs Fixed

  • 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_len size, 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.