From f9848efd5b64d3502c0d96569e05b463e68b899f Mon Sep 17 00:00:00 2001 From: justing-bq <62349012+justing-bq@users.noreply.github.com> Date: Thu, 26 Feb 2026 10:44:17 -0800 Subject: [PATCH] Disable DSN default values on MacOS --- .../sql/odbc/odbc_impl/config/configuration.cc | 17 +++++++++++++++-- 1 file changed, 15 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 866749e7e0f..0e49613979a 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 @@ -129,16 +129,29 @@ 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)); +#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 + 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)); +#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); RemoveAllKnownKeys(customKeys);