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_;

Reply via email to