From 246a4db8dec7c6d4b21c9d7583b188e98d6a31e2 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 4 Sep 2022 20:26:41 +0200 Subject: [PATCH] fix C API includes ColumnStore used to include server's mysql.h but link all tools with libmariadb.so There's no guarantee that this would work, even with workarounds it had in dbcon/mysql/sm.cpp Fix: * tools (linked with libmariadb.so) *must* include libmariadb's mysql.h * as a hack prevent service_thd_timezone.h from being loaded into tools, as it conflicts with libmariadb's mysql.h * server plugin *must* include server's mysql.h * also don't link every tool with libmariadb.so, link the helper library (liblibmysqlclient.so) that actually needs it, tools use this helper library, not libmariadb.so directly --- dbcon/joblist/CMakeLists.txt | 17 +++++++++-------- dbcon/mysql/sm.cpp | 3 +-- primitives/primproc/CMakeLists.txt | 2 +- utils/libmysql_client/CMakeLists.txt | 5 +++++ utils/querystats/CMakeLists.txt | 4 ++-- versioning/BRM/CMakeLists.txt | 1 - 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/dbcon/joblist/CMakeLists.txt b/dbcon/joblist/CMakeLists.txt index 0e1e998c8..134a11489 100644 --- a/dbcon/joblist/CMakeLists.txt +++ b/dbcon/joblist/CMakeLists.txt @@ -1,5 +1,13 @@ +include_directories(BEFORE + ${CMAKE_BINARY_DIR}/libmariadb/include + ${CMAKE_SOURCE_DIR}/libmariadb/include) +add_definitions(-DMYSQL_SERVICE_THD_TIMEZONE_INCLUDED) + include_directories( ${ENGINE_COMMON_INCLUDES} ${ENGINE_SRC_DIR}/tools/passwd) + +########### next target ############### + set(joblist_LIB_SRCS anydatalist.cpp batchprimitiveprocessor-jl.cpp @@ -54,15 +62,8 @@ set(joblist_LIB_SRCS windowfunctionstep.cpp ${ENGINE_SRC_DIR}/tools/passwd/secrets.cpp) -########### next target ############### - -add_library(joblist_server STATIC ${joblist_LIB_SRCS}) - -########### next target ############### - -add_definitions(-DMYSQL_SERVICE_THD_TIMEZONE_INCLUDED) - add_library(joblist SHARED ${joblist_LIB_SRCS}) +target_include_directories(joblist BEFORE PUBLIC ${OPENSSL_INCLUDE_DIR}) add_dependencies(joblist loggingcpp) install(TARGETS joblist DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/dbcon/mysql/sm.cpp b/dbcon/mysql/sm.cpp index e5b53d883..a7a3bfa0c 100644 --- a/dbcon/mysql/sm.cpp +++ b/dbcon/mysql/sm.cpp @@ -506,5 +506,4 @@ void cpsm_conhdl_t::write(ByteStream bs) #endif } -} // namespace sm - +} diff --git a/primitives/primproc/CMakeLists.txt b/primitives/primproc/CMakeLists.txt index bb0902027..cf7c6575d 100644 --- a/primitives/primproc/CMakeLists.txt +++ b/primitives/primproc/CMakeLists.txt @@ -32,4 +32,4 @@ add_dependencies(PrimProc loggingcpp) target_include_directories(PrimProc PRIVATE ${Boost_INCLUDE_DIRS}) target_link_libraries(PrimProc ${ENGINE_LDFLAGS} ${NETSNMP_LIBRARIES} ${ENGINE_WRITE_LIBS} threadpool cacheutils dbbc processor) -install(TARGETS PrimProc DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) \ No newline at end of file +install(TARGETS PrimProc DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) diff --git a/utils/libmysql_client/CMakeLists.txt b/utils/libmysql_client/CMakeLists.txt index e37be62a4..4f41b428b 100644 --- a/utils/libmysql_client/CMakeLists.txt +++ b/utils/libmysql_client/CMakeLists.txt @@ -3,6 +3,11 @@ include_directories(BEFORE ${CMAKE_SOURCE_DIR}/libmariadb/include) add_definitions(-DMYSQL_SERVICE_THD_TIMEZONE_INCLUDED) +include_directories(BEFORE + ${CMAKE_BINARY_DIR}/libmariadb/include + ${CMAKE_SOURCE_DIR}/libmariadb/include) +add_definitions(-DMYSQL_SERVICE_THD_TIMEZONE_INCLUDED) + include_directories( ${ENGINE_COMMON_INCLUDES} ) ########### next target ############### diff --git a/utils/querystats/CMakeLists.txt b/utils/querystats/CMakeLists.txt index 9c134280b..72291789b 100644 --- a/utils/querystats/CMakeLists.txt +++ b/utils/querystats/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories(BEFORE - ${CMAKE_BINARY_DIR}/libmariadb/include - ${CMAKE_SOURCE_DIR}/libmariadb/include) + ${CMAKE_BINARY_DIR}/libmariadb/include + ${CMAKE_SOURCE_DIR}/libmariadb/include) add_definitions(-DMYSQL_SERVICE_THD_TIMEZONE_INCLUDED) include_directories( ${ENGINE_COMMON_INCLUDES} ) diff --git a/versioning/BRM/CMakeLists.txt b/versioning/BRM/CMakeLists.txt index 7e419cd97..b9745e3e2 100644 --- a/versioning/BRM/CMakeLists.txt +++ b/versioning/BRM/CMakeLists.txt @@ -113,4 +113,3 @@ add_executable(load_brm ${load_brm_SRCS}) target_link_libraries(load_brm ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS} ${NETSNMP_LIBRARIES}) install(TARGETS load_brm DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) -