From 677172f81ef0d421447e4cf52ad2d87646c48c93 Mon Sep 17 00:00:00 2001 From: Anshu6250 Date: Tue, 26 May 2026 13:46:20 +0530 Subject: [PATCH 1/3] testing --- .../internal/odbc_sql_execute_utils.cc | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc b/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc index a4480d7f6d..7a9d8bce4c 100644 --- a/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc +++ b/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc @@ -13,6 +13,7 @@ // limitations under the License. #include "google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.h" +#include "google/cloud/odbc/bq_client_interface/setenv.h" #include "google/cloud/odbc/bq_client_interface/utils.h" #include "google/cloud/odbc/bq_driver/internal/odbc_internal_commons.h" #include "google/cloud/odbc/bq_driver/internal/trace_utils.h" @@ -47,6 +48,13 @@ using google::cloud::odbc_bq_driver_internal::StatementHandle; using google::cloud::odbc_internal::SQLStates; using chrono_ms = std::chrono::milliseconds; +#if (!defined(_WIN32) || defined(_WIN64)) && !defined(NO_ARROW) +bool IsGrpcDnsResolverError(StatusRecord const& status) { + return status.message.find("hostname lookup error") != std::string::npos || + status.message.find("DNS query cancelled") != std::string::npos; +} +#endif // (!defined(_WIN32) || defined(_WIN64)) && !defined(NO_ARROW) + StatusRecord ConstructPositionalQueryParams( DescriptorHandle& apd, DescriptorHandle& ipd, std::vector& basic_query_params, bool is_data_buff_req) { @@ -596,7 +604,17 @@ StatusRecord FetchBQDataReadArrow(StatementHandle& stmt_handle, auto read_session_status = bq_client->CreateReadSession(create_read_session_request, options); if (!read_session_status) { - return read_session_status.GetStatusRecord(); + StatusRecord status = read_session_status.GetStatusRecord(); + if (!IsGrpcDnsResolverError(status)) { + return status; + } + google::cloud::odbc_bigquery_client_interface::SetEnv("GRPC_DNS_RESOLVER", + "native"); + read_session_status = + bq_client->CreateReadSession(create_read_session_request, options); + if (!read_session_status) { + return read_session_status.GetStatusRecord(); + } } auto session = *read_session_status; @@ -624,6 +642,16 @@ StatusRecord FetchBQDataReadArrow(StatementHandle& stmt_handle, read_rows_stream = bq_client->GetReadRowsStream(read_rows_request, options); stmt_handle.SetReadRowsStream(std::move(read_rows_stream)); + StatusRecord status = ReadNextResultsFromStream(stmt_handle); + if (status.ok() || !IsGrpcDnsResolverError(status)) { + return status; + } + google::cloud::odbc_bigquery_client_interface::SetEnv("GRPC_DNS_RESOLVER", + "native"); + stmt_handle.ClearReadRowsStream(); + stmt_handle.ClearReadRowsIterator(); + read_rows_stream = bq_client->GetReadRowsStream(read_rows_request, options); + stmt_handle.SetReadRowsStream(std::move(read_rows_stream)); return ReadNextResultsFromStream(stmt_handle); } From a46d0179842509d1468f55ee6d1f26ec0e8da29b Mon Sep 17 00:00:00 2001 From: Anshu6250 Date: Tue, 26 May 2026 17:43:24 +0530 Subject: [PATCH 2/3] test2 --- google/cloud/odbc/bq_client_interface/odbc_bq_client.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/google/cloud/odbc/bq_client_interface/odbc_bq_client.cc b/google/cloud/odbc/bq_client_interface/odbc_bq_client.cc index b596237cb4..7063236863 100644 --- a/google/cloud/odbc/bq_client_interface/odbc_bq_client.cc +++ b/google/cloud/odbc/bq_client_interface/odbc_bq_client.cc @@ -16,6 +16,7 @@ #include "google/cloud/odbc/bq_client_interface/datasets.h" #include "google/cloud/odbc/bq_client_interface/jobs.h" #include "google/cloud/odbc/bq_client_interface/odbc_authentication.h" +#include "google/cloud/odbc/bq_client_interface/setenv.h" #include "google/cloud/odbc/bq_client_interface/projects.h" #include "google/cloud/odbc/bq_client_interface/storage.h" #include "google/cloud/odbc/bq_client_interface/tables.h" @@ -292,6 +293,7 @@ StatusRecordOr> ODBCBQClient::CreateBQClient( read_options.set(ssl_creds); } #endif + SetEnv("GRPC_DNS_RESOLVER", "native"); BigQueryReadClient bigquery_read_client = BigQueryReadClient(MakeBigQueryReadConnection(read_options)); From 1b9a8ab6d0bbbd49a5b3409fc09b711de01b38e3 Mon Sep 17 00:00:00 2001 From: Anshu6250 Date: Wed, 3 Jun 2026 10:10:51 +0530 Subject: [PATCH 3/3] test --- .../bq_driver/internal/odbc_sql_execute_utils.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc b/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc index 7a9d8bce4c..74618afc9a 100644 --- a/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc +++ b/google/cloud/odbc/bq_driver/internal/odbc_sql_execute_utils.cc @@ -18,6 +18,7 @@ #include "google/cloud/odbc/bq_driver/internal/odbc_internal_commons.h" #include "google/cloud/odbc/bq_driver/internal/trace_utils.h" #include +#include ////////////////////////////////////////////////////////////////// // This file has query execution related utilities which can have @@ -608,8 +609,11 @@ StatusRecord FetchBQDataReadArrow(StatementHandle& stmt_handle, if (!IsGrpcDnsResolverError(status)) { return status; } - google::cloud::odbc_bigquery_client_interface::SetEnv("GRPC_DNS_RESOLVER", - "native"); +#ifdef _WIN32 + _putenv_s("GRPC_DNS_RESOLVER", "native"); +#else + setenv("GRPC_DNS_RESOLVER", "native", 1); +#endif read_session_status = bq_client->CreateReadSession(create_read_session_request, options); if (!read_session_status) { @@ -646,8 +650,11 @@ StatusRecord FetchBQDataReadArrow(StatementHandle& stmt_handle, if (status.ok() || !IsGrpcDnsResolverError(status)) { return status; } - google::cloud::odbc_bigquery_client_interface::SetEnv("GRPC_DNS_RESOLVER", - "native"); +#ifdef _WIN32 + _putenv_s("GRPC_DNS_RESOLVER", "native"); +#else + setenv("GRPC_DNS_RESOLVER", "native", 1); +#endif stmt_handle.ClearReadRowsStream(); stmt_handle.ClearReadRowsIterator(); read_rows_stream = bq_client->GetReadRowsStream(read_rows_request, options);