mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 17:12:03 +00:00
dbms: storing settings and default database in client [METR-8983]
This commit is contained in:
parent
88644b2377
commit
4c7dd4e269
@ -78,6 +78,9 @@ public:
|
||||
Packet() : type(Protocol::Server::Hello) {}
|
||||
};
|
||||
|
||||
/// Изменить базу данных по умолчанию. Изменения начинают использоваться только при следующем переподключении.
|
||||
void setDefaultDatabase(const String & database);
|
||||
|
||||
void getServerVersion(String & name, UInt64 & version_major, UInt64 & version_minor, UInt64 & revision);
|
||||
|
||||
/// Адрес сервера - для сообщений в логе и в эксепшенах.
|
||||
|
@ -465,6 +465,24 @@ private:
|
||||
written_progress_chars = 0;
|
||||
written_first_block = false;
|
||||
|
||||
const ASTSetQuery * set_query = dynamic_cast<const ASTSetQuery *>(&*parsed_query);
|
||||
if (set_query)
|
||||
{
|
||||
/// Запоминаем все изменения в настройках, чтобы не потерять их при разрыве соединения.
|
||||
for (ASTSetQuery::Changes::const_iterator it = set_query->changes.begin(); it != set_query->changes.end(); ++it)
|
||||
context.setSetting(it->name, it->value);
|
||||
}
|
||||
|
||||
const ASTUseQuery * use_query = dynamic_cast<const ASTUseQuery *>(&*parsed_query);
|
||||
if (use_query)
|
||||
{
|
||||
const String & new_database = use_query->database;
|
||||
/// Если клиент инициирует пересоединение, он берет настройки из конфига
|
||||
config().setString("database", new_database);
|
||||
/// Если connection инициирует пересоединение, он использует свою переменную
|
||||
connection->setDefaultDatabase(new_database);
|
||||
}
|
||||
|
||||
/// Запрос INSERT (но только тот, что требует передачи данных - не INSERT SELECT), обрабатывается отдельным способом.
|
||||
const ASTInsertQuery * insert = dynamic_cast<const ASTInsertQuery *>(&*parsed_query);
|
||||
|
||||
|
@ -128,6 +128,12 @@ void Connection::receiveHello()
|
||||
}
|
||||
|
||||
|
||||
void Connection::setDefaultDatabase(const String & database)
|
||||
{
|
||||
default_database = database;
|
||||
}
|
||||
|
||||
|
||||
void Connection::getServerVersion(String & name, UInt64 & version_major, UInt64 & version_minor, UInt64 & revision)
|
||||
{
|
||||
if (!connected)
|
||||
|
Loading…
Reference in New Issue
Block a user