MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / parseImpl

Method parseImpl

src/Parsers/ParserSystemQuery.cpp:244–1071  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242}
243
244bool ParserSystemQuery::parseImpl(IParser::Pos & pos, ASTPtr & node, Expected & expected)
245{
246 if (!ParserKeyword{Keyword::SYSTEM}.ignore(pos, expected))
247 return false;
248
249 using Type = ASTSystemQuery::Type;
250
251 auto res = make_intrusive<ASTSystemQuery>();
252
253 bool found = false;
254
255 for (const auto & type : magic_enum::enum_values<Type>())
256 {
257 if (ParserKeyword::createDeprecated(ASTSystemQuery::typeToString(type)).ignore(pos, expected))
258 {
259 res->type = type;
260 found = true;
261 break;
262 }
263 }
264
265 /// SYSTEM DROP [...] CACHE sounds like the statement disables the cache but it merely clears it.
266 /// SYSTEM CLEAR [...] CACHE is the preferred syntax but we need to retain support for DROP.
267 if (!found)
268 {
269 static const std::vector<std::pair<std::string_view, Type>> system_aliases = {
270 {"DROP DNS CACHE", Type::CLEAR_DNS_CACHE},
271 {"DROP CONNECTIONS CACHE", Type::CLEAR_CONNECTIONS_CACHE},
272 {"DROP MARK CACHE", Type::CLEAR_MARK_CACHE},
273 {"DROP PRIMARY INDEX CACHE", Type::CLEAR_PRIMARY_INDEX_CACHE},
274 {"DROP UNCOMPRESSED CACHE", Type::CLEAR_UNCOMPRESSED_CACHE},
275 {"DROP INDEX MARK CACHE", Type::CLEAR_INDEX_MARK_CACHE},
276 {"DROP INDEX UNCOMPRESSED CACHE", Type::CLEAR_INDEX_UNCOMPRESSED_CACHE},
277 {"DROP VECTOR SIMILARITY INDEX CACHE", Type::CLEAR_VECTOR_SIMILARITY_INDEX_CACHE},
278 {"DROP TEXT INDEX TOKENS CACHE", Type::CLEAR_TEXT_INDEX_TOKENS_CACHE},
279 {"DROP TEXT INDEX HEADER CACHE", Type::CLEAR_TEXT_INDEX_HEADER_CACHE},
280 {"DROP TEXT INDEX POSTINGS CACHE", Type::CLEAR_TEXT_INDEX_POSTINGS_CACHE},
281 {"DROP TEXT INDEX CACHES", Type::CLEAR_TEXT_INDEX_CACHES},
282 {"DROP MMAP CACHE", Type::CLEAR_MMAP_CACHE},
283 {"DROP QUERY CONDITION CACHE", Type::CLEAR_QUERY_CONDITION_CACHE},
284 {"DROP QUERY CACHE", Type::CLEAR_QUERY_CACHE},
285 {"DROP COMPILED EXPRESSION CACHE", Type::CLEAR_COMPILED_EXPRESSION_CACHE},
286 {"DROP ICEBERG METADATA CACHE", Type::CLEAR_ICEBERG_METADATA_CACHE},
287 {"DROP PARQUET METADATA CACHE", Type::CLEAR_PARQUET_METADATA_CACHE},
288 {"DROP FILESYSTEM CACHE", Type::CLEAR_FILESYSTEM_CACHE},
289 {"DROP DISTRIBUTED CACHE", Type::CLEAR_DISTRIBUTED_CACHE},
290 {"DROP DISK METADATA CACHE", Type::CLEAR_DISK_METADATA_CACHE},
291 {"DROP PAGE CACHE", Type::CLEAR_PAGE_CACHE},
292 {"DROP SCHEMA CACHE", Type::CLEAR_SCHEMA_CACHE},
293 {"DROP FORMAT SCHEMA CACHE", Type::CLEAR_FORMAT_SCHEMA_CACHE},
294 {"DROP AVRO SCHEMA CACHE", Type::CLEAR_AVRO_SCHEMA_CACHE},
295 {"DROP S3 CLIENT CACHE", Type::CLEAR_S3_CLIENT_CACHE},
296 };
297
298 for (const auto & [alias, type] : system_aliases)
299 {
300 if (ParserKeyword::createDeprecatedPtr(alias)->ignore(pos, expected))
301 {

Callers

nothing calls this directly

Calls 15

parseDropReplicaFunction · 0.85
parseDropCatalogReplicaFunction · 0.85
ParserKeywordClass · 0.85
parseQueryWithOnClusterFunction · 0.85
parseDatabaseAsASTFunction · 0.85
readDateTimeTextFunction · 0.85
ParserIdentifierClass · 0.85
ParserLiteralClass · 0.85

Tested by

no test coverage detected