From 72360f270f98ec3fc0516999fb946b9d5f0f839c Mon Sep 17 00:00:00 2001 From: prmoore77 Date: Mon, 4 Mar 2024 09:42:22 -0500 Subject: [PATCH] Fix to client, CMake build, etc. (#31) * Bugfix for closing prepared statements in flight_sql_client.cpp * Updated Python to 3.12 in Dockerfiles * CMake refactors * Fixes --- .github/workflows/build-docker-images.yml | 3 ++- CMakeLists.txt | 2 +- Dockerfile | 10 ++++------ Dockerfile.ci | 2 +- src/flight_sql_client.cpp | 6 ++++-- third_party/JWTCPP_CMakeLists.txt.in | 5 ++++- third_party/SQLite_CMakeLists.txt.in | 2 +- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-docker-images.yml b/.github/workflows/build-docker-images.yml index 55e1186..540f5ab 100644 --- a/.github/workflows/build-docker-images.yml +++ b/.github/workflows/build-docker-images.yml @@ -28,7 +28,7 @@ jobs: - name: Install build requirements run: | - brew install boost gflags + brew install automake boost gflags - name: Configure Project uses: threeal/cmake-action@v1.3.0 @@ -93,6 +93,7 @@ jobs: sudo apt-get install -y \ build-essential \ ninja-build \ + automake \ cmake \ gcc \ git \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 800d407..081abf1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,7 @@ execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/jwt-cpp" ) -set(JWT_CPP_INCLUDE_DIR "${CMAKE_BINARY_DIR}/third_party/src/jwt_cpp_project/include") +set(JWT_CPP_INCLUDE_DIR "${CMAKE_BINARY_DIR}/third_party/jwt-cpp/include") # -------------------------------------------------- diff --git a/Dockerfile b/Dockerfile index b5ec6a8..76c6510 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11.8 +FROM python:3.12.2 ARG TARGETPLATFORM ARG TARGETARCH @@ -13,6 +13,7 @@ RUN apt-get update && \ apt-get dist-upgrade --yes && \ apt-get install -y \ build-essential \ + automake \ cmake \ wget \ gcc \ @@ -80,11 +81,8 @@ COPY --chown=app_user:app_user ./third_party ./third_party COPY --chown=app_user:app_user ./src ./src # Run the CMake build (then cleanup) -RUN mkdir build && \ - cd build && \ - cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/usr/local && \ - cmake --build . --target install && \ - cd .. && \ +RUN cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr/local && \ + cmake --build build --target install && \ rm -rf build src third_party CMakeLists.txt COPY --chown=app_user:app_user ./tls ./tls diff --git a/Dockerfile.ci b/Dockerfile.ci index d5e39b4..5e11299 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -1,4 +1,4 @@ -FROM python:3.11.8 +FROM python:3.12.2 ARG TARGETPLATFORM ARG TARGETARCH diff --git a/src/flight_sql_client.cpp b/src/flight_sql_client.cpp index b5d44cf..da7e749 100644 --- a/src/flight_sql_client.cpp +++ b/src/flight_sql_client.cpp @@ -179,7 +179,8 @@ Status RunMain() { } else if (FLAGS_command == "PreparedStatementExecute") { ARROW_ASSIGN_OR_RAISE(auto prepared_statement, sql_client.Prepare(call_options, FLAGS_query)); - ARROW_ASSIGN_OR_RAISE(info, prepared_statement->Execute()); + ARROW_ASSIGN_OR_RAISE(info, prepared_statement->Execute(call_options)); + ARROW_RETURN_NOT_OK(prepared_statement->Close(call_options)); } else if (FLAGS_command == "PreparedStatementExecuteParameterBinding") { ARROW_ASSIGN_OR_RAISE(auto prepared_statement, sql_client.Prepare({}, FLAGS_query)); auto parameter_schema = prepared_statement->parameter_schema(); @@ -194,7 +195,8 @@ Status RunMain() { result = arrow::RecordBatch::Make(parameter_schema, 1, {int_array}); ARROW_RETURN_NOT_OK(prepared_statement->SetParameters(result)); - ARROW_ASSIGN_OR_RAISE(info, prepared_statement->Execute()); + ARROW_ASSIGN_OR_RAISE(info, prepared_statement->Execute(call_options)); + ARROW_RETURN_NOT_OK(prepared_statement->Close(call_options)); } else if (FLAGS_command == "GetDbSchemas") { ARROW_ASSIGN_OR_RAISE( info, sql_client.GetDbSchemas(call_options, &FLAGS_catalog, &FLAGS_schema)); diff --git a/third_party/JWTCPP_CMakeLists.txt.in b/third_party/JWTCPP_CMakeLists.txt.in index 0d9468a..e29bcd6 100644 --- a/third_party/JWTCPP_CMakeLists.txt.in +++ b/third_party/JWTCPP_CMakeLists.txt.in @@ -10,5 +10,8 @@ ExternalProject_Add( PREFIX ${CMAKE_BINARY_DIR}/third_party GIT_REPOSITORY https://github.com/Thalhammer/jwt-cpp.git GIT_TAG v0.7.0 - BUILD_COMMAND "" # This is a header only library + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/third_party/jwt-cpp + -DJWT_BUILD_EXAMPLES=OFF + BUILD_COMMAND "" # This is a header only library ) diff --git a/third_party/SQLite_CMakeLists.txt.in b/third_party/SQLite_CMakeLists.txt.in index c385bfb..ebce67f 100644 --- a/third_party/SQLite_CMakeLists.txt.in +++ b/third_party/SQLite_CMakeLists.txt.in @@ -8,7 +8,7 @@ include(ExternalProject) # Download and configure SQLite during the CMake configuration step ExternalProject_Add( sqlite_project - URL "https://sqlite.org/2024/sqlite-autoconf-3450000.tar.gz" + URL "https://www.sqlite.org/2024/sqlite-autoconf-3450100.tar.gz" PREFIX "${CMAKE_BINARY_DIR}/third_party/sqlite" CONFIGURE_COMMAND ../sqlite_project/configure "CFLAGS=-DSQLITE_ENABLE_COLUMN_METADATA=1" BUILD_COMMAND make