After the build succeeds, the ODBC DLL will be located in build\debug\Debug for a debug build and build\release\Release for a release build.
Open Windows Power Shell as administrator.
Register your ODBC DLL:
Need to replace <path\to\repo> with actual path to repository in the commands.
cd <path\to\repo>.\cpp\src\arrow\flight\sql\odbc\tests\install_odbc.cmd <path\to\repo>\cpp\build\< release | debug >\< Release | Debug>\arrow_flight_sql_odbc.dllExample command for reference:
.\cpp\src\arrow\flight\sql\odbc\tests\install_odbc.cmd C:\path\to\arrow\cpp\build\release\Release\arrow_flight_sql_odbc.dll
If the registration is successful, then Apache Arrow Flight SQL ODBC Driver should show as an available ODBC driver in the x64 ODBC Driver Manager.
ARROW_FLIGHT_SQL_ODBC=ON and ARROW_FLIGHT_SQL_ODBC_INSTALLER=ON.cd to build folder.cpack.If the generation is successful, you will find Apache Arrow Flight SQL ODBC-<version>-win64.msi generated under the build folder.
Arrow Flight SQL ODBC driver uses Arrow's internal logging framework. By default, the log messages are printed to the terminal.
ARROW_ODBC_LOG_LEVEL to any of the following valid values to enable logging. If ARROW_ODBC_LOG_LEVEL is set to a non-empty string that does not match any of the following values, DEBUG level is used by default.The characters are case-insensitive.
The Windows ODBC driver currently does not support writing log files. ARROW_USE_GLOG is required to write log files, and ARROW_USE_GLOG is disabled on Windows platform since plasma using glog is not fully tested on windows.
Note: GH-47670 running more than 1 tests with logging enabled is not fully supported.
After ODBC has been registered, you can run the ODBC tests. It is recommended to run the ODBC tests locally first.
Run ODBC unit test:
.\cpp\build\< release | debug >\< Release | Debug>\arrow-odbc-spi-impl-test.exe
Set up and run ODBC remote test:
Set up a Dremio open source docker instance:
Run this command inside the docker terminal to create a Dremio open source docker.
docker run -p 9047:9047 -p 31010:31010 -p 45678:45678 -p 32010:32010 -e DREMIO_JAVA_SERVER_EXTRA_OPTS=-Dpaths.dist=file:///opt/dremio/data/dist dremio/dremio-oss
Enable unicode support in Docker:
dremio-env in an editor. The file is located in the /opt/dremio/conf directory.DREMIO_JAVA_SERVER_EXTRA_OPTS property to the following value:DREMIO_JAVA_SERVER_EXTRA_OPTS='-Dsaffron.default.charset=UTF-8 -Dsaffron.default.nationalcharset=UTF-8 -Dsaffron.default.collation.name=UTF-8$en_US'
Navigate to: http://localhost:9047 and create an user account. The account credentials will be used for remote testing.
Create test table:
Run this query inside Dremio
Create Table $scratch.ODBCTest As SELECT CAST(2147483647 AS INTEGER) AS sinteger_max, CAST(9223372036854775807 AS BIGINT) AS sbigint_max, CAST(999999999 AS DECIMAL(38, 0)) AS decimal_positive, CAST(3.40282347E38 AS FLOAT) AS float_max, CAST(1.7976931348623157E308 AS DOUBLE) AS double_max, CAST(true AS BOOLEAN) AS bit_true, CAST(DATE '9999-12-31' AS DATE) AS date_max, CAST(TIME '23:59:59' AS TIME) AS time_max, CAST(TIMESTAMP '9999-12-31 23:59:59' AS TIMESTAMP) AS timestamp_max;
The docker instance only needs to be set up once, and can be re-used for running the tests.
Replace REDACTED with actual Dremio docker credentials in the command. Set environment variable ARROW_FLIGHT_SQL_ODBC_CONN to
driver={Apache Arrow Flight SQL ODBC Driver};HOST=localhost;port=32010;pwd=REDACTED;uid=REDACTED;useEncryption=false;useWideChar=true;
Run ODBC remote test:
.\cpp\build\< release | debug >\< Release | Debug>\arrow-flight-sql-odbc-test.exe