mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 17:12:03 +00:00
client: all options from Limits.h could be set in client command line [METR-10801]
This commit is contained in:
parent
edb8b71115
commit
39bdcbc819
@ -21,7 +21,7 @@ struct Limits
|
||||
* По-умолчанию: всё не ограничено, кроме довольно слабых ограничений на глубину рекурсии и размер выражений.
|
||||
*/
|
||||
|
||||
#define APPLY_FOR_SETTINGS(M) \
|
||||
#define APPLY_FOR_LIMITS(M) \
|
||||
/** Ограничения на чтение из самых "глубоких" источников. \
|
||||
* То есть, только в самом глубоком подзапросе. \
|
||||
* При чтении с удалённого сервера, проверяется только на удалённом сервере. \
|
||||
@ -77,7 +77,7 @@ struct Limits
|
||||
#define DECLARE(TYPE, NAME, DEFAULT) \
|
||||
TYPE NAME {DEFAULT};
|
||||
|
||||
APPLY_FOR_SETTINGS(DECLARE)
|
||||
APPLY_FOR_LIMITS(DECLARE)
|
||||
|
||||
#undef DECLARE
|
||||
|
||||
@ -88,7 +88,7 @@ struct Limits
|
||||
else if (name == #NAME) NAME.set(value);
|
||||
|
||||
if (false) {}
|
||||
APPLY_FOR_SETTINGS(TRY_SET)
|
||||
APPLY_FOR_LIMITS(TRY_SET)
|
||||
else
|
||||
return false;
|
||||
|
||||
@ -104,7 +104,7 @@ struct Limits
|
||||
else if (name == #NAME) NAME.set(buf);
|
||||
|
||||
if (false) {}
|
||||
APPLY_FOR_SETTINGS(TRY_SET)
|
||||
APPLY_FOR_LIMITS(TRY_SET)
|
||||
else
|
||||
return false;
|
||||
|
||||
@ -121,7 +121,7 @@ struct Limits
|
||||
else if (name == #NAME) NAME.set(value);
|
||||
|
||||
if (false) {}
|
||||
APPLY_FOR_SETTINGS(TRY_SET)
|
||||
APPLY_FOR_LIMITS(TRY_SET)
|
||||
else
|
||||
return false;
|
||||
|
||||
@ -143,12 +143,10 @@ private:
|
||||
NAME.write(buf); \
|
||||
}
|
||||
|
||||
APPLY_FOR_SETTINGS(WRITE)
|
||||
APPLY_FOR_LIMITS(WRITE)
|
||||
|
||||
#undef WRITE
|
||||
}
|
||||
|
||||
#undef APPLY_FOR_SETTINGS
|
||||
};
|
||||
|
||||
|
||||
|
@ -860,6 +860,7 @@ public:
|
||||
stopOptionsProcessing();
|
||||
|
||||
#define DECLARE_SETTING(TYPE, NAME, DEFAULT) (#NAME, boost::program_options::value<std::string> (), "Settings.h")
|
||||
#define DECLARE_LIMIT(TYPE, NAME, DEFAULT) (#NAME, boost::program_options::value<std::string> (), "Limits.h")
|
||||
|
||||
/// Перечисляем основные опции командной строки относящиеся к функциональности клиента,
|
||||
/// а так же все параметры из Settings
|
||||
@ -876,11 +877,13 @@ public:
|
||||
("multiline,m", "multiline")
|
||||
("multiquery,n", "multiquery")
|
||||
APPLY_FOR_SETTINGS(DECLARE_SETTING)
|
||||
APPLY_FOR_LIMITS(DECLARE_LIMIT)
|
||||
;
|
||||
#undef DECLARE_SETTING
|
||||
#undef DECLARE_LIMIT
|
||||
|
||||
/// Перечисляем опции командной строки относящиеся к внешним таблицам
|
||||
boost::program_options::options_description external_description("Main options");
|
||||
boost::program_options::options_description external_description("External tables options");
|
||||
external_description.add_options()
|
||||
("file", boost::program_options::value<std::string> (), "data file or - for stdin")
|
||||
("name", boost::program_options::value<std::string> ()->default_value("_data"), "name of the table")
|
||||
@ -896,7 +899,6 @@ public:
|
||||
|
||||
if (options.count("help")) {
|
||||
std::cout << main_description << "\n";
|
||||
std::cout << "External tables ";
|
||||
std::cout << external_description << "\n";
|
||||
exit(0);
|
||||
}
|
||||
@ -947,10 +949,15 @@ public:
|
||||
#define EXTRACT_SETTING(TYPE, NAME, DEFAULT) \
|
||||
if (options.count(#NAME)) \
|
||||
settings.set(#NAME, options[#NAME].as<std::string>());
|
||||
|
||||
APPLY_FOR_SETTINGS(EXTRACT_SETTING)
|
||||
#undef EXTRACT_SETTING
|
||||
|
||||
#define EXTRACT_LIMIT(TYPE, NAME, DEFAULT) \
|
||||
if (options.count(#NAME)) \
|
||||
settings.limits.trySet(#NAME, options[#NAME].as<std::string>());
|
||||
APPLY_FOR_LIMITS(EXTRACT_LIMIT)
|
||||
#undef EXTRACT_LIMIT
|
||||
|
||||
/// Сохраняем полученные данные во внутренний конфиг
|
||||
if (options.count("config-file"))
|
||||
config().setString("config-file", options["config-file"].as<std::string>());
|
||||
|
Loading…
Reference in New Issue
Block a user