From 298c2a81c42b666acd8562664790a8f6f6fac128 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Tue, 28 Jul 2026 13:15:07 -0700 Subject: [PATCH 1/2] ODBC installer fixes - Add installer description to ReadMe - Fix `docs` on Windows to include docs Co-authored-by: justing-bq --- cpp/cmake_modules/DefineOptions.cmake | 2 +- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 23 ++++++++------------ cpp/src/arrow/flight/sql/odbc/README.md | 9 ++++++++ 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/cpp/cmake_modules/DefineOptions.cmake b/cpp/cmake_modules/DefineOptions.cmake index 414f186f1802..bfe4485aa912 100644 --- a/cpp/cmake_modules/DefineOptions.cmake +++ b/cpp/cmake_modules/DefineOptions.cmake @@ -329,7 +329,7 @@ takes precedence over ccache if a storage backend is configured" ON) ARROW_FLIGHT) define_option(ARROW_FLIGHT_SQL_ODBC - "Build the Arrow Flight SQL ODBC extension" + "Build the Arrow Flight SQL ODBC driver" OFF DEPENDS ARROW_FLIGHT_SQL diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index 9e2e7720a94a..181d855fde45 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -173,6 +173,7 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/install/windows/arrow-wix-banner.bmp") + set(ODBC_DOC_INSTALL_DIR "doc") else() if(APPLE) set(CPACK_PACKAGE_FILE_NAME @@ -191,13 +192,8 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) set(ODBC_INSTALL_DIR "arrow-odbc/lib") set(ODBC_DOC_INSTALL_DIR "arrow-odbc/doc") - else() - # Linux - # GH-49595: TODO implement DEB installer - # GH-47977: TODO implement RPM installer - message(STATUS "ODBC_PACKAGE_FORMAT DEB not implemented, see GH-49595") - message(STATUS "ODBC_PACKAGE_FORMAT RPM not implemented, see GH-47977") endif() + # GH-49595: TODO implement DEB installer under `linux-packages` # Install ODBC install(TARGETS arrow_flight_sql_odbc_shared @@ -225,15 +221,15 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) GROUP_READ WORLD_EXECUTE WORLD_READ) - - # Install documentation files - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../NOTICE.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/connection-options.md" - DESTINATION "${ODBC_DOC_INSTALL_DIR}" - COMPONENT Docs) endif() + # Install documentation files + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt" + "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../NOTICE.txt" + "${CMAKE_CURRENT_SOURCE_DIR}/connection-options.md" + DESTINATION "${ODBC_DOC_INSTALL_DIR}" + COMPONENT Docs) + get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) set(CPACK_COMPONENTS_ALL "ArrowFlightSQLODBC" "Docs") @@ -250,7 +246,6 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) # macOS and Linux set(CPACK_GENERATOR "productbuild") endif() - # GH-47877 TODO: create Linux Installer using cpack # Load CPack after all CPACK* variables are set include(CPack) diff --git a/cpp/src/arrow/flight/sql/odbc/README.md b/cpp/src/arrow/flight/sql/odbc/README.md index f863ea851b8a..fb6dd79a2d97 100644 --- a/cpp/src/arrow/flight/sql/odbc/README.md +++ b/cpp/src/arrow/flight/sql/odbc/README.md @@ -144,6 +144,15 @@ After ODBC has been registered, you can run the ODBC tests. It is recommended to .\cpp\build\< release | debug >\< Release | Debug>\arrow-flight-sql-odbc-test.exe ``` +## Installers + +ODBC Windows and macOS installers are uploaded to the CI artifacts for developer use. + +| Operating System | Package Format | +|------------------|----------------| +| Windows | MSI | +| macOS | PKG | + ## Known Limitations - Conversion from timestamp data type with specified time zone value to strings is not supported at the moment. This doesn't impact driver's usage of retrieving timestamp data from Power BI on Windows, and Excel on macOS and Windows. See GH-47504 for more context. From 01846984ea0a2c8762e792c8b0d6b5d7678228fe Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Thu, 30 Jul 2026 15:10:23 -0700 Subject: [PATCH 2/2] Add `connection-options.md` to be installed The installed file would be under `usr/share/doc/arrow2600-flight-sql-odbc-libs/connection-options.md` --- dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in index aca2d468332d..f0e5130d5a60 100644 --- a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in +++ b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in @@ -509,6 +509,7 @@ odbcinst -u -d -n "Apache Arrow Flight SQL ODBC Driver" %files -n %{name}%{so_version}-flight-sql-odbc-libs %defattr(-,root,root,-) %doc README.md +%doc cpp/src/arrow/flight/sql/odbc/connection-options.md %license LICENSE.txt NOTICE.txt %{_datadir}/arrow/flight/sql/odbc/arrow-flight-sql-odbc-template.ini %{_libdir}/libarrow_flight_sql_odbc.so.* @@ -526,6 +527,7 @@ Libraries and header files for Apache Arrow Flight SQL ODBC driver. %files flight-sql-odbc-devel %defattr(-,root,root,-) %doc README.md +%doc cpp/src/arrow/flight/sql/odbc/connection-options.md %license LICENSE.txt NOTICE.txt %{_includedir}/arrow/flight/sql/odbc/ %{_libdir}/cmake/ArrowFlightSqlOdbc/