This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 45cf928756 GH-47787: [C++][FlightRPC] ODBC `msi` Windows installer
(#48054)
45cf928756 is described below
commit 45cf928756576652c22ba3ec633e8db33f6f7cf0
Author: Alina (Xi) Li <[email protected]>
AuthorDate: Wed Jan 7 18:20:46 2026 -0800
GH-47787: [C++][FlightRPC] ODBC `msi` Windows installer (#48054)
### Rationale for this change
Implement ODBC installer code for Windows. The primary platform for ODBC is
MSVC Windows. The version is set to 1.0.0.
### What changes are included in this PR?
- ODBC msi installer
- Added components to other parts of Arrow, so we can select ODBC component
for cpack
### Are these changes tested?
Tested locally on MSVC Windows
### Are there any user-facing changes?
N/A
* GitHub Issue: #47787
Authored-by: Alina (Xi) Li <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
.github/workflows/cpp_extra.yml | 21 ++++-
.gitignore | 3 +
ci/scripts/cpp_build.sh | 2 +
cpp/CMakePresets.json | 1 +
cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 93 ++++++++++++++++++++-
cpp/src/arrow/flight/sql/odbc/README.md | 67 +++++++++++++++
.../windows/arrow-flight-sql-odbc-patch.xml | 22 +++++
.../odbc/install/windows/arrow-flight-sql-odbc.wxs | 37 ++++++++
.../sql/odbc/install/windows/arrow-wix-banner.bmp | Bin 0 -> 29930 bytes
.../sql/odbc/install/windows/versioninfo.rc.in | 54 ++++++++++++
.../sql/odbc/odbc_impl/config/configuration.cc | 4 +-
.../sql/odbc/odbc_impl/config/configuration.h | 2 +-
12 files changed, 299 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml
index 612175e60f..8a2159062b 100644
--- a/.github/workflows/cpp_extra.yml
+++ b/.github/workflows/cpp_extra.yml
@@ -346,6 +346,7 @@ jobs:
ARROW_BUILD_TYPE: release
ARROW_DEPENDENCY_SOURCE: VCPKG
ARROW_FLIGHT_SQL_ODBC: ON
+ ARROW_FLIGHT_SQL_ODBC_INSTALLER: ON
ARROW_SIMD_LEVEL: AVX2
CMAKE_GENERATOR: Ninja
CMAKE_INSTALL_PREFIX: /usr
@@ -433,7 +434,25 @@ jobs:
# GH-48269 TODO: Enable Flight & Flight SQL testing in MSVC CI
# GH-48547 TODO: enable ODBC tests after GH-48270 and GH-48269 are
resolved.
- # GH-47787 TODO: Build ODBC installer
+ - name: Install WiX Toolset
+ shell: pwsh
+ run: |
+ Invoke-WebRequest -Uri
https://github.com/wixtoolset/wix/releases/download/v6.0.0/wix-cli-x64.msi
-OutFile wix-cli-x64.msi
+ Start-Process -FilePath wix-cli-x64.msi -ArgumentList '/quiet',
'Include_freethreaded=1' -Wait
+ echo "C:\Program Files\WiX Toolset v6.0\bin\" | Out-File -FilePath
$env:GITHUB_PATH -Encoding utf8 -Append
+ - name: Build MSI ODBC installer
+ shell: pwsh
+ run: |
+ # Verify WiX version
+ wix --version
+ cd build/cpp
+ cpack
+ - name: Upload the artifacts to the job
+ uses: actions/upload-artifact@v6
+ with:
+ name: flight-sql-odbc-msi-installer
+ path: build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi
+ if-no-files-found: error
report-extra-cpp:
if: github.event_name == 'schedule' && always()
diff --git a/.gitignore b/.gitignore
index 8354aa8f81..12f12df3aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,3 +107,6 @@ java/.mvn/.develocity/
# rat
filtered_rat.txt
rat.txt
+
+# for ODBC DLL
+*.rc
diff --git a/ci/scripts/cpp_build.sh b/ci/scripts/cpp_build.sh
index 904b5cccb4..79b64dbc2a 100755
--- a/ci/scripts/cpp_build.sh
+++ b/ci/scripts/cpp_build.sh
@@ -65,6 +65,7 @@ if [ "${ARROW_ENABLE_THREADING:-ON}" = "OFF" ]; then
ARROW_FLIGHT=OFF
ARROW_FLIGHT_SQL=OFF
ARROW_FLIGHT_SQL_ODBC=OFF
+ ARROW_FLIGHT_SQL_ODBC_INSTALLER=OFF
ARROW_GCS=OFF
ARROW_JEMALLOC=OFF
ARROW_MIMALLOC=OFF
@@ -213,6 +214,7 @@ else
-DARROW_FLIGHT=${ARROW_FLIGHT:-OFF} \
-DARROW_FLIGHT_SQL=${ARROW_FLIGHT_SQL:-OFF} \
-DARROW_FLIGHT_SQL_ODBC=${ARROW_FLIGHT_SQL_ODBC:-OFF} \
+ -DARROW_FLIGHT_SQL_ODBC_INSTALLER=${ARROW_FLIGHT_SQL_ODBC_INSTALLER:-OFF} \
-DARROW_FUZZING=${ARROW_FUZZING:-OFF} \
-DARROW_GANDIVA_PC_CXX_FLAGS=${ARROW_GANDIVA_PC_CXX_FLAGS:-} \
-DARROW_GANDIVA=${ARROW_GANDIVA:-OFF} \
diff --git a/cpp/CMakePresets.json b/cpp/CMakePresets.json
index e6c2e7e43a..e2904db0de 100644
--- a/cpp/CMakePresets.json
+++ b/cpp/CMakePresets.json
@@ -180,6 +180,7 @@
"ARROW_BUILD_EXAMPLES": "ON",
"ARROW_BUILD_UTILITIES": "ON",
"ARROW_FLIGHT_SQL_ODBC": "ON",
+ "ARROW_FLIGHT_SQL_ODBC_INSTALLER": "ON",
"ARROW_TENSORFLOW": "ON",
"PARQUET_BUILD_EXAMPLES": "ON",
"PARQUET_BUILD_EXECUTABLES": "ON"
diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt
b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt
index ac18a9bc7c..c18a8e5de9 100644
--- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt
+++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt
@@ -19,8 +19,6 @@
# GH-44792: Arrow will switch to C++ 20
set(CMAKE_CXX_STANDARD 20)
-add_custom_target(arrow_flight_sql_odbc)
-
if(WIN32)
if(MSVC_VERSION GREATER_EQUAL 1900)
set(ODBCINST legacy_stdio_definitions odbccp32 shlwapi)
@@ -38,10 +36,29 @@ add_subdirectory(tests)
arrow_install_all_headers("arrow/flight/sql/odbc")
+# ODBC Release information
+# Flight SQL ODBC version uses Arrow version
+set(ODBC_PACKAGE_VERSION_MAJOR "${arrow_VERSION_MAJOR}")
+set(ODBC_PACKAGE_VERSION_MINOR "${arrow_VERSION_MINOR}")
+set(ODBC_PACKAGE_VERSION_PATCH "${arrow_VERSION_PATCH}")
+set(ODBC_PACKAGE_NAME "Apache Arrow Flight SQL ODBC")
+set(ODBC_PACKAGE_VENDOR "Apache Software Foundation")
+
set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc)
if(WIN32)
- list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def)
+ set(VER_FILEVERSION
+
"${ODBC_PACKAGE_VERSION_MAJOR},${ODBC_PACKAGE_VERSION_MINOR},${ODBC_PACKAGE_VERSION_PATCH},0"
+ )
+ set(VER_FILEVERSION_STR
+
${ODBC_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH}
+ )
+ set(VER_COMPANYNAME_STR ${ODBC_PACKAGE_VENDOR})
+ set(VER_PRODUCTNAME_STR ${ODBC_PACKAGE_NAME})
+
+ configure_file("install/windows/versioninfo.rc.in" "install/versioninfo.rc"
@ONLY)
+
+ list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def install/versioninfo.rc)
endif()
add_arrow_lib(arrow_flight_sql_odbc
@@ -75,3 +92,73 @@ add_arrow_lib(arrow_flight_sql_odbc
foreach(LIB_TARGET ${ARROW_FLIGHT_SQL_ODBC_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE
ARROW_FLIGHT_SQL_ODBC_EXPORTING)
endforeach()
+
+# Construct ODBC Windows installer. Only Release installer is supported
+if(ARROW_FLIGHT_SQL_ODBC_INSTALLER)
+
+ include(InstallRequiredSystemLibraries)
+
+ set(CPACK_RESOURCE_FILE_LICENSE
+ "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt")
+
+ set(CPACK_PACKAGE_VERSION_MAJOR ${ODBC_PACKAGE_VERSION_MAJOR})
+ set(CPACK_PACKAGE_VERSION_MINOR ${ODBC_PACKAGE_VERSION_MINOR})
+ set(CPACK_PACKAGE_VERSION_PATCH ${ODBC_PACKAGE_VERSION_PATCH})
+
+ set(CPACK_PACKAGE_NAME ${ODBC_PACKAGE_NAME})
+ set(CPACK_PACKAGE_VENDOR ${ODBC_PACKAGE_VENDOR})
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache Arrow Flight SQL ODBC Driver")
+ set(CPACK_PACKAGE_CONTACT "[email protected]")
+
+ # GH-47876 TODO: set up `arrow_flight_sql_odbc` component for macOS Installer
+ # GH-47877 TODO: set up `arrow_flight_sql_odbc` component for Linux Installer
+ if(WIN32)
+ # Install ODBC and its Arrow dependencies
+ install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
+ DESTINATION bin
+ COMPONENT arrow_flight_sql_odbc)
+ install(TARGETS arrow_shared
+ arrow_compute_shared
+ arrow_flight_shared
+ arrow_flight_sql_shared
+ arrow_flight_sql_odbc_shared
+ RUNTIME_DEPENDENCIES
+ PRE_EXCLUDE_REGEXES
+ "api-ms-.*"
+ "ext-ms-.*"
+ POST_EXCLUDE_REGEXES
+ ".*system32/.*\\.dll"
+ RUNTIME DESTINATION bin COMPONENT arrow_flight_sql_odbc)
+
+ set(CPACK_WIX_EXTRA_SOURCES
+
"${CMAKE_CURRENT_SOURCE_DIR}/install/windows/arrow-flight-sql-odbc.wxs")
+ set(CPACK_WIX_PATCH_FILE
+
"${CMAKE_CURRENT_SOURCE_DIR}/install/windows/arrow-flight-sql-odbc-patch.xml")
+
+ set(CPACK_WIX_UI_BANNER
+ "${CMAKE_CURRENT_SOURCE_DIR}/install/windows/arrow-wix-banner.bmp")
+ endif()
+
+ get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
+ set(CPACK_COMPONENTS_ALL "arrow_flight_sql_odbc")
+
+ if(WIN32)
+ # WiX msi installer on Windows
+ # CPack is compatible with WiX V.5 and V.6
+ set(CPACK_GENERATOR "WIX")
+ set(CPACK_WIX_VERSION 4)
+
+ # Upgrade GUID is required to be unchanged for ODBC installer to upgrade
+ set(CPACK_WIX_UPGRADE_GUID "DBF27A18-F8BF-423F-9E3A-957414D52C4B")
+ set(CPACK_WIX_PRODUCT_GUID "279D087B-93B5-4DC3-BA69-BCF485022A26")
+ endif()
+ # GH-47876 TODO: create macOS Installer using cpack
+ # GH-47877 TODO: create Linux Installer using cpack
+
+ # Load CPack after all CPACK* variables are set
+ include(CPack)
+ cpack_add_component(arrow_flight_sql_odbc
+ DISPLAY_NAME "ODBC library"
+ DESCRIPTION "Apache Arrow Flight SQL ODBC library bin,
required to install"
+ REQUIRED)
+endif()
diff --git a/cpp/src/arrow/flight/sql/odbc/README.md
b/cpp/src/arrow/flight/sql/odbc/README.md
new file mode 100644
index 0000000000..c40ba3636e
--- /dev/null
+++ b/cpp/src/arrow/flight/sql/odbc/README.md
@@ -0,0 +1,67 @@
+<!---
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+## Steps to Register the 64-bit Apache Arrow ODBC driver on Windows
+
+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.
+
+1. Open Windows Power Shell as administrator.
+
+2. Register your ODBC DLL:
+
+ Need to replace <path\to\repo> with actual path to repository in the
commands.
+ 1. `cd to repo.`
+ 2. `cd <path\to\repo>`
+ 3. Run script to register your ODBC DLL as Apache Arrow Flight SQL ODBC
Driver
+ ```
+ .\cpp\src\arrow\flight\sql\odbc\tests\install_odbc.cmd
<path\to\repo>\cpp\build\< release | debug >\< Release |
Debug>\arrow_flight_sql_odbc.dll
+ ```
+ Example 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.
+
+## Steps to Generate Windows Installer
+1. Install WiX toolset v6 from
[GitHub](https://github.com/wixtoolset/wix/releases/).
+2. Build with `ARROW_FLIGHT_SQL_ODBC=ON` and
`ARROW_FLIGHT_SQL_ODBC_INSTALLER=ON`.
+3. `cd` to `build` folder.
+4. Run `cpack`.
+
+If the generation is successful, you will find `Apache Arrow Flight SQL
ODBC-<version>-win64.msi` generated under the `build` folder.
+
+
+## Steps to Enable Logging
+Arrow Flight SQL ODBC driver uses Arrow's internal logging framework. By
default, the log messages are printed to the terminal.
+1. Set environment variable `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.
+- TRACE
+- DEBUG
+- INFO
+- WARNING
+- ERROR
+- FATAL
+
+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.
diff --git
a/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc-patch.xml
b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc-patch.xml
new file mode 100644
index 0000000000..f1a63ce5d3
--- /dev/null
+++
b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc-patch.xml
@@ -0,0 +1,22 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<CPackWiXPatch>
+ <CPackWiXFragment Id="#PRODUCTFEATURE">
+ <ComponentRef Id="ODBCRegistryEntries"/>
+ </CPackWiXFragment>
+</CPackWiXPatch>
diff --git
a/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc.wxs
b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc.wxs
new file mode 100644
index 0000000000..faf009b1ce
--- /dev/null
+++ b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-flight-sql-odbc.wxs
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
+ <Fragment>
+ <DirectoryRef Id="TARGETDIR">
+ <Component Id="ODBCRegistryEntries"
Guid="C348B9F7-5E8D-415D-A001-D92F2D4EA013">
+ <RegistryValue Root='HKLM' Key='Software\ODBC\ODBCINST.INI\ODBC
Drivers' Name='Apache Arrow Flight SQL ODBC Driver' Type='string'
Value='Installed'/>
+
+ <RegistryKey Root="HKLM"
+ Key="Software\ODBC\ODBCINST.INI\Apache Arrow Flight SQL
ODBC Driver">
+ <!-- CM_FP_arrow_flight_sql_odbc.bin.arrow_flight_sql_odbc.dll
is a generated variable value from build\_CPack_Packages\win64\WIX\files.wxs -->
+ <RegistryValue Type="string" Name="DriverODBCVer"
Value="03.00"/>
+ <RegistryValue Type="string" Name="Driver"
Value="[#CM_FP_arrow_flight_sql_odbc.bin.arrow_flight_sql_odbc.dll]"/>
+ <RegistryValue Type="string" Name="Setup"
Value="[#CM_FP_arrow_flight_sql_odbc.bin.arrow_flight_sql_odbc.dll]"/>
+ <RegistryValue Type="integer" Name="UsageCount" Value="1"/>
+ </RegistryKey>
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+</Wix>
diff --git a/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-wix-banner.bmp
b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-wix-banner.bmp
new file mode 100644
index 0000000000..0c82036f4e
Binary files /dev/null and
b/cpp/src/arrow/flight/sql/odbc/install/windows/arrow-wix-banner.bmp differ
diff --git a/cpp/src/arrow/flight/sql/odbc/install/windows/versioninfo.rc.in
b/cpp/src/arrow/flight/sql/odbc/install/windows/versioninfo.rc.in
new file mode 100644
index 0000000000..13024a7a50
--- /dev/null
+++ b/cpp/src/arrow/flight/sql/odbc/install/windows/versioninfo.rc.in
@@ -0,0 +1,54 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#define VER_FILEVERSION @VER_FILEVERSION@
+#define VER_FILEVERSION_STR "@VER_FILEVERSION_STR@\0"
+
+#define VER_PRODUCTVERSION @VER_FILEVERSION@
+#define VER_PRODUCTVERSION_STR "@VER_FILEVERSION_STR@\0"
+
+#define VER_COMPANYNAME_STR "@VER_COMPANYNAME_STR@\0"
+#define VER_PRODUCTNAME_STR "@VER_PRODUCTNAME_STR@\0"
+
+1 VERSIONINFO
+FILEVERSION VER_FILEVERSION
+PRODUCTVERSION VER_PRODUCTVERSION
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+ VALUE "CompanyName", VER_COMPANYNAME_STR
+ VALUE "FileVersion", VER_FILEVERSION_STR
+ VALUE "ProductName", VER_PRODUCTNAME_STR
+ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ /* The following line should only be modified for localized versions.
*/
+ /* It consists of any number of WORD,WORD pairs, with each pair
*/
+ /* describing a language,codepage combination supported by the file.
*/
+ /*
*/
+ /* For example, a file might have values "0x409,1252" indicating that
it */
+ /* supports English language (0x409) in the Windows ANSI codepage
(1252). */
+
+ VALUE "Translation", 0x409, 1252
+
+ END
+END
diff --git a/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.cc
b/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.cc
index df61f1247c..866749e7e0 100644
--- a/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.cc
+++ b/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.cc
@@ -186,12 +186,12 @@ const Connection::ConnPropertyMap&
Configuration::GetProperties() const {
return this->properties_;
}
-std::vector<std::string_view> Configuration::GetCustomKeys() const {
+std::vector<std::string> Configuration::GetCustomKeys() const {
Connection::ConnPropertyMap copy_props(properties_);
for (auto& key : FlightSqlConnection::ALL_KEYS) {
copy_props.erase(std::string(key));
}
- std::vector<std::string_view> keys;
+ std::vector<std::string> keys;
boost::copy(copy_props | boost::adaptors::map_keys,
std::back_inserter(keys));
return keys;
}
diff --git a/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.h
b/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.h
index 0390a57e52..9b59f346b2 100644
--- a/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.h
+++ b/cpp/src/arrow/flight/sql/odbc/odbc_impl/config/configuration.h
@@ -60,7 +60,7 @@ class Configuration {
*/
const Connection::ConnPropertyMap& GetProperties() const;
- std::vector<std::string_view> GetCustomKeys() const;
+ std::vector<std::string> GetCustomKeys() const;
private:
Connection::ConnPropertyMap properties_;