From 666b72813b306a6eab8f9758f071b0815e97d129 Mon Sep 17 00:00:00 2001 From: prmoore77 Date: Tue, 2 Apr 2024 10:14:04 -0400 Subject: [PATCH] Closes #33 (#34) --- requirements.txt | 4 ++-- src/library/flight_sql_library.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index d9e62b0..8674c52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ pandas==2.1.* duckdb==0.10.1 click==8.1.* pyarrow==15.0.2 -adbc-driver-flightsql==0.10.* -adbc-driver-manager==0.10.* +adbc-driver-flightsql==0.11.* +adbc-driver-manager==0.11.* diff --git a/src/library/flight_sql_library.cpp b/src/library/flight_sql_library.cpp index 251a187..7ea95b3 100644 --- a/src/library/flight_sql_library.cpp +++ b/src/library/flight_sql_library.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -26,12 +27,15 @@ const int port = 31337; #define RUN_INIT_COMMANDS(serverType, init_sql_commands) \ do { \ if (init_sql_commands != "") { \ - std::vector tokens; \ - boost::split(tokens, init_sql_commands, boost::is_any_of(";")); \ - for (const std::string &init_sql_command: tokens) { \ + std::regex regex_pattern(";(?=(?:[^']*'[^']*')*[^']*$)"); \ + std::sregex_token_iterator iter(init_sql_commands.begin(), init_sql_commands.end(), regex_pattern, -1); \ + std::sregex_token_iterator end; \ + while (iter != end) { \ + std::string init_sql_command = *iter; \ if (init_sql_command.empty()) continue; \ std::cout << "Running Init SQL command: " << std::endl << init_sql_command << ";" << std::endl; \ ARROW_RETURN_NOT_OK(serverType->ExecuteSql(init_sql_command)); \ + ++iter; \ } \ } \ } while (false)