2017-08-04 15:54:00 +00:00
|
|
|
#include <Parsers/IAST.h>
|
|
|
|
#include <Parsers/ASTSystemQuery.h>
|
|
|
|
|
|
|
|
|
2017-08-06 20:26:23 +00:00
|
|
|
namespace DB
|
2017-08-04 15:54:00 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
|
2017-08-06 20:26:23 +00:00
|
|
|
namespace ErrorCodes
|
2017-08-04 15:54:00 +00:00
|
|
|
{
|
2017-08-06 20:26:23 +00:00
|
|
|
extern const int BAD_TYPE_OF_FIELD;
|
|
|
|
extern const int NOT_IMPLEMENTED;
|
|
|
|
}
|
2017-08-04 15:54:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
const char * ASTSystemQuery::typeToString(Type type)
|
|
|
|
{
|
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case Type::SHUTDOWN:
|
|
|
|
return "SHUTDOWN";
|
|
|
|
case Type::KILL:
|
|
|
|
return "KILL";
|
|
|
|
case Type::DROP_DNS_CACHE:
|
|
|
|
return "DROP DNS CACHE";
|
|
|
|
case Type::DROP_MARK_CACHE:
|
|
|
|
return "DROP MARK CACHE";
|
|
|
|
case Type::DROP_UNCOMPRESSED_CACHE:
|
|
|
|
return "DROP UNCOMPRESSED CACHE";
|
|
|
|
case Type::STOP_LISTEN_QUERIES:
|
|
|
|
return "STOP LISTEN QUERIES";
|
|
|
|
case Type::START_LISTEN_QUERIES:
|
|
|
|
return "START LISTEN QUERIES";
|
|
|
|
case Type::RESTART_REPLICAS:
|
|
|
|
return "RESTART REPLICAS";
|
|
|
|
case Type::SYNC_REPLICA:
|
|
|
|
return "SYNC REPLICA";
|
|
|
|
case Type::RELOAD_DICTIONARY:
|
|
|
|
return "RELOAD DICTIONARY";
|
|
|
|
case Type::RELOAD_DICTIONARIES:
|
|
|
|
return "RELOAD DICTIONARIES";
|
|
|
|
case Type::STOP_MERGES:
|
|
|
|
return "STOP MERGES";
|
|
|
|
case Type::START_MERGES:
|
|
|
|
return "START MERGES";
|
|
|
|
case Type::STOP_REPLICATION_QUEUES:
|
|
|
|
return "STOP REPLICATION QUEUES";
|
|
|
|
case Type::START_REPLICATION_QUEUES:
|
|
|
|
return "START REPLICATION QUEUES";
|
|
|
|
default:
|
|
|
|
throw Exception("Unknown SYSTEM query command", ErrorCodes::BAD_TYPE_OF_FIELD);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-12-01 18:36:55 +00:00
|
|
|
void ASTSystemQuery::formatImpl(const FormatSettings & settings, FormatState &, FormatStateStacked) const
|
2017-08-06 20:26:23 +00:00
|
|
|
{
|
|
|
|
settings.ostr << (settings.hilite ? hilite_keyword : "") << "SYSTEM " << (settings.hilite ? hilite_none : "");
|
|
|
|
settings.ostr << typeToString(type);
|
|
|
|
|
|
|
|
if (type == Type::RELOAD_DICTIONARY)
|
|
|
|
settings.ostr << " " << backQuoteIfNeed(target_dictionary);
|
|
|
|
else if (type == Type::SYNC_REPLICA)
|
|
|
|
throw Exception("SYNC_REPLICA isn't supported yet", ErrorCodes::NOT_IMPLEMENTED);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-08-30 21:25:44 +00:00
|
|
|
}
|