diff --git a/programs/benchmark/Benchmark.cpp b/programs/benchmark/Benchmark.cpp index 7515dbbe490..691c83a20f2 100644 --- a/programs/benchmark/Benchmark.cpp +++ b/programs/benchmark/Benchmark.cpp @@ -598,6 +598,7 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv) boost::program_options::options_description desc = createOptionsDescription("Allowed options", getTerminalWidth()); desc.add_options() ("help", "produce help message") + ("verbose", "print more detailed message") ("query,q", value()->default_value(""), "query to execute") ("concurrency,c", value()->default_value(1), "number of parallel queries") ("delay,d", value()->default_value(1), "delay between intermediate reports in seconds (set 0 to disable reports)") @@ -629,13 +630,19 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv) boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), options); boost::program_options::notify(options); + if (options.count("verbose")) + settings.addProgramOptions(desc); + + boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), options); + boost::program_options::notify(options); + clearPasswordFromCommandLine(argc, argv); if (options.count("help")) { std::cout << "Usage: " << argv[0] << " [options] < queries.txt\n"; std::cout << desc << "\n"; - std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/\n"; + std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/ or you can access them in `system.settings` table.\n"; std::cout << "\nSee also: https://clickhouse.com/docs/en/operations/utilities/clickhouse-benchmark/\n"; return 0; } diff --git a/programs/client/Client.cpp b/programs/client/Client.cpp index 69b65d0b748..555e9f13226 100644 --- a/programs/client/Client.cpp +++ b/programs/client/Client.cpp @@ -923,7 +923,7 @@ void Client::printHelpMessage(const OptionsDescription & options_description) std::cout << options_description.main_description.value() << "\n"; std::cout << options_description.external_description.value() << "\n"; std::cout << options_description.hosts_and_ports_description.value() << "\n"; - std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/\n\n"; + std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/ or you can access them in `system.settings` table.\n\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/local/LocalServer.cpp b/programs/local/LocalServer.cpp index d076d4dbdc3..a37154db194 100644 --- a/programs/local/LocalServer.cpp +++ b/programs/local/LocalServer.cpp @@ -778,7 +778,7 @@ void LocalServer::printHelpMessage([[maybe_unused]] const OptionsDescription & o { std::cout << getHelpHeader() << "\n"; std::cout << options_description.main_description.value() << "\n"; - std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/\n\n"; + std::cout << "All setting parameters are documented in detail at https://clickhouse.com/docs/ or you can access them in `system.settings` table.\n\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"; diff --git a/src/Client/ClientBase.cpp b/src/Client/ClientBase.cpp index 3e26ed9ff0f..58d2d3d38db 100644 --- a/src/Client/ClientBase.cpp +++ b/src/Client/ClientBase.cpp @@ -2844,6 +2844,31 @@ private: } +void ClientBase::verboseHelpMessageIfNeeded(OptionsDescription & options_description) +{ + if (config().getBool("verbose", false)) + { + auto getter = [](const auto & op) + { + String op_long_name = op->long_name(); + return "--" + String(op_long_name); + }; + + if (options_description.main_description) + { + const auto & main_options = options_description.main_description->options(); + std::transform(main_options.begin(), main_options.end(), std::back_inserter(cmd_options), getter); + } + + if (options_description.external_description) + { + const auto & external_options = options_description.external_description->options(); + std::transform(external_options.begin(), external_options.end(), std::back_inserter(cmd_options), getter); + } + } +} + + void ClientBase::parseAndCheckOptions(OptionsDescription & options_description, po::variables_map & options, Arguments & arguments) { if (allow_merge_tree_settings) diff --git a/src/Client/ClientBase.h b/src/Client/ClientBase.h index 9ee77122e2e..c638309b9d7 100644 --- a/src/Client/ClientBase.h +++ b/src/Client/ClientBase.h @@ -174,6 +174,7 @@ private: String prompt() const; void resetOutput(); + void verboseHelpMessageIfNeeded(OptionsDescription & options_description); void parseAndCheckOptions(OptionsDescription & options_description, po::variables_map & options, Arguments & arguments); void updateSuggest(const ASTPtr & ast);