Incompatibility between unixODBC and Firebird ODBC driver

firebirdodbcrUbuntuunixodbc

I'm currently developing a application based in Rcode, ODBC and Firebird.

For that, first I've installed firebird server and unixODBC (both 64 bits since my machine OS is 64-bits). I tried with 32-bits software aswell since Ubuntu multiarch allow it, but that caused another problem (doesnt matter in this subject).

Created database, using firebird isql function (/opt/firebird/bin/isql), and made some fake tables with integer, float, text columns.

I can connect to it using unixODBC isql function (after properly programming DSN and Driver in odbc.ini / odbcinst.ini), but theres a problem:

I can't select tables containing text columns, it gives error std::bad_alloc

After some research, I've discovered slencheck function from unixODBC, using it on my driver returns

slencheck: sizeof(SQLLEN) == 4
slencheck: driver manager and driver differ!!!

How can I modify unixODBC SQLLEN so it became compatible with 64-bits Firebird ODBC driver?

I can't select text columns because of SQLLEN or there's more to this?
I think this odbc's github issue is related to mine

Best Answer

I came to a solution, if anyone is interested:

For any reason, firebird ODBC 64-bits driver downloaded from oficial site comes with SQLLEN = 4 bytes. After some help, I managed to compile driver from source code, and the result seems to work with 8 bytes SQLLEN.

In the compile proccess, I had a BUILD_DRIVER_VERSION error, modifying line 139 (SetupAttributes.h), adding spaces between each number fixed it.