Details
Description
I've tried to migrate an C++/ADO (not ADO.NET) project from MySQL to MariaDB. While it was easy to replace the MySQL server, I've found a problem with the MariaDB ODBC connector.
Access to the MariaDB is done by the OLEDB to ODBC bridge (MSDASQL). The ADO connection string is something like "Provider=MSDASQL;DSN=TestMariaOdbc". While querying tables with simple fields works as expected, I wasn't able to read values from LONGBLOB columns. The table in question has two columns: id (int), data (longblob). Selecting a row by the id with a data-value of about 2000 bytes leads to the following error:
Error number: 8007000e Out of Memory
|
Code = 8007000e
|
Code meaning = Unknown error 0x8007000E
|
Source = Microsoft Cursor Engine
|
Description = Out of Memory.
|
While performing the query, the memory consumed by the process rapidly grows to more then 1 GB. The same worked with the latest MySQL ODBC driver (5.3.6). I guess that MariaDB ODBC Connector reports at some point the column size (4GB) instead of the actual data size (2KB) and the ODBC bridge tries to allocate an appropriate buffer...