1#pragma once
2
3#include "config_core.h"
4#include <Parsers/ASTQueryWithOnCluster.h>
5#include <Parsers/IAST.h>
6
7
8namespace DB
9{
10
11class ASTSystemQuery : public IAST, public ASTQueryWithOnCluster
12{
13public:
14
15 enum class Type
16 {
17 UNKNOWN,
18 SHUTDOWN,
19 KILL,
20 DROP_DNS_CACHE,
21 DROP_MARK_CACHE,
22 DROP_UNCOMPRESSED_CACHE,
23#if USE_EMBEDDED_COMPILER
24 DROP_COMPILED_EXPRESSION_CACHE,
25#endif
26 STOP_LISTEN_QUERIES,
27 START_LISTEN_QUERIES,
28 RESTART_REPLICAS,
29 RESTART_REPLICA,
30 SYNC_REPLICA,
31 RELOAD_DICTIONARY,
32 RELOAD_DICTIONARIES,
33 RELOAD_EMBEDDED_DICTIONARIES,
34 RELOAD_CONFIG,
35 STOP_MERGES,
36 START_MERGES,
37 STOP_TTL_MERGES,
38 START_TTL_MERGES,
39 STOP_FETCHES,
40 START_FETCHES,
41 STOP_MOVES,
42 START_MOVES,
43 STOP_REPLICATED_SENDS,
44 START_REPLICATED_SENDS,
45 STOP_REPLICATION_QUEUES,
46 START_REPLICATION_QUEUES,
47 FLUSH_LOGS,
48 FLUSH_DISTRIBUTED,
49 STOP_DISTRIBUTED_SENDS,
50 START_DISTRIBUTED_SENDS,
51 END
52 };
53
54 static const char * typeToString(Type type);
55
56 Type type = Type::UNKNOWN;
57
58 String target_dictionary;
59 String database;
60 String table;
61
62 String getID(char) const override { return "SYSTEM query"; }
63
64 ASTPtr clone() const override { return std::make_shared<ASTSystemQuery>(*this); }
65
66 ASTPtr getRewrittenASTWithoutOnCluster(const std::string & new_database) const override
67 {
68 return removeOnCluster<ASTSystemQuery>(clone(), new_database);
69 }
70
71protected:
72
73 void formatImpl(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const override;
74};
75
76
77}
78