From 7fb31fe16081421ae17b2f66fe31e0c3d0293bb4 Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Sun, 11 Feb 2024 20:00:37 +0100 Subject: [PATCH] Remove ability to disable generic clickhouse components Components like client/server/... are very generic, and there is no point in disabling them, since it does not reduce amount of compiled code a lot anyway (just a few modules for entrypoints, everything else is already included in the clickhouse binary), and eventually they are just symlinks to the clickhouse binary. But there are few, that requires extra libraries, like ODBC bridge or keeper components (and there is also standalone keeper binary compiled with musl), those had been kept. Also add some descriptions for some utils and change exit code to 0 for --help. Signed-off-by: Azat Khuzhin --- programs/CMakeLists.txt | 263 ++++----------------------- programs/benchmark/Benchmark.cpp | 3 +- programs/client/Client.cpp | 1 + programs/compressor/Compressor.cpp | 1 + programs/config_tools.h.in | 15 -- programs/copier/ClusterCopierApp.cpp | 1 + programs/git-import/git-import.cpp | 1 + programs/install/Install.cpp | 3 +- programs/local/LocalServer.cpp | 1 + programs/main.cpp | 97 +++------- programs/su/su.cpp | 1 + 11 files changed, 69 insertions(+), 318 deletions(-) diff --git a/programs/CMakeLists.txt b/programs/CMakeLists.txt index 6e544bac81c..7ebbf52ea7e 100644 --- a/programs/CMakeLists.txt +++ b/programs/CMakeLists.txt @@ -7,35 +7,16 @@ endif () include(${ClickHouse_SOURCE_DIR}/cmake/split_debug_symbols.cmake) # The `clickhouse` binary is a multi purpose tool that contains multiple execution modes (client, server, etc.), -# each of them may be built and linked as a separate library. -# If you do not know what modes you need, turn this option OFF and enable SERVER and CLIENT only. +# So client/server/... is just a symlink to `clickhouse` binary. +# +# But, there are several components that requires extra libraries, like keeper +# requires NuRaft, that regular binary does not requires, so you can disable +# compilation of this components. +# +# If you do not know what modes you need, turn then all. option (ENABLE_CLICKHOUSE_ALL "Enable all ClickHouse modes by default" ON) -option (ENABLE_CLICKHOUSE_SERVER "Server mode (main mode)" ${ENABLE_CLICKHOUSE_ALL}) -option (ENABLE_CLICKHOUSE_CLIENT "Client mode (interactive tui/shell that connects to the server)" - ${ENABLE_CLICKHOUSE_ALL}) - -# https://clickhouse.com/docs/en/operations/utilities/clickhouse-local/ -option (ENABLE_CLICKHOUSE_LOCAL "Local files fast processing mode" ${ENABLE_CLICKHOUSE_ALL}) - -# https://clickhouse.com/docs/en/operations/utilities/clickhouse-benchmark/ -option (ENABLE_CLICKHOUSE_BENCHMARK "Queries benchmarking mode" ${ENABLE_CLICKHOUSE_ALL}) - -option (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG "Configs processor (extract values etc.)" ${ENABLE_CLICKHOUSE_ALL}) - -# https://clickhouse.com/docs/en/operations/utilities/clickhouse-compressor/ -option (ENABLE_CLICKHOUSE_COMPRESSOR "Data compressor and decompressor" ${ENABLE_CLICKHOUSE_ALL}) - -# https://clickhouse.com/docs/en/operations/utilities/clickhouse-copier/ -option (ENABLE_CLICKHOUSE_COPIER "Inter-cluster data copying mode" ${ENABLE_CLICKHOUSE_ALL}) - -option (ENABLE_CLICKHOUSE_FORMAT "Queries pretty-printer and formatter with syntax highlighting" - ${ENABLE_CLICKHOUSE_ALL}) - # https://clickhouse.com/docs/en/operations/utilities/clickhouse-obfuscator/ -option (ENABLE_CLICKHOUSE_OBFUSCATOR "Table data obfuscator (convert real data to benchmark-ready one)" - ${ENABLE_CLICKHOUSE_ALL}) - # https://clickhouse.com/docs/en/operations/utilities/odbc-bridge/ # TODO Also needs NANODBC. if (ENABLE_ODBC AND NOT USE_MUSL) @@ -51,18 +32,12 @@ endif () # https://presentations.clickhouse.com/matemarketing_2020/ option (ENABLE_CLICKHOUSE_GIT_IMPORT "A tool to analyze Git repositories" ${ENABLE_CLICKHOUSE_ALL}) -option (ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER "A tool to export table data files to be later put to a static files web server" ${ENABLE_CLICKHOUSE_ALL}) - option (ENABLE_CLICKHOUSE_KEEPER "ClickHouse alternative to ZooKeeper" ${ENABLE_CLICKHOUSE_ALL}) option (ENABLE_CLICKHOUSE_KEEPER_CONVERTER "Util allows to convert ZooKeeper logs and snapshots into clickhouse-keeper snapshot" ${ENABLE_CLICKHOUSE_ALL}) option (ENABLE_CLICKHOUSE_KEEPER_CLIENT "ClickHouse Keeper Client" ${ENABLE_CLICKHOUSE_ALL}) -option (ENABLE_CLICKHOUSE_SU "A tool similar to 'su'" ${ENABLE_CLICKHOUSE_ALL}) - -option (ENABLE_CLICKHOUSE_DISKS "A tool to manage disks" ${ENABLE_CLICKHOUSE_ALL}) - if (NOT ENABLE_NURAFT) # RECONFIGURE_MESSAGE_LEVEL should not be used here, # since ENABLE_NURAFT is set to OFF for FreeBSD and Darwin. @@ -71,27 +46,7 @@ if (NOT ENABLE_NURAFT) set(ENABLE_CLICKHOUSE_KEEPER_CONVERTER OFF) endif() -option(ENABLE_CLICKHOUSE_INSTALL "Install ClickHouse without .deb/.rpm/.tgz packages (having the binary only)" ${ENABLE_CLICKHOUSE_ALL}) - -message(STATUS "ClickHouse modes:") - -if (NOT ENABLE_CLICKHOUSE_SERVER) - message(WARNING "ClickHouse server mode is not going to be built.") -else() - message(STATUS "Server mode: ON") -endif() - -if (NOT ENABLE_CLICKHOUSE_CLIENT) - message(WARNING "ClickHouse client mode is not going to be built. You won't be able to connect to the server and run tests") -else() - message(STATUS "Client mode: ON") -endif() - -if (ENABLE_CLICKHOUSE_LOCAL) - message(STATUS "Local mode: ON") -else() - message(STATUS "Local mode: OFF") -endif() +message(STATUS "ClickHouse extra components:") if (ENABLE_CLICKHOUSE_SELF_EXTRACTING) message(STATUS "Self-extracting executable: ON") @@ -99,42 +54,6 @@ else() message(STATUS "Self-extracting executable: OFF") endif() -if (ENABLE_CLICKHOUSE_BENCHMARK) - message(STATUS "Benchmark mode: ON") -else() - message(STATUS "Benchmark mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG) - message(STATUS "Extract from config mode: ON") -else() - message(STATUS "Extract from config mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_COMPRESSOR) - message(STATUS "Compressor mode: ON") -else() - message(STATUS "Compressor mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_COPIER) - message(STATUS "Copier mode: ON") -else() - message(STATUS "Copier mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_FORMAT) - message(STATUS "Format mode: ON") -else() - message(STATUS "Format mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_OBFUSCATOR) - message(STATUS "Obfuscator mode: ON") -else() - message(STATUS "Obfuscator mode: OFF") -endif() - if (ENABLE_CLICKHOUSE_ODBC_BRIDGE) message(STATUS "ODBC bridge mode: ON") else() @@ -147,18 +66,6 @@ else() message(STATUS "Library bridge mode: OFF") endif() -if (ENABLE_CLICKHOUSE_INSTALL) - message(STATUS "ClickHouse install: ON") -else() - message(STATUS "ClickHouse install: OFF") -endif() - -if (ENABLE_CLICKHOUSE_GIT_IMPORT) - message(STATUS "ClickHouse git-import: ON") -else() - message(STATUS "ClickHouse git-import: OFF") -endif() - if (ENABLE_CLICKHOUSE_KEEPER) message(STATUS "ClickHouse keeper mode: ON") else() @@ -177,19 +84,6 @@ else() message(STATUS "ClickHouse keeper-client mode: OFF") endif() - -if (ENABLE_CLICKHOUSE_DISKS) - message(STATUS "Clickhouse disks mode: ON") -else() - message(STATUS "ClickHouse disks mode: OFF") -endif() - -if (ENABLE_CLICKHOUSE_SU) - message(STATUS "ClickHouse su: ON") -else() - message(STATUS "ClickHouse su: OFF") -endif() - configure_file (config_tools.h.in ${CONFIG_INCLUDE_PATH}/config_tools.h) macro(clickhouse_target_link_split_lib target name) @@ -272,42 +166,6 @@ endif () target_link_libraries (clickhouse PRIVATE clickhouse_common_io string_utils ${HARMFUL_LIB}) target_include_directories (clickhouse PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) -if (ENABLE_CLICKHOUSE_SERVER) - clickhouse_target_link_split_lib(clickhouse server) -endif () -if (ENABLE_CLICKHOUSE_CLIENT) - clickhouse_target_link_split_lib(clickhouse client) -endif () -if (ENABLE_CLICKHOUSE_LOCAL) - clickhouse_target_link_split_lib(clickhouse local) -endif () -if (ENABLE_CLICKHOUSE_BENCHMARK) - clickhouse_target_link_split_lib(clickhouse benchmark) -endif () -if (ENABLE_CLICKHOUSE_COPIER) - clickhouse_target_link_split_lib(clickhouse copier) -endif () -if (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG) - clickhouse_target_link_split_lib(clickhouse extract-from-config) -endif () -if (ENABLE_CLICKHOUSE_COMPRESSOR) - clickhouse_target_link_split_lib(clickhouse compressor) -endif () -if (ENABLE_CLICKHOUSE_FORMAT) - clickhouse_target_link_split_lib(clickhouse format) -endif () -if (ENABLE_CLICKHOUSE_OBFUSCATOR) - clickhouse_target_link_split_lib(clickhouse obfuscator) -endif () -if (ENABLE_CLICKHOUSE_GIT_IMPORT) - clickhouse_target_link_split_lib(clickhouse git-import) -endif () -if (ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER) - clickhouse_target_link_split_lib(clickhouse static-files-disk-uploader) -endif () -if (ENABLE_CLICKHOUSE_SU) - clickhouse_target_link_split_lib(clickhouse su) -endif () if (ENABLE_CLICKHOUSE_KEEPER) clickhouse_target_link_split_lib(clickhouse keeper) endif() @@ -317,83 +175,41 @@ endif() if (ENABLE_CLICKHOUSE_KEEPER_CLIENT) clickhouse_target_link_split_lib(clickhouse keeper-client) endif() -if (ENABLE_CLICKHOUSE_INSTALL) - clickhouse_target_link_split_lib(clickhouse install) -endif () -if (ENABLE_CLICKHOUSE_DISKS) - clickhouse_target_link_split_lib(clickhouse disks) -endif () +clickhouse_target_link_split_lib(clickhouse install) set (CLICKHOUSE_BUNDLE) +macro(clickhouse_program_install name lib_name) + clickhouse_target_link_split_lib(clickhouse ${lib_name}) + add_custom_target (${name} ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse ${name} DEPENDS clickhouse) + install (FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) + list(APPEND CLICKHOUSE_BUNDLE ${name}) +endmacro() + if (ENABLE_CLICKHOUSE_SELF_EXTRACTING) list(APPEND CLICKHOUSE_BUNDLE self-extracting) endif () -if (NOT BUILD_STANDALONE_KEEPER) - add_custom_target (ch ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse ch DEPENDS clickhouse) -endif() -if (ENABLE_CLICKHOUSE_SERVER) - add_custom_target (clickhouse-server ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-server DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-server" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-server) -endif () -if (ENABLE_CLICKHOUSE_CLIENT) - add_custom_target (clickhouse-client ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-client DEPENDS clickhouse) - add_custom_target (chc ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse chc DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-client" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-client) -endif () -if (ENABLE_CLICKHOUSE_LOCAL) - add_custom_target (clickhouse-local ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-local DEPENDS clickhouse) - add_custom_target (chl ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse chl DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-local" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-local) -endif () -if (ENABLE_CLICKHOUSE_BENCHMARK) - add_custom_target (clickhouse-benchmark ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-benchmark DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-benchmark" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-benchmark) -endif () -if (ENABLE_CLICKHOUSE_COPIER) - add_custom_target (clickhouse-copier ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-copier DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-copier" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-copier) -endif () -if (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG) - add_custom_target (clickhouse-extract-from-config ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-extract-from-config DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-extract-from-config" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-extract-from-config) -endif () -if (ENABLE_CLICKHOUSE_COMPRESSOR) - add_custom_target (clickhouse-compressor ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-compressor DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-compressor" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-compressor) -endif () -if (ENABLE_CLICKHOUSE_FORMAT) - add_custom_target (clickhouse-format ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-format DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-format" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-format) -endif () -if (ENABLE_CLICKHOUSE_OBFUSCATOR) - add_custom_target (clickhouse-obfuscator ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-obfuscator DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-obfuscator" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-obfuscator) -endif () -if (ENABLE_CLICKHOUSE_GIT_IMPORT) - add_custom_target (clickhouse-git-import ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-git-import DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-git-import" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-git-import) -endif () -if (ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER) - add_custom_target (clickhouse-static-files-disk-uploader ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-static-files-disk-uploader DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-static-files-disk-uploader" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-static-files-disk-uploader) -endif () -if (ENABLE_CLICKHOUSE_SU) - add_custom_target (clickhouse-su ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-su DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-su" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-su) -endif () +clickhouse_program_install(clickhouse-server server) + +# client +clickhouse_program_install(clickhouse-client client) +add_custom_target (chc ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse chc DEPENDS clickhouse) + +# local +clickhouse_program_install(clickhouse-local local) +add_custom_target (chl ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse chl DEPENDS clickhouse) +add_custom_target (ch ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse ch DEPENDS clickhouse) + +clickhouse_program_install(clickhouse-benchmark benchmark) +clickhouse_program_install(clickhouse-copier copier) +clickhouse_program_install(clickhouse-extract-from-config extract-from-config) +clickhouse_program_install(clickhouse-compressor compressor) +clickhouse_program_install(clickhouse-format format) +clickhouse_program_install(clickhouse-obfuscator obfuscator) +clickhouse_program_install(clickhouse-git-import git-import) +clickhouse_program_install(clickhouse-static-files-disk-uploader static-files-disk-uploader) +clickhouse_program_install(clickhouse-disks disks) +clickhouse_program_install(clickhouse-su su) if (ENABLE_CLICKHOUSE_KEEPER) if (NOT BUILD_STANDALONE_KEEPER AND CREATE_KEEPER_SYMLINK) @@ -423,11 +239,6 @@ if (ENABLE_CLICKHOUSE_KEEPER_CLIENT) list(APPEND CLICKHOUSE_BUNDLE clickhouse-keeper-client) endif () -if (ENABLE_CLICKHOUSE_DISKS) - add_custom_target (clickhouse-disks ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-disks DEPENDS clickhouse) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/clickhouse-disks" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse) - list(APPEND CLICKHOUSE_BUNDLE clickhouse-disks) -endif () add_custom_target (clickhouse-bundle ALL DEPENDS ${CLICKHOUSE_BUNDLE}) diff --git a/programs/benchmark/Benchmark.cpp b/programs/benchmark/Benchmark.cpp index 59fc6c0c17f..961c678b936 100644 --- a/programs/benchmark/Benchmark.cpp +++ b/programs/benchmark/Benchmark.cpp @@ -640,7 +640,8 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv) { std::cout << "Usage: " << argv[0] << " [options] < queries.txt\n"; std::cout << desc << "\n"; - return 1; + std::cout << "\nSee also: https://clickhouse.com/docs/en/operations/utilities/clickhouse-benchmark/\n"; + return 0; } print_stacktrace = options.count("stacktrace"); diff --git a/programs/client/Client.cpp b/programs/client/Client.cpp index cc142470d7f..fdd262f185d 100644 --- a/programs/client/Client.cpp +++ b/programs/client/Client.cpp @@ -1000,6 +1000,7 @@ void Client::printHelpMessage(const OptionsDescription & options_description) std::cout << options_description.external_description.value() << "\n"; std::cout << options_description.hosts_and_ports_description.value() << "\n"; std::cout << "In addition, --param_name=value can be specified for substitution of parameters for parametrized queries.\n"; + std::cout << "\nSee also: https://clickhouse.com/docs/en/integrations/sql-clients/cli\n"; } diff --git a/programs/compressor/Compressor.cpp b/programs/compressor/Compressor.cpp index cc25747702a..7125fdc744f 100644 --- a/programs/compressor/Compressor.cpp +++ b/programs/compressor/Compressor.cpp @@ -100,6 +100,7 @@ int mainEntryClickHouseCompressor(int argc, char ** argv) std::cout << "Usage: " << argv[0] << " [options] < INPUT > OUTPUT" << std::endl; std::cout << "Usage: " << argv[0] << " [options] INPUT OUTPUT" << std::endl; std::cout << desc << std::endl; + std::cout << "\nSee also: https://clickhouse.com/docs/en/operations/utilities/clickhouse-compressor/\n"; return 0; } diff --git a/programs/config_tools.h.in b/programs/config_tools.h.in index 65ef3ca762b..50a1de5628b 100644 --- a/programs/config_tools.h.in +++ b/programs/config_tools.h.in @@ -2,23 +2,8 @@ #pragma once -#cmakedefine01 ENABLE_CLICKHOUSE_SERVER -#cmakedefine01 ENABLE_CLICKHOUSE_CLIENT -#cmakedefine01 ENABLE_CLICKHOUSE_LOCAL -#cmakedefine01 ENABLE_CLICKHOUSE_BENCHMARK -#cmakedefine01 ENABLE_CLICKHOUSE_PERFORMANCE_TEST -#cmakedefine01 ENABLE_CLICKHOUSE_COPIER -#cmakedefine01 ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG -#cmakedefine01 ENABLE_CLICKHOUSE_COMPRESSOR -#cmakedefine01 ENABLE_CLICKHOUSE_FORMAT -#cmakedefine01 ENABLE_CLICKHOUSE_OBFUSCATOR -#cmakedefine01 ENABLE_CLICKHOUSE_GIT_IMPORT -#cmakedefine01 ENABLE_CLICKHOUSE_INSTALL #cmakedefine01 ENABLE_CLICKHOUSE_ODBC_BRIDGE #cmakedefine01 ENABLE_CLICKHOUSE_LIBRARY_BRIDGE #cmakedefine01 ENABLE_CLICKHOUSE_KEEPER #cmakedefine01 ENABLE_CLICKHOUSE_KEEPER_CLIENT #cmakedefine01 ENABLE_CLICKHOUSE_KEEPER_CONVERTER -#cmakedefine01 ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER -#cmakedefine01 ENABLE_CLICKHOUSE_SU -#cmakedefine01 ENABLE_CLICKHOUSE_DISKS diff --git a/programs/copier/ClusterCopierApp.cpp b/programs/copier/ClusterCopierApp.cpp index 53f79888573..fdf07dec61a 100644 --- a/programs/copier/ClusterCopierApp.cpp +++ b/programs/copier/ClusterCopierApp.cpp @@ -78,6 +78,7 @@ void ClusterCopierApp::handleHelp(const std::string &, const std::string &) help_formatter.setHeader("Copies tables from one cluster to another"); help_formatter.setUsage("--config-file --task-path "); help_formatter.format(std::cerr); + help_formatter.setFooter("See also: https://clickhouse.com/docs/en/operations/utilities/clickhouse-copier/"); stopOptionsProcessing(); } diff --git a/programs/git-import/git-import.cpp b/programs/git-import/git-import.cpp index 16244232bee..fdabeacd46e 100644 --- a/programs/git-import/git-import.cpp +++ b/programs/git-import/git-import.cpp @@ -172,6 +172,7 @@ clickhouse-client --query "INSERT INTO git.commits FORMAT TSV" < commits.tsv clickhouse-client --query "INSERT INTO git.file_changes FORMAT TSV" < file_changes.tsv clickhouse-client --query "INSERT INTO git.line_changes FORMAT TSV" < line_changes.tsv +Check out this presentation: https://presentations.clickhouse.com/matemarketing_2020/ )"; namespace po = boost::program_options; diff --git a/programs/install/Install.cpp b/programs/install/Install.cpp index a4a4672f5c4..c3d2c61d6d0 100644 --- a/programs/install/Install.cpp +++ b/programs/install/Install.cpp @@ -242,9 +242,10 @@ int mainEntryClickHouseInstall(int argc, char ** argv) if (options.count("help")) { + std::cout << "Install ClickHouse without .deb/.rpm/.tgz packages (having the binary only)\n\n"; std::cout << "Usage: " << formatWithSudo(std::string(argv[0]) + " install [options]", getuid() != 0) << '\n'; std::cout << desc << '\n'; - return 1; + return 0; } /// We need to copy binary to the binary directory. diff --git a/programs/local/LocalServer.cpp b/programs/local/LocalServer.cpp index 443d4a52fa3..d7acf4112a5 100644 --- a/programs/local/LocalServer.cpp +++ b/programs/local/LocalServer.cpp @@ -828,6 +828,7 @@ void LocalServer::printHelpMessage([[maybe_unused]] const OptionsDescription & o std::cout << options_description.main_description.value() << "\n"; std::cout << getHelpFooter() << "\n"; std::cout << "In addition, --param_name=value can be specified for substitution of parameters for parametrized queries.\n"; + std::cout << "\nSee also: https://clickhouse.com/docs/en/operations/utilities/clickhouse-local/\n"; #endif } diff --git a/programs/main.cpp b/programs/main.cpp index 1ff7e5db560..3896b3819a8 100644 --- a/programs/main.cpp +++ b/programs/main.cpp @@ -24,36 +24,28 @@ /// Universal executable for various clickhouse applications -#if ENABLE_CLICKHOUSE_SERVER int mainEntryClickHouseServer(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_CLIENT int mainEntryClickHouseClient(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_LOCAL int mainEntryClickHouseLocal(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_BENCHMARK int mainEntryClickHouseBenchmark(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG int mainEntryClickHouseExtractFromConfig(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_COMPRESSOR int mainEntryClickHouseCompressor(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_FORMAT int mainEntryClickHouseFormat(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_COPIER int mainEntryClickHouseClusterCopier(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_OBFUSCATOR int mainEntryClickHouseObfuscator(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_GIT_IMPORT int mainEntryClickHouseGitImport(int argc, char ** argv); -#endif +int mainEntryClickHouseStaticFilesDiskUploader(int argc, char ** argv); +int mainEntryClickHouseSU(int argc, char ** argv); +int mainEntryClickHouseDisks(int argc, char ** argv); + +int mainEntryClickHouseHashBinary(int, char **) +{ + /// Intentionally without newline. So you can run: + /// objcopy --add-section .clickhouse.hash=<(./clickhouse hash-binary) clickhouse + std::cout << getHashOfLoadedBinaryHex(); + return 0; +} + #if ENABLE_CLICKHOUSE_KEEPER int mainEntryClickHouseKeeper(int argc, char ** argv); #endif @@ -63,30 +55,13 @@ int mainEntryClickHouseKeeperConverter(int argc, char ** argv); #if ENABLE_CLICKHOUSE_KEEPER_CLIENT int mainEntryClickHouseKeeperClient(int argc, char ** argv); #endif -#if ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER -int mainEntryClickHouseStaticFilesDiskUploader(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_SU -int mainEntryClickHouseSU(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_INSTALL + +// install int mainEntryClickHouseInstall(int argc, char ** argv); int mainEntryClickHouseStart(int argc, char ** argv); int mainEntryClickHouseStop(int argc, char ** argv); int mainEntryClickHouseStatus(int argc, char ** argv); int mainEntryClickHouseRestart(int argc, char ** argv); -#endif -#if ENABLE_CLICKHOUSE_DISKS -int mainEntryClickHouseDisks(int argc, char ** argv); -#endif - -int mainEntryClickHouseHashBinary(int, char **) -{ - /// Intentionally without newline. So you can run: - /// objcopy --add-section .clickhouse.hash=<(./clickhouse hash-binary) clickhouse - std::cout << getHashOfLoadedBinaryHex(); - return 0; -} namespace { @@ -98,36 +73,22 @@ using MainFunc = int (*)(int, char**); /// Add an item here to register new application std::pair clickhouse_applications[] = { -#if ENABLE_CLICKHOUSE_LOCAL {"local", mainEntryClickHouseLocal}, -#endif -#if ENABLE_CLICKHOUSE_CLIENT {"client", mainEntryClickHouseClient}, -#endif -#if ENABLE_CLICKHOUSE_BENCHMARK {"benchmark", mainEntryClickHouseBenchmark}, -#endif -#if ENABLE_CLICKHOUSE_SERVER {"server", mainEntryClickHouseServer}, -#endif -#if ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG {"extract-from-config", mainEntryClickHouseExtractFromConfig}, -#endif -#if ENABLE_CLICKHOUSE_COMPRESSOR {"compressor", mainEntryClickHouseCompressor}, -#endif -#if ENABLE_CLICKHOUSE_FORMAT {"format", mainEntryClickHouseFormat}, -#endif -#if ENABLE_CLICKHOUSE_COPIER {"copier", mainEntryClickHouseClusterCopier}, -#endif -#if ENABLE_CLICKHOUSE_OBFUSCATOR {"obfuscator", mainEntryClickHouseObfuscator}, -#endif -#if ENABLE_CLICKHOUSE_GIT_IMPORT {"git-import", mainEntryClickHouseGitImport}, -#endif + {"static-files-disk-uploader", mainEntryClickHouseStaticFilesDiskUploader}, + {"su", mainEntryClickHouseSU}, + {"hash-binary", mainEntryClickHouseHashBinary}, + {"disks", mainEntryClickHouseDisks}, + + // keeper #if ENABLE_CLICKHOUSE_KEEPER {"keeper", mainEntryClickHouseKeeper}, #endif @@ -137,34 +98,20 @@ std::pair clickhouse_applications[] = #if ENABLE_CLICKHOUSE_KEEPER_CLIENT {"keeper-client", mainEntryClickHouseKeeperClient}, #endif -#if ENABLE_CLICKHOUSE_INSTALL + + // install {"install", mainEntryClickHouseInstall}, {"start", mainEntryClickHouseStart}, {"stop", mainEntryClickHouseStop}, {"status", mainEntryClickHouseStatus}, {"restart", mainEntryClickHouseRestart}, -#endif -#if ENABLE_CLICKHOUSE_STATIC_FILES_DISK_UPLOADER - {"static-files-disk-uploader", mainEntryClickHouseStaticFilesDiskUploader}, -#endif -#if ENABLE_CLICKHOUSE_SU - {"su", mainEntryClickHouseSU}, -#endif - {"hash-binary", mainEntryClickHouseHashBinary}, -#if ENABLE_CLICKHOUSE_DISKS - {"disks", mainEntryClickHouseDisks}, -#endif }; /// Add an item here to register a new short name std::pair clickhouse_short_names[] = { -#if ENABLE_CLICKHOUSE_LOCAL {"chl", "local"}, -#endif -#if ENABLE_CLICKHOUSE_CLIENT {"chc", "client"}, -#endif }; int printHelp(int, char **) diff --git a/programs/su/su.cpp b/programs/su/su.cpp index a8f61fb32b6..33d929898f4 100644 --- a/programs/su/su.cpp +++ b/programs/su/su.cpp @@ -107,6 +107,7 @@ try if (argc < 3) { + std::cout << "A tool similar to 'su'" << std::endl; std::cout << "Usage: ./clickhouse su user:group ..." << std::endl; exit(0); // NOLINT(concurrency-mt-unsafe) }