Release Notes for MariaDB Connector/ODBC 3.1.18


MariaDB Connector/ODBC is a standard ODBC driver for building cross-platform applications on top of MariaDB database products. It is compliant with ODBC 3.5. It is written in C and uses MariaDB Connector/C.

MariaDB Connector/ODBC 3.1.18 was released on 2023-04-13. This release is of General Availability (GA) maturity.

Notable Changes

  • MariaDB Connector/ODBC 3.1.18 uses MariaDB Connector/C 3.3.2.

  • On Windows, client authentication plugins are now statically compiled into MariaDB Connector/ODBC builds.

    • In previous releases, client authentication plugins are installed as separate .dll files.

    • Starting with this release, client authentication plugins do not rely on separate .dll files.

  • On Windows, the pvio_npipe virtual I/O plugin is now statically compiled into MariaDB Connector/ODBC builds. (ODBC-384, ODBC-387)

    • In previous releases, when Connector/ODBC tries to connect via a named pipe, it has an external dependency on pvio_npipe.dll and raises the following error when the library is not found:

      [ma-3.1.17]Plugin pvio_npipe could not be loaded: The specified module was not found. Library path is 'C:\Program Files\MariaDB\MariaDB ODBC Driver 64-bit\plugin\pvio_npipe.dll'
    • Starting with this release, no external dependency is required to connect to a named pipe on Windows.

  • Login timeouts can be set with the SQL_ATTR_LOGIN_TIMEOUT connection attribute. (ODBC-377)

    • In previous releases, the SQL_ATTR_LOGIN_TIMEOUT connection attribute is ignored.

    • Starting with this release, a login timeout can be configured by setting the SQL_ATTR_LOGIN_TIMEOUT connection attribute with the SQLSetConnectAttr() function. The CONN_TIMEOUT connection parameter has precedence over the SQL_ATTR_LOGIN_TIMEOUT statement attribute.

  • When connected to MariaDB Server, query timeouts can be set with the SQL_ATTR_QUERY_TIMEOUT statement attribute. (ODBC-377)

Issues Fixed

  • Connector/ODBC mapped SQL_FLOAT and SQL_C_FLOAT to the wrong internal types, which could cause the application to crash in some cases. (ODBC-374)

    • In previous releases, SQL_FLOAT is mapped to SQL_C_FLOAT, and SQL_C_FLOAT is mapped to SQLFLOAT. The ODBC specification says that SQLFLOAT should be mapped to an 8-byte floating point number, but SQL_C_FLOAT is only a 4-byte floating point number. Due to this difference, fetching a rowset (array of rows) using column-based binding can cause application crashes when Connector/ODBC calculates incorrect boundaries.

    • Starting with this release, SQL_FLOAT is mapped to SQL_C_DOUBLE, and SQL_C_FLOAT is mapped to SQLREAL.

  • When a batch of queries is executed and one of the queries raises an error while attempting to store the result, the application can crash. (ODBC-375)

  • When OPTIMIZE TABLEOPTIMIZE TABLE is executed, Connector/ODBC does not return a resultset. (ODBC-378, ODBC-386)

    • In previous releases, subsequent queries could return unknown errors:

      [ma-3.1.12][10.3.35-MariaDB]Unknown MySQL error
    • Starting with this release, Connector/ODBC properly handles the resultset of OPTIMIZE TABLEOPTIMIZE TABLE.

  • When Connector/ODBC connects with the CLIENT_MULTI_STATEMENTS capability flag enabled, a memory leak can occur. (ODBC-380)

    • With Connector/ODBC, the CLIENT_MULTI_STATEMENTS capability flag is enabled when the OPTION connection parameter bitmask has bit 26 (equivalent to 226 or 67108864) enabled.

  • Connector/ODBC encounters issues with applications that check whether columns have the non-standard auto increment column attribute, such as Microsoft Access and some applications written in Embarcadero RAD Studio. (ODBC-313)

    • In previous releases, applications written in Embarcadero RAD Studio could work around this limitation by making redundant calls to the SQLPrimaryKeys() function, which would cause the information_schema.COLUMNS tableinformation_schema.COLUMNS table to be queried excessively.

    • Starting with this release, Connector/ODBC provides details about the non-standard AUTO_INCREMENT column attribute, so that applications written in Embarcadero RAD Studio do not have to make redundant calls to the SQLPrimaryKeys() function.