ClickHouse/dbms/include/DB/Interpreters/Settings.h

60 lines
3.0 KiB
C
Raw Normal View History

2012-03-05 00:09:41 +00:00
#pragma once
2012-07-26 20:16:57 +00:00
#include <Poco/Timespan.h>
2012-03-05 00:09:41 +00:00
#include <DB/Core/Defines.h>
2012-08-02 19:03:32 +00:00
#include <DB/Core/Field.h>
2012-03-05 00:09:41 +00:00
namespace DB
{
/** Настройки выполнения запроса.
*/
struct Settings
{
size_t max_block_size; /// Максимальный размер блока для чтения
size_t max_threads; /// Максимальное количество потоков выполнения запроса
size_t max_query_size; /// Какую часть запроса можно прочитать в оперативку для парсинга (оставшиеся данные для INSERT, если есть, считываются позже)
bool asynchronous; /// Выполнять разные стадии конвейера выполнения запроса параллельно
2012-05-09 15:15:45 +00:00
size_t interactive_delay; /// Интервал в микросекундах для проверки, не запрошена ли остановка выполнения запроса, и отправки прогресса.
2012-07-26 20:16:57 +00:00
Poco::Timespan connect_timeout;
Poco::Timespan receive_timeout;
Poco::Timespan send_timeout;
2012-08-16 18:02:15 +00:00
size_t poll_interval; /// Блокироваться в цикле ожидания запроса в сервере на указанное количество секунд.
size_t distributed_connections_pool_size; /// Максимальное количество соединений с одним удалённым сервером в пуле.
2012-03-05 00:09:41 +00:00
2012-05-09 15:15:45 +00:00
Settings() :
max_block_size(DEFAULT_BLOCK_SIZE),
max_threads(DEFAULT_MAX_THREADS),
max_query_size(DEFAULT_MAX_QUERY_SIZE),
asynchronous(true),
2012-07-26 20:16:57 +00:00
interactive_delay(DEFAULT_INTERACTIVE_DELAY),
connect_timeout(DBMS_DEFAULT_CONNECT_TIMEOUT_SEC, 0),
receive_timeout(DBMS_DEFAULT_RECEIVE_TIMEOUT_SEC, 0),
2012-08-16 18:02:15 +00:00
send_timeout(DBMS_DEFAULT_SEND_TIMEOUT_SEC, 0),
poll_interval(DBMS_DEFAULT_POLL_INTERVAL),
distributed_connections_pool_size(DBMS_DEFAULT_DISTRIBUTED_CONNECTIONS_POOL_SIZE)
2012-07-26 20:16:57 +00:00
{
}
2012-08-02 19:03:32 +00:00
/// Установить настройку по имени.
void set(const String & name, const Field & value)
{
if (name == "max_block_size") max_block_size = boost::get<UInt64>(value);
else if (name == "max_threads") max_threads = boost::get<UInt64>(value);
else if (name == "max_query_size") max_query_size = boost::get<UInt64>(value);
else if (name == "asynchronous") asynchronous = boost::get<UInt64>(value);
else if (name == "interactive_delay") interactive_delay = boost::get<UInt64>(value);
else if (name == "connect_timeout") connect_timeout = Poco::Timespan(boost::get<UInt64>(value), 0);
else if (name == "receive_timeout") receive_timeout = Poco::Timespan(boost::get<UInt64>(value), 0);
else if (name == "send_timeout") send_timeout = Poco::Timespan(boost::get<UInt64>(value), 0);
2012-08-16 18:02:15 +00:00
else if (name == "poll_interval") poll_interval = boost::get<UInt64>(value);
else if (name == "distributed_connections_pool_size") distributed_connections_pool_size = boost::get<UInt64>(value);
2012-08-02 19:03:32 +00:00
else
throw Exception("Unknown setting " + name, ErrorCodes::UNKNOWN_SETTING);
}
2012-03-05 00:09:41 +00:00
};
}