ClickHouse/src/Interpreters/InterpreterDescribeCacheQuery.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
3.6 KiB
C++
Raw Normal View History

#include <Interpreters/InterpreterFactory.h>
2022-06-21 13:42:36 +00:00
#include <Interpreters/InterpreterDescribeCacheQuery.h>
2022-06-23 15:46:27 +00:00
#include <Interpreters/Context.h>
2022-06-21 13:42:36 +00:00
#include <Processors/Sources/SourceFromSingleChunk.h>
#include <Parsers/ASTDescribeCacheQuery.h>
#include <DataTypes/DataTypesNumber.h>
#include <DataTypes/DataTypeString.h>
#include <Storages/ColumnsDescription.h>
2022-08-26 17:23:46 +00:00
#include <Interpreters/Cache/FileCacheFactory.h>
#include <Interpreters/Cache/FileCache.h>
2022-06-23 15:46:27 +00:00
#include <Access/Common/AccessFlags.h>
2022-06-21 13:42:36 +00:00
#include <Core/Block.h>
namespace DB
{
static Block getSampleBlock()
{
ColumnsWithTypeAndName columns{
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "max_size"},
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "max_elements"},
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "max_file_segment_size"},
2023-06-15 10:22:50 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "boundary_alignment"},
2022-06-21 13:42:36 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt8>>(), "cache_on_write_operations"},
2023-01-18 19:52:16 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt8>>(), "cache_hits_threshold"},
2022-06-21 13:42:36 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "current_size"},
ColumnWithTypeAndName{std::make_shared<DataTypeUInt64>(), "current_elements"},
2022-08-10 13:55:09 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeString>(), "path"},
2023-06-15 10:22:50 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt64>>(), "background_download_threads"},
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt64>>(), "background_download_queue_size_limit"},
2023-06-15 10:22:50 +00:00
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt64>>(), "enable_bypass_cache_with_threshold"},
ColumnWithTypeAndName{std::make_shared<DataTypeNumber<UInt64>>(), "load_metadata_threads"},
2022-06-21 13:42:36 +00:00
};
return Block(columns);
}
BlockIO InterpreterDescribeCacheQuery::execute()
{
2022-09-19 12:02:51 +00:00
getContext()->checkAccess(AccessType::SHOW_FILESYSTEM_CACHES);
2022-06-21 13:42:36 +00:00
const auto & ast = query_ptr->as<ASTDescribeCacheQuery &>();
Block sample_block = getSampleBlock();
MutableColumns res_columns = sample_block.cloneEmptyColumns();
auto cache_data = FileCacheFactory::instance().getByName(ast.cache_name);
2023-12-07 11:07:01 +00:00
auto settings = cache_data->getSettings();
const auto & cache = cache_data->cache;
2022-06-21 13:42:36 +00:00
2023-06-15 10:22:50 +00:00
size_t i = 0;
res_columns[i++]->insert(settings.max_size);
res_columns[i++]->insert(settings.max_elements);
res_columns[i++]->insert(settings.max_file_segment_size);
res_columns[i++]->insert(settings.boundary_alignment);
res_columns[i++]->insert(settings.cache_on_write_operations);
res_columns[i++]->insert(settings.cache_hits_threshold);
res_columns[i++]->insert(cache->getUsedCacheSize());
res_columns[i++]->insert(cache->getFileSegmentsNum());
res_columns[i++]->insert(cache->getBasePath());
res_columns[i++]->insert(settings.background_download_threads);
res_columns[i++]->insert(settings.background_download_queue_size_limit);
2023-09-03 13:47:52 +00:00
res_columns[i++]->insert(settings.enable_bypass_cache_with_threshold);
res_columns[i++]->insert(settings.load_metadata_threads);
2022-06-21 13:42:36 +00:00
BlockIO res;
size_t num_rows = res_columns[0]->size();
auto source = std::make_shared<SourceFromSingleChunk>(sample_block, Chunk(std::move(res_columns), num_rows));
res.pipeline = QueryPipeline(std::move(source));
return res;
}
void registerInterpreterDescribeCacheQuery(InterpreterFactory & factory)
{
auto create_fn = [] (const InterpreterFactory::Arguments & args)
{
return std::make_unique<InterpreterDescribeCacheQuery>(args.query, args.context);
};
factory.registerInterpreter("InterpreterDescribeCacheQuery", create_fn);
}
2022-06-21 13:42:36 +00:00
}