From f1766d8018c586a1ad8a2ab8bfe943ba5e42feb4 Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 12:36:01 +0530 Subject: [PATCH 1/7] improve(bq_driver): Optimize Log macros for less response time --- .../odbc/bq_client_interface/datasets.cc | 26 ++++--- google/cloud/odbc/bq_client_interface/jobs.cc | 77 +++++++++++-------- .../odbc/bq_client_interface/projects.cc | 8 +- .../cloud/odbc/bq_client_interface/tables.cc | 18 +++-- .../odbc/bq_driver/internal/trace_utils.cc | 9 +++ .../odbc/bq_driver/internal/trace_utils.h | 1 + 6 files changed, 92 insertions(+), 47 deletions(-) diff --git a/google/cloud/odbc/bq_client_interface/datasets.cc b/google/cloud/odbc/bq_client_interface/datasets.cc index 834403ef66..b54d874a95 100644 --- a/google/cloud/odbc/bq_client_interface/datasets.cc +++ b/google/cloud/odbc/bq_client_interface/datasets.cc @@ -13,6 +13,7 @@ // limitations under the License. #include "google/cloud/odbc/bq_client_interface/datasets.h" +#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/dataset_client.h" #include "absl/log/log.h" @@ -25,6 +26,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::DatasetClient; using ::google::cloud::bigquery_v2_minimal_internal::GetDatasetRequest; using ::google::cloud::bigquery_v2_minimal_internal::ListDatasetsRequest; using ::google::cloud::bigquery_v2_minimal_internal::ListFormatDataset; +using ::google::cloud::odbc_bq_driver_internal::LogLevel; +using ::google::cloud::odbc_bq_driver_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; @@ -37,15 +40,16 @@ StatusRecordOr GetDataset(DatasetClient& dataset_client, GetDatasetRequest request; request.set_project_id(project_id); request.set_dataset_id(dataset_id); - LOG(INFO) << "GetDataSet:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetDataSet:: Request body: " << request.DebugString(""); auto response = dataset_client.GetDataset(request, options); if (!response.ok()) { LOG(WARNING) << "GetDataSet:: Request failed: " << response.status(); return StatusRecordOr::ConvertFromStatusOr(response.status()); } - LOG(INFO) << "GetDataSet:: Response body: " - << GetJsonRegResp(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetDataSet:: Response body: " << GetJsonRegResp(*response); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -58,7 +62,8 @@ StatusRecordOr> ListAllDatasets( ListDatasetsRequest request; request.set_project_id(project_id); request.set_all_datasets(true); - LOG(INFO) << "ListAllDatasets:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllDatasets:: Request body: " << request.DebugString(""); StreamRange datasets_response = dataset_client.ListDatasets(request, options); @@ -68,8 +73,9 @@ StatusRecordOr> ListAllDatasets( LOG(ERROR) << "ListAllDatasets:: " << dataset.status().message(); return StatusRecord::ConvertFrom(dataset.status()); } - LOG(INFO) << "ListAllDatasets:: Response body: " - << GetJsonRegResp(*dataset); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllDatasets:: Response body: " + << GetJsonRegResp(*dataset); datasets.push_back(*dataset); } @@ -86,7 +92,8 @@ StatusRecordOr> FilterDatasets( request.set_project_id(project_id); request.set_all_datasets(dataset_filter.all); request.set_filter(dataset_filter.filter); - LOG(INFO) << "FilterDatasets:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterDatasets:: Request body: " << request.DebugString(""); StreamRange datasets_response = dataset_client.ListDatasets(request, options); @@ -97,8 +104,9 @@ StatusRecordOr> FilterDatasets( LOG(ERROR) << "FilterDatasets:: " << dataset.status().message(); return StatusRecord::ConvertFrom(dataset.status()); } - LOG(INFO) << "FilterDatasets:: Response body: " - << GetJsonRegResp(*dataset); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterDatasets:: Response body: " + << GetJsonRegResp(*dataset); datasets.push_back(*dataset); } diff --git a/google/cloud/odbc/bq_client_interface/jobs.cc b/google/cloud/odbc/bq_client_interface/jobs.cc index b54eeab4f8..82c87eab2c 100644 --- a/google/cloud/odbc/bq_client_interface/jobs.cc +++ b/google/cloud/odbc/bq_client_interface/jobs.cc @@ -15,6 +15,7 @@ #include "google/cloud/odbc/bq_client_interface/jobs.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" #include "google/cloud/odbc/bq_client_interface/utils.h" +#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/job_client.h" #include "google/cloud/bigquery/v2/minimal/internal/job_request.h" @@ -38,6 +39,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::PostQueryResults; using ::google::cloud::bigquery_v2_minimal_internal::Projection; using ::google::cloud::bigquery_v2_minimal_internal::QueryRequest; using ::google::cloud::internal::ExponentialBackoffPolicy; +using ::google::cloud::odbc_bq_driver_internal::LogLevel; +using ::google::cloud::odbc_bq_driver_internal::ShouldLog; using google::cloud::odbc_internal::SQLStates; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; @@ -119,7 +122,8 @@ StatusRecordOr GetJob(JobClient& job_client, std::string const& project_id, get_job_request.set_project_id(project_id); get_job_request.set_job_id(job_id); get_job_request.set_location(location); - LOG(INFO) << "GetJob:: Request body: " << get_job_request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetJob:: Request body: " << get_job_request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop([&] { return job_client.GetJob(get_job_request, options); }, @@ -129,7 +133,8 @@ StatusRecordOr GetJob(JobClient& job_client, std::string const& project_id, LOG(WARNING) << "GetJob:: Request failed: " << response.status(); return StatusRecordOr::ConvertFromStatusOr(response.status()); } - LOG(INFO) << "GetJob:: Response body: " << GetJsonRegResp(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetJob:: Response body: " << GetJsonRegResp(*response); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -157,7 +162,8 @@ StatusRecordOr> ListAllJobs( request.set_all_users(false); request.set_max_results(kMaxChildJobsResults); request.set_projection(Projection::Full()); - LOG(INFO) << "ListAllJobs:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllJobs:: Request body: " << request.DebugString(""); StreamRange jobs_response = job_client.ListJobs(request, options); @@ -167,8 +173,9 @@ StatusRecordOr> ListAllJobs( LOG(ERROR) << "ListAllJobs:: " << job.status().message(); return StatusRecord::ConvertFrom(job.status()); } - LOG(INFO) << "ListAllJobs:: Response body: " - << GetJsonRegResp(*job); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllJobs:: Response body: " + << GetJsonRegResp(*job); jobs.push_back(*job); } @@ -186,7 +193,8 @@ StatusRecordOr> ListAllJobs( request.set_all_users(false); request.set_max_results(kMaxChildJobsResults); request.set_projection(Projection::Full()); - LOG(INFO) << "ListAllJobs:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllJobs:: Request body: " << request.DebugString(""); StreamRange jobs_response = job_client.ListJobs(request, options); @@ -197,8 +205,9 @@ StatusRecordOr> ListAllJobs( LOG(ERROR) << "ListAllJobs:: " << job.status().message(); return StatusRecord::ConvertFrom(job.status()); } - LOG(INFO) << "ListAllJobs:: Response body: " - << GetJsonRegResp(*job); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllJobs:: Response body: " + << GetJsonRegResp(*job); jobs.push_back(*job); } @@ -219,8 +228,8 @@ StatusRecordOr> FilterJobs( request.set_state_filter(job_filter.state_filter); request.set_parent_job_id(job_filter.parent_job_id); request.set_projection(job_filter.projection); - - LOG(INFO) << "FilterJobs:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterJobs:: Request body: " << request.DebugString(""); StreamRange jobs_response = job_client.ListJobs(request, options); @@ -230,8 +239,9 @@ StatusRecordOr> FilterJobs( LOG(ERROR) << "FilterJobs:: " << job.status().message(); return StatusRecord::ConvertFrom(job.status()); } - LOG(INFO) << "FilterJobs:: Response body: " - << GetJsonRegResp(*job); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterJobs:: Response body: " + << GetJsonRegResp(*job); jobs.push_back(*job); } @@ -248,8 +258,8 @@ StatusRecordOr InsertJob(JobClient& job_client, request.set_project_id(project_id); request.set_job(job); request.set_json_filter_keys(CreateKeysToFilterOut(job)); - - LOG(INFO) << "InsertJob:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "InsertJob:: Request body: " << request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop([&] { return job_client.InsertJob(request, options); }, @@ -259,7 +269,8 @@ StatusRecordOr InsertJob(JobClient& job_client, LOG(WARNING) << "InsertJob:: Request failed: " << response.status(); return StatusRecordOr::ConvertFromStatusOr(response.status()); } - LOG(INFO) << "InsertJob: Response body: " << GetJsonRegResp(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "InsertJob: Response body: " << GetJsonRegResp(*response); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -280,7 +291,8 @@ StatusRecordOr CancelJob(JobClient& job_client, if (!location.empty()) { request.set_location(location); } - LOG(INFO) << "CancelJob:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "CancelJob:: Request body: " << request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop([&] { return job_client.CancelJob(request, options); }, @@ -290,7 +302,8 @@ StatusRecordOr CancelJob(JobClient& job_client, LOG(WARNING) << "CancelJob:: Request failed: " << response.status(); return StatusRecordOr::ConvertFromStatusOr(response.status()); } - LOG(INFO) << "CancelJob:: Response body: " << GetJsonRegResp(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "CancelJob:: Response body: " << GetJsonRegResp(*response); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -305,8 +318,8 @@ StatusRecordOr Query(JobClient& job_client, post_query_request.set_project_id(project_id); post_query_request.set_query_request(query_request); post_query_request.set_json_filter_keys(CreateKeysToFilterOut(query_request)); - - LOG(INFO) << "Query:: Request body: " << post_query_request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "Query:: Request body: " << post_query_request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop([&] { return job_client.Query(post_query_request, options); }, @@ -317,8 +330,9 @@ StatusRecordOr Query(JobClient& job_client, return StatusRecordOr::ConvertFromStatusOr( response.status()); } - LOG(INFO) << "Query:: Response body: " - << GetJsonRegResp(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "Query:: Response body: " + << GetJsonRegResp(*response); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -364,8 +378,9 @@ StatusRecordOr GetAllQueryResults( << get_query_results_partial.status().message(); return StatusRecord::ConvertFrom(get_query_results_partial.status()); } - LOG(INFO) << "GetAllQueryResults::QueryResults:: Response body: " - << get_query_results_partial->DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetAllQueryResults::QueryResults:: Response body: " + << get_query_results_partial->DebugString(""); // If job_complete is false, there would be no rows and we should wait for // job completion if (!get_query_results_partial->job_complete && @@ -389,8 +404,9 @@ StatusRecordOr GetAllQueryResults( get_query_results_request.set_page_token( get_query_results_partial->page_token); } - LOG(INFO) << "GetAllQueryResults:: Request body: " - << get_query_results_request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetAllQueryResults:: Request body: " + << get_query_results_request.DebugString(""); return get_query_results; } #pragma clang attribute pop @@ -411,9 +427,9 @@ StatusRecordOr FilterQueryResults( chrono_ms(query_results_filter.query_timeout_ms)); get_query_results_request.set_max_results(query_results_filter.max_results); get_query_results_request.set_page_token(query_results_filter.page_token); - - LOG(INFO) << "FilterQueryResults:: Request body: " - << get_query_results_request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterQueryResults:: Request body: " + << get_query_results_request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop( [&] { @@ -427,8 +443,9 @@ StatusRecordOr FilterQueryResults( return StatusRecordOr::ConvertFromStatusOr( response.status()); } - LOG(INFO) << "FilterQueryResults::QueryResults:: Response body: " - << response->DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "FilterQueryResults::QueryResults:: Response body: " + << response->DebugString(""); return StatusRecordOr::ConvertFromStatusOr(*response); } #pragma clang attribute pop diff --git a/google/cloud/odbc/bq_client_interface/projects.cc b/google/cloud/odbc/bq_client_interface/projects.cc index d21cdc2422..24a8f86304 100644 --- a/google/cloud/odbc/bq_client_interface/projects.cc +++ b/google/cloud/odbc/bq_client_interface/projects.cc @@ -14,6 +14,7 @@ #include "google/cloud/odbc/bq_client_interface/projects.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" +#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" #include "google/cloud/odbc/internal/sql_state_constants.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/resourcemanager/v3/projects.pb.h" @@ -27,6 +28,8 @@ using ::google::cloud::Options; using ::google::cloud::bigquery_v2_minimal_internal::ListProjectsRequest; using ::google::cloud::bigquery_v2_minimal_internal::Project; using ::google::cloud::bigquery_v2_minimal_internal::ProjectClient; +using ::google::cloud::odbc_bq_driver_internal::LogLevel; +using ::google::cloud::odbc_bq_driver_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; using ::google::cloud::resourcemanager_v3::ProjectsClient; @@ -70,8 +73,9 @@ StatusRecordOr ConvertFrom( } std::string s_numeric_id = rm_project.name().substr(index + 1); bq_project.numeric_id = std::stoll(s_numeric_id); - LOG(INFO) << "ConvertFrom::Project:: Request body: " - << GetJsonRegResp(bq_project); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ConvertFrom::Project:: Request body: " + << GetJsonRegResp(bq_project); return bq_project; } diff --git a/google/cloud/odbc/bq_client_interface/tables.cc b/google/cloud/odbc/bq_client_interface/tables.cc index d51903cb0c..2623d3ab77 100644 --- a/google/cloud/odbc/bq_client_interface/tables.cc +++ b/google/cloud/odbc/bq_client_interface/tables.cc @@ -15,6 +15,7 @@ #include "google/cloud/odbc/bq_client_interface/tables.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" #include "google/cloud/odbc/bq_client_interface/utils.h" +#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/table_client.h" #include "absl/log/log.h" @@ -27,6 +28,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::ListFormatTable; using ::google::cloud::bigquery_v2_minimal_internal::ListTablesRequest; using ::google::cloud::bigquery_v2_minimal_internal::Table; using ::google::cloud::bigquery_v2_minimal_internal::TableClient; +using ::google::cloud::odbc_bq_driver_internal::LogLevel; +using ::google::cloud::odbc_bq_driver_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; @@ -45,8 +48,8 @@ StatusRecordOr GetTable(TableClient& table_client, request.set_selected_fields(table_filter.selected_fields); request.set_view(table_filter.view); - LOG(INFO) << "GetTable:: Request body: " << request.DebugString(""); - + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetTable:: Request body: " << request.DebugString(""); auto max_retries = options.get(); auto response = RetryLoop([&] { return table_client.GetTable(request, options); }, @@ -56,7 +59,8 @@ StatusRecordOr
GetTable(TableClient& table_client, LOG(WARNING) << "GetTable:: Request failed: " << response.status(); return StatusRecordOr
::ConvertFromStatusOr(response.status()); } - LOG(INFO) << "GetTable:: Response body: " << GetJsonRegResp
(*response); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "GetTable:: Response body: " << GetJsonRegResp
(*response); return StatusRecordOr
::ConvertFromStatusOr(*response); } #pragma clang attribute pop @@ -70,7 +74,8 @@ StatusRecordOr> ListAllTables( request.set_project_id(project_id); request.set_dataset_id(dataset_id); - LOG(INFO) << "ListAllTables:: Request body: " << request.DebugString(""); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllTables:: Request body: " << request.DebugString(""); StreamRange tables_response = table_client.ListTables(request, options); @@ -80,8 +85,9 @@ StatusRecordOr> ListAllTables( LOG(ERROR) << "ListAllTables:: " << table.status().message(); return StatusRecord::ConvertFrom(table.status()); } - LOG(INFO) << "ListAllTables:: Response body: " - << GetJsonRegResp(*table); + LOG_IF(INFO, ShouldLog(LogLevel::kLogInfo)) + << "ListAllTables:: Response body: " + << GetJsonRegResp(*table); tables.push_back(*table); } diff --git a/google/cloud/odbc/bq_driver/internal/trace_utils.cc b/google/cloud/odbc/bq_driver/internal/trace_utils.cc index 9d9ee8aded..bd278362d4 100644 --- a/google/cloud/odbc/bq_driver/internal/trace_utils.cc +++ b/google/cloud/odbc/bq_driver/internal/trace_utils.cc @@ -308,6 +308,15 @@ TraceOptions::CreateTraceOptionsFile( return options_file_; } +bool ShouldLog(LogLevel level) { + if (!kTraceOptsFile.Ok()) return false; + auto const& trace_opts = *kTraceOptsFile.GetValue(); + if (!trace_opts.logging_enabled) { + return false; + } + return static_cast(level) <= static_cast(trace_opts.log_level); +} + std::shared_ptr TraceOptions::GetTraceOption() { return options_file_; } diff --git a/google/cloud/odbc/bq_driver/internal/trace_utils.h b/google/cloud/odbc/bq_driver/internal/trace_utils.h index 6124b12495..0568a1c210 100644 --- a/google/cloud/odbc/bq_driver/internal/trace_utils.h +++ b/google/cloud/odbc/bq_driver/internal/trace_utils.h @@ -171,6 +171,7 @@ void UpdateTraceOption(std::optional log_level, std::string GetLogFileWithIndex(std::string const& log_path); std::string GetFormattedMsg(absl::LogEntry const& entry); +bool ShouldLog(LogLevel level); //////////////////////////////////////////////////////////////////// // Additional Helper methods for validating and formatting strings // based on parameter types. From 2a0cf231e46c19f9e56dd87b5c2ebe24a7797c62 Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 13:16:41 +0530 Subject: [PATCH 2/7] small change --- google/cloud/odbc/bq_client_interface/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/google/cloud/odbc/bq_client_interface/BUILD.bazel b/google/cloud/odbc/bq_client_interface/BUILD.bazel index 1f6355ef30..3f1978ce5c 100644 --- a/google/cloud/odbc/bq_client_interface/BUILD.bazel +++ b/google/cloud/odbc/bq_client_interface/BUILD.bazel @@ -24,6 +24,7 @@ cc_library( hdrs = odbc_bq_client_interface_hdrs, visibility = ["//visibility:public"], deps = [ + "//google/cloud/odbc/bq_driver/internal:trace_utils", "//google/cloud/odbc/internal:odbc_internal", "@com_google_cloud_cpp//:bigquery", "@com_google_cloud_cpp//:experimental-bigquery-rest", From 71579e2881df075ac60f2bc66a8534c391c408a4 Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 13:33:09 +0530 Subject: [PATCH 3/7] small change --- google/cloud/odbc/bq_client_interface/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/odbc/bq_client_interface/BUILD.bazel b/google/cloud/odbc/bq_client_interface/BUILD.bazel index 3f1978ce5c..3660516d28 100644 --- a/google/cloud/odbc/bq_client_interface/BUILD.bazel +++ b/google/cloud/odbc/bq_client_interface/BUILD.bazel @@ -24,7 +24,7 @@ cc_library( hdrs = odbc_bq_client_interface_hdrs, visibility = ["//visibility:public"], deps = [ - "//google/cloud/odbc/bq_driver/internal:trace_utils", + "//google/cloud/odbc:google_cloud_odbc_bq_driver_internal", "//google/cloud/odbc/internal:odbc_internal", "@com_google_cloud_cpp//:bigquery", "@com_google_cloud_cpp//:experimental-bigquery-rest", From 072d3773af7d7677f19f8cc3c93afed104843f42 Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 13:51:10 +0530 Subject: [PATCH 4/7] small new change --- google/cloud/odbc/bq_client_interface/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/odbc/bq_client_interface/BUILD.bazel b/google/cloud/odbc/bq_client_interface/BUILD.bazel index 3660516d28..ce25cd6202 100644 --- a/google/cloud/odbc/bq_client_interface/BUILD.bazel +++ b/google/cloud/odbc/bq_client_interface/BUILD.bazel @@ -24,7 +24,7 @@ cc_library( hdrs = odbc_bq_client_interface_hdrs, visibility = ["//visibility:public"], deps = [ - "//google/cloud/odbc:google_cloud_odbc_bq_driver_internal", + "//google/cloud/odbc/bq_driver/internal:odbc_bq_driver_internal", "//google/cloud/odbc/internal:odbc_internal", "@com_google_cloud_cpp//:bigquery", "@com_google_cloud_cpp//:experimental-bigquery-rest", From 297fab27b6933850426fe9e54406c84a58bd6539 Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 14:03:32 +0530 Subject: [PATCH 5/7] new commit --- google/cloud/odbc/bq_client_interface/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/odbc/bq_client_interface/BUILD.bazel b/google/cloud/odbc/bq_client_interface/BUILD.bazel index ce25cd6202..3660516d28 100644 --- a/google/cloud/odbc/bq_client_interface/BUILD.bazel +++ b/google/cloud/odbc/bq_client_interface/BUILD.bazel @@ -24,7 +24,7 @@ cc_library( hdrs = odbc_bq_client_interface_hdrs, visibility = ["//visibility:public"], deps = [ - "//google/cloud/odbc/bq_driver/internal:odbc_bq_driver_internal", + "//google/cloud/odbc:google_cloud_odbc_bq_driver_internal", "//google/cloud/odbc/internal:odbc_internal", "@com_google_cloud_cpp//:bigquery", "@com_google_cloud_cpp//:experimental-bigquery-rest", From edfc05dfbe028c52bb644d64b8f371de6649822a Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 16:09:18 +0530 Subject: [PATCH 6/7] new changes --- .../odbc/bq_client_interface/datasets.cc | 6 ++-- google/cloud/odbc/bq_client_interface/jobs.cc | 6 ++-- .../odbc/bq_client_interface/projects.cc | 6 ++-- .../cloud/odbc/bq_client_interface/tables.cc | 6 ++-- .../odbc/bq_driver/internal/trace_utils.cc | 16 +++++----- .../odbc/bq_driver/internal/trace_utils.h | 2 +- google/cloud/odbc/internal/CMakeLists.txt | 9 ++++-- google/cloud/odbc/internal/commons.cc | 29 +++++++++++++++++++ google/cloud/odbc/internal/commons.h | 16 ++++++++++ google/cloud/odbc/internal/odbc_internal.bzl | 1 + 10 files changed, 74 insertions(+), 23 deletions(-) create mode 100644 google/cloud/odbc/internal/commons.cc create mode 100644 google/cloud/odbc/internal/commons.h diff --git a/google/cloud/odbc/bq_client_interface/datasets.cc b/google/cloud/odbc/bq_client_interface/datasets.cc index b54d874a95..cb90a97ae4 100644 --- a/google/cloud/odbc/bq_client_interface/datasets.cc +++ b/google/cloud/odbc/bq_client_interface/datasets.cc @@ -13,7 +13,7 @@ // limitations under the License. #include "google/cloud/odbc/bq_client_interface/datasets.h" -#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" +#include "google/cloud/odbc/internal/commons.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/dataset_client.h" #include "absl/log/log.h" @@ -26,8 +26,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::DatasetClient; using ::google::cloud::bigquery_v2_minimal_internal::GetDatasetRequest; using ::google::cloud::bigquery_v2_minimal_internal::ListDatasetsRequest; using ::google::cloud::bigquery_v2_minimal_internal::ListFormatDataset; -using ::google::cloud::odbc_bq_driver_internal::LogLevel; -using ::google::cloud::odbc_bq_driver_internal::ShouldLog; +using ::google::cloud::odbc_internal::LogLevel; +using ::google::cloud::odbc_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; diff --git a/google/cloud/odbc/bq_client_interface/jobs.cc b/google/cloud/odbc/bq_client_interface/jobs.cc index 82c87eab2c..151771b777 100644 --- a/google/cloud/odbc/bq_client_interface/jobs.cc +++ b/google/cloud/odbc/bq_client_interface/jobs.cc @@ -15,7 +15,7 @@ #include "google/cloud/odbc/bq_client_interface/jobs.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" #include "google/cloud/odbc/bq_client_interface/utils.h" -#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" +#include "google/cloud/odbc/internal/commons.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/job_client.h" #include "google/cloud/bigquery/v2/minimal/internal/job_request.h" @@ -39,8 +39,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::PostQueryResults; using ::google::cloud::bigquery_v2_minimal_internal::Projection; using ::google::cloud::bigquery_v2_minimal_internal::QueryRequest; using ::google::cloud::internal::ExponentialBackoffPolicy; -using ::google::cloud::odbc_bq_driver_internal::LogLevel; -using ::google::cloud::odbc_bq_driver_internal::ShouldLog; +using ::google::cloud::odbc_internal::LogLevel; +using ::google::cloud::odbc_internal::ShouldLog; using google::cloud::odbc_internal::SQLStates; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; diff --git a/google/cloud/odbc/bq_client_interface/projects.cc b/google/cloud/odbc/bq_client_interface/projects.cc index 24a8f86304..a542489dfa 100644 --- a/google/cloud/odbc/bq_client_interface/projects.cc +++ b/google/cloud/odbc/bq_client_interface/projects.cc @@ -14,7 +14,7 @@ #include "google/cloud/odbc/bq_client_interface/projects.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" -#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" +#include "google/cloud/odbc/internal/commons.h" #include "google/cloud/odbc/internal/sql_state_constants.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/resourcemanager/v3/projects.pb.h" @@ -28,8 +28,8 @@ using ::google::cloud::Options; using ::google::cloud::bigquery_v2_minimal_internal::ListProjectsRequest; using ::google::cloud::bigquery_v2_minimal_internal::Project; using ::google::cloud::bigquery_v2_minimal_internal::ProjectClient; -using ::google::cloud::odbc_bq_driver_internal::LogLevel; -using ::google::cloud::odbc_bq_driver_internal::ShouldLog; +using ::google::cloud::odbc_internal::LogLevel; +using ::google::cloud::odbc_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; using ::google::cloud::resourcemanager_v3::ProjectsClient; diff --git a/google/cloud/odbc/bq_client_interface/tables.cc b/google/cloud/odbc/bq_client_interface/tables.cc index 2623d3ab77..413b45d86b 100644 --- a/google/cloud/odbc/bq_client_interface/tables.cc +++ b/google/cloud/odbc/bq_client_interface/tables.cc @@ -15,7 +15,7 @@ #include "google/cloud/odbc/bq_client_interface/tables.h" #include "google/cloud/odbc/bq_client_interface/datasets.h" #include "google/cloud/odbc/bq_client_interface/utils.h" -#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" +#include "google/cloud/odbc/internal/commons.h" #include "google/cloud/odbc/internal/status_record_or.h" #include "google/cloud/bigquery/v2/minimal/internal/table_client.h" #include "absl/log/log.h" @@ -28,8 +28,8 @@ using ::google::cloud::bigquery_v2_minimal_internal::ListFormatTable; using ::google::cloud::bigquery_v2_minimal_internal::ListTablesRequest; using ::google::cloud::bigquery_v2_minimal_internal::Table; using ::google::cloud::bigquery_v2_minimal_internal::TableClient; -using ::google::cloud::odbc_bq_driver_internal::LogLevel; -using ::google::cloud::odbc_bq_driver_internal::ShouldLog; +using ::google::cloud::odbc_internal::LogLevel; +using ::google::cloud::odbc_internal::ShouldLog; using google::cloud::odbc_internal::StatusRecord; using google::cloud::odbc_internal::StatusRecordOr; diff --git a/google/cloud/odbc/bq_driver/internal/trace_utils.cc b/google/cloud/odbc/bq_driver/internal/trace_utils.cc index bd278362d4..d1e586a888 100644 --- a/google/cloud/odbc/bq_driver/internal/trace_utils.cc +++ b/google/cloud/odbc/bq_driver/internal/trace_utils.cc @@ -308,14 +308,14 @@ TraceOptions::CreateTraceOptionsFile( return options_file_; } -bool ShouldLog(LogLevel level) { - if (!kTraceOptsFile.Ok()) return false; - auto const& trace_opts = *kTraceOptsFile.GetValue(); - if (!trace_opts.logging_enabled) { - return false; - } - return static_cast(level) <= static_cast(trace_opts.log_level); -} +// bool ShouldLog(LogLevel level) { +// if (!kTraceOptsFile.Ok()) return false; +// auto const& trace_opts = *kTraceOptsFile.GetValue(); +// if (!trace_opts.logging_enabled) { +// return false; +// } +// return static_cast(level) <= static_cast(trace_opts.log_level); +// } std::shared_ptr TraceOptions::GetTraceOption() { return options_file_; diff --git a/google/cloud/odbc/bq_driver/internal/trace_utils.h b/google/cloud/odbc/bq_driver/internal/trace_utils.h index 0568a1c210..df02da6658 100644 --- a/google/cloud/odbc/bq_driver/internal/trace_utils.h +++ b/google/cloud/odbc/bq_driver/internal/trace_utils.h @@ -171,7 +171,7 @@ void UpdateTraceOption(std::optional log_level, std::string GetLogFileWithIndex(std::string const& log_path); std::string GetFormattedMsg(absl::LogEntry const& entry); -bool ShouldLog(LogLevel level); +// bool ShouldLog(LogLevel level); //////////////////////////////////////////////////////////////////// // Additional Helper methods for validating and formatting strings // based on parameter types. diff --git a/google/cloud/odbc/internal/CMakeLists.txt b/google/cloud/odbc/internal/CMakeLists.txt index 52dbfb8ebf..0331067149 100644 --- a/google/cloud/odbc/internal/CMakeLists.txt +++ b/google/cloud/odbc/internal/CMakeLists.txt @@ -20,8 +20,13 @@ endif () add_library( odbc_internal STATIC - diagnostic_records.h odbc_includes.h sql_state_constants.h - status_record_or.cc status_record_or.h version.h) + commons.h + diagnostic_records.h + odbc_includes.h + sql_state_constants.h + status_record_or.cc + status_record_or.h + version.h) target_include_directories(odbc_internal PRIVATE $ENV{ODBC_INCLUDE_PATH}) target_include_directories(odbc_internal PUBLIC ${CMAKE_SOURCE_DIR}) diff --git a/google/cloud/odbc/internal/commons.cc b/google/cloud/odbc/internal/commons.cc new file mode 100644 index 0000000000..6e939d1f7d --- /dev/null +++ b/google/cloud/odbc/internal/commons.cc @@ -0,0 +1,29 @@ +// Copyright 2026 Google LLC +// +// Licensed 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 +// +// https://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. + + +#include "google/cloud/odbc/internal/commons.h" + +namespace google::cloud::odbc_internal { +using ::google::cloud::odbc_bq_driver_internal::kTraceOptsFile; + +bool ShouldLog(LogLevel level) { + if (!kTraceOptsFile.Ok()) return false; + auto const& trace_opts = *kTraceOptsFile.GetValue(); + if (!trace_opts.logging_enabled) { + return false; + } + return static_cast(level) <= static_cast(trace_opts.log_level); +} +} // namespace google::cloud::odbc_internal diff --git a/google/cloud/odbc/internal/commons.h b/google/cloud/odbc/internal/commons.h new file mode 100644 index 0000000000..3f09dfb23d --- /dev/null +++ b/google/cloud/odbc/internal/commons.h @@ -0,0 +1,16 @@ + + +#ifndef CPP_BIGQUERY_ODBC_GOOGLE_CLOUD_ODBC_INTERNAL_COMMONS_H +#define CPP_BIGQUERY_ODBC_GOOGLE_CLOUD_ODBC_INTERNAL_COMMONS_H + +#include "google/cloud/odbc/bq_driver/internal/trace_utils.h" + +namespace google::cloud::odbc_internal { +using ::google::cloud::odbc_bq_driver_internal::LogLevel; + + + +bool ShouldLog(LogLevel level); +} // namespace google::cloud::odbc_internal + +#endif // CPP_BIGQUERY_ODBC_GOOGLE_CLOUD_ODBC_INTERNAL_COMMONS_H diff --git a/google/cloud/odbc/internal/odbc_internal.bzl b/google/cloud/odbc/internal/odbc_internal.bzl index c25d446769..d646094ab7 100644 --- a/google/cloud/odbc/internal/odbc_internal.bzl +++ b/google/cloud/odbc/internal/odbc_internal.bzl @@ -18,6 +18,7 @@ odbc_internal_hdrs = [ "diagnostic_records.h", + "commons.h", "odbc_includes.h", "sql_state_constants.h", "status_record_or.h", From 33a912a6d44d445ec023bf905fa5d43ec836849b Mon Sep 17 00:00:00 2001 From: Neeraj Dwivedi Date: Fri, 31 Jul 2026 16:15:38 +0530 Subject: [PATCH 7/7] change --- google/cloud/odbc/bq_client_interface/BUILD.bazel | 1 - 1 file changed, 1 deletion(-) diff --git a/google/cloud/odbc/bq_client_interface/BUILD.bazel b/google/cloud/odbc/bq_client_interface/BUILD.bazel index 3660516d28..1f6355ef30 100644 --- a/google/cloud/odbc/bq_client_interface/BUILD.bazel +++ b/google/cloud/odbc/bq_client_interface/BUILD.bazel @@ -24,7 +24,6 @@ cc_library( hdrs = odbc_bq_client_interface_hdrs, visibility = ["//visibility:public"], deps = [ - "//google/cloud/odbc:google_cloud_odbc_bq_driver_internal", "//google/cloud/odbc/internal:odbc_internal", "@com_google_cloud_cpp//:bigquery", "@com_google_cloud_cpp//:experimental-bigquery-rest",