1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-18 21:44:02 +03:00
Sergey Zefirov 3bc8bd8cc6
fix(group by, having): MCOL-5776: GROUP BY/HAVING closer to server's (#3257)
This patch introduces an internal aggregate operator SELECT_SOME that
is automatically added to columns that are not in GROUP BY. It
"computes" some plausible value of the column (actually, last one
passed).

Along the way it fixes incorrect handling of HAVING being transferred
into WHERE, window function handling and a bit of other inconsistencies.
2024-12-20 19:12:32 +00:00

162 lines
4.5 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.10)
project(storagemanager)
include_directories(include ${CMAKE_BINARY_DIR}/include ${ENGINE_COMMON_INCLUDES} ${S3API_DIR})
set(storagemanager_SRCS
src/AppendTask.cpp
src/ClientRequestProcessor.cpp
src/ListDirectoryTask.cpp
src/OpenTask.cpp
src/PingTask.cpp
src/PosixTask.cpp
src/ProcessTask.cpp
src/ReadTask.cpp
src/StatTask.cpp
src/ThreadPool.cpp
src/TruncateTask.cpp
src/UnlinkTask.cpp
src/WriteTask.cpp
src/CopyTask.cpp
src/IOCoordinator.cpp
src/SessionManager.cpp
src/Config.cpp
src/CloudStorage.cpp
src/S3Storage.cpp
src/LocalStorage.cpp
src/Cache.cpp
src/SMLogging.cpp
src/Downloader.cpp
src/Synchronizer.cpp
src/RWLock.cpp
src/MetadataFile.cpp
src/Replicator.cpp
src/Utilities.cpp
src/Ownership.cpp
src/PrefixCache.cpp
src/SyncTask.cpp
src/ListIOTask.cpp
src/TerminateIOTask.cpp
src/KVStorageInitializer.cpp
src/KVPrefixes.cpp
../utils/common/crashtrace.cpp
)
option(SM_TRACE "Enable some tracing output" OFF)
option(SM_LOG_TO_STDERR "Make the logging system also print to stderr" OFF)
if (SM_TRACE)
add_definitions(-DSM_TRACE)
endif()
if (CMAKE_BUILD_TYPE STREQUAL Debug)
add_definitions(-DDEBUG -Werror -Wall)
set(S3_CONFIGURE_OPT --enable-debug)
endif()
if (SM_LOG_TO_STDERR)
add_definitions(-DDEBUG)
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/storagemanager.cnf.in" "${CMAKE_CURRENT_SOURCE_DIR}/storagemanager.cnf" @ONLY)
# get linkage right
link_directories(${CMAKE_BINARY_DIR}/lib)
set(CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/../lib)
add_library(storagemanager SHARED ${storagemanager_SRCS})
add_dependencies(storagemanager marias3 external_boost fdbcs)
target_compile_definitions(storagemanager PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS)
target_link_libraries(storagemanager boost_chrono boost_system boost_thread boost_filesystem boost_regex pthread fdbcs ${S3API_DEPS})
add_executable(StorageManager src/main.cpp)
target_link_libraries(StorageManager storagemanager)
set_property(TARGET StorageManager PROPERTY CXX_STANDARD 20)
set(TMPDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_executable(unit_tests src/unit_tests.cpp)
target_compile_definitions(unit_tests PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS)
target_link_libraries(unit_tests storagemanager)
add_executable(testS3Connection src/testS3Connection.cpp)
target_compile_definitions(testS3Connection PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS)
target_link_libraries(testS3Connection storagemanager)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TMPDIR})
add_custom_command(
TARGET unit_tests PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
${CMAKE_CURRENT_BINARY_DIR}/test_data
)
add_custom_command(
TARGET unit_tests POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/test_data
${CMAKE_CURRENT_BINARY_DIR}/test_data
)
# The includes and lib linkages required to link against cloudio ...
# pretty crazy. When lib dependencies are eventually config'd right,
# change this to only include and link against cloudio.
include_directories(${ENGINE_SRC_DIR}/utils/cloudio ${ENGINE_COMMON_INCLUDES})
add_executable(smcat src/smcat.cpp)
target_link_libraries(smcat storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
add_executable(smput src/smput.cpp)
target_link_libraries(smput storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
add_executable(smls src/smls.cpp)
target_link_libraries(smls storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
add_executable(smrm src/smrm.cpp)
target_link_libraries(smrm storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
add_executable(smps src/smps.cpp)
target_link_libraries(smps storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
add_executable(smkill src/smkill.cpp)
target_link_libraries(smkill storagemanager cloudio
${ENGINE_LDFLAGS}
${ENGINE_EXEC_LIBS}
)
install(TARGETS storagemanager
LIBRARY DESTINATION ${ENGINE_LIBDIR}
COMPONENT columnstore-engine
)
install(TARGETS StorageManager smcat smkill smps smput smls smrm testS3Connection
RUNTIME DESTINATION ${ENGINE_BINDIR}
COMPONENT columnstore-engine
)
install(FILES storagemanager.cnf
DESTINATION ${ENGINE_SYSCONFDIR}/columnstore
COMPONENT columnstore-engine
)
install(FILES storagemanager.cnf
RENAME storagemanager.cnf.example
DESTINATION ${ENGINE_SYSCONFDIR}/columnstore
COMPONENT columnstore-engine
)