From 31eff6c4be7452b17c0380e899782cd5351b0f6c Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Tue, 24 Feb 2026 14:11:34 -0800 Subject: [PATCH 1/2] Remove DSN default values on macOS --- .../sql/odbc/odbc_impl/config/configuration.cc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 75498710d23..da8bf4efede 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 @@ -130,16 +130,30 @@ void Configuration::LoadDsn(const std::string& dsn) { Set(FlightSqlConnection::TOKEN, ReadDsnString(dsn, FlightSqlConnection::TOKEN)); Set(FlightSqlConnection::UID, ReadDsnString(dsn, FlightSqlConnection::UID)); Set(FlightSqlConnection::PWD, ReadDsnString(dsn, FlightSqlConnection::PWD)); - Set(FlightSqlConnection::USE_ENCRYPTION, - ReadDsnString(dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION)); Set(FlightSqlConnection::TRUSTED_CERTS, ReadDsnString(dsn, FlightSqlConnection::TRUSTED_CERTS)); + +#ifndef __APPLE__ + // Windows and Linux + Set(FlightSqlConnection::USE_ENCRYPTION, + ReadDsnString(dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION)); Set(FlightSqlConnection::USE_SYSTEM_TRUST_STORE, ReadDsnString(dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE, DEFAULT_USE_CERT_STORE)); Set(FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, ReadDsnString(dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, DEFAULT_DISABLE_CERT_VERIFICATION)); +#else + // macOS iODBC treats non-empty defaults as the real values when reading from system + // DSN, so we don't pass defaults on macOS. + // GH-49387 TODO: enable default values on macOS + Set(FlightSqlConnection::USE_ENCRYPTION, + ReadDsnString(dsn, FlightSqlConnection::USE_ENCRYPTION)); + Set(FlightSqlConnection::USE_SYSTEM_TRUST_STORE, + ReadDsnString(dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE)); + Set(FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, + ReadDsnString(dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION)); +#endif auto customKeys = ReadAllKeys(dsn); RemoveAllKnownKeys(customKeys); From 2275022726e42b7d5370acb6b3b7f73002d89689 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Tue, 24 Feb 2026 14:52:10 -0800 Subject: [PATCH 2/2] Work on Justin's comment --- .../odbc/odbc_impl/config/configuration.cc | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) 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 da8bf4efede..0d4bcb66005 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 @@ -133,17 +133,7 @@ void Configuration::LoadDsn(const std::string& dsn) { Set(FlightSqlConnection::TRUSTED_CERTS, ReadDsnString(dsn, FlightSqlConnection::TRUSTED_CERTS)); -#ifndef __APPLE__ - // Windows and Linux - Set(FlightSqlConnection::USE_ENCRYPTION, - ReadDsnString(dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION)); - Set(FlightSqlConnection::USE_SYSTEM_TRUST_STORE, - ReadDsnString(dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE, - DEFAULT_USE_CERT_STORE)); - Set(FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, - ReadDsnString(dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, - DEFAULT_DISABLE_CERT_VERIFICATION)); -#else +#ifdef __APPLE__ // macOS iODBC treats non-empty defaults as the real values when reading from system // DSN, so we don't pass defaults on macOS. // GH-49387 TODO: enable default values on macOS @@ -153,6 +143,16 @@ void Configuration::LoadDsn(const std::string& dsn) { ReadDsnString(dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE)); Set(FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, ReadDsnString(dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION)); +#else + // Windows and Linux + Set(FlightSqlConnection::USE_ENCRYPTION, + ReadDsnString(dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION)); + Set(FlightSqlConnection::USE_SYSTEM_TRUST_STORE, + ReadDsnString(dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE, + DEFAULT_USE_CERT_STORE)); + Set(FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, + ReadDsnString(dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION, + DEFAULT_DISABLE_CERT_VERIFICATION)); #endif auto customKeys = ReadAllKeys(dsn);