Add AggregateFunctionCombinatorFactory, better names

This commit is contained in:
kssenii 2021-01-23 12:07:37 +00:00
parent a98c6d333c
commit 0d940c6137
8 changed files with 47 additions and 27 deletions

View File

@ -137,7 +137,7 @@ AggregateFunctionPtr AggregateFunctionFactory::getImpl(
throw Exception("Aggregate function combinator '" + combinator->getName() + "' is only for internal usage", ErrorCodes::UNKNOWN_AGGREGATE_FUNCTION);
if (query_context && query_context->getSettingsRef().log_queries)
query_context->addQueryFactoriesInfo(Context::QueryLogFactories::AggregateFunction, combinator->getName());
query_context->addQueryFactoriesInfo(Context::QueryLogFactories::AggregateFunctionCombinator, combinator->getName());
String nested_name = name.substr(0, name.size() - combinator->getName().size());
DataTypes nested_types = combinator->transformArguments(argument_types);

View File

@ -964,11 +964,14 @@ void Context::addQueryFactoriesInfo(QueryLogFactories factory_type, const String
case QueryLogFactories::AggregateFunction:
query_factories_info.aggregate_functions.emplace(created_object);
break;
case QueryLogFactories::AggregateFunctionCombinator:
query_factories_info.aggregate_function_combinators.emplace(created_object);
break;
case QueryLogFactories::Database:
query_factories_info.databases.emplace(created_object);
query_factories_info.database_engines.emplace(created_object);
break;
case QueryLogFactories::DataType:
query_factories_info.data_types.emplace(created_object);
query_factories_info.data_type_families.emplace(created_object);
break;
case QueryLogFactories::Dictionary:
query_factories_info.dictionaries.emplace(created_object);

View File

@ -205,8 +205,9 @@ private:
struct QueryFactoriesInfo
{
std::unordered_set<std::string> aggregate_functions;
std::unordered_set<std::string> databases;
std::unordered_set<std::string> data_types;
std::unordered_set<std::string> aggregate_function_combinators;
std::unordered_set<std::string> database_engines;
std::unordered_set<std::string> data_type_families;
std::unordered_set<std::string> dictionaries;
std::unordered_set<std::string> formats;
std::unordered_set<std::string> functions;
@ -389,6 +390,7 @@ public:
enum class QueryLogFactories
{
AggregateFunction,
AggregateFunctionCombinator,
Database,
DataType,
Dictionary,

View File

@ -98,8 +98,9 @@ Block QueryLogElement::createBlock()
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "Settings.Values"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_aggregate_functions"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_databases"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_data_types"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_aggregate_function_combinators"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_database_engines"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_data_type_families"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_dictionaries"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_formats"},
{std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>()), "used_functions"},
@ -200,6 +201,7 @@ void QueryLogElement::appendToBlock(MutableColumns & columns) const
{
auto & column_aggregate_function_factory_objects = typeid_cast<ColumnArray &>(*columns[i++]);
auto & column_aggregate_function_combinator_factory_objects = typeid_cast<ColumnArray &>(*columns[i++]);
auto & column_database_factory_objects = typeid_cast<ColumnArray &>(*columns[i++]);
auto & column_data_type_factory_objects = typeid_cast<ColumnArray &>(*columns[i++]);
auto & column_dictionary_factory_objects = typeid_cast<ColumnArray &>(*columns[i++]);
@ -221,8 +223,9 @@ void QueryLogElement::appendToBlock(MutableColumns & columns) const
};
fill_column(used_aggregate_functions, column_aggregate_function_factory_objects);
fill_column(used_databases, column_database_factory_objects);
fill_column(used_data_types, column_data_type_factory_objects);
fill_column(used_aggregate_function_combinators, column_aggregate_function_combinator_factory_objects);
fill_column(used_database_engines, column_database_factory_objects);
fill_column(used_data_type_families, column_data_type_factory_objects);
fill_column(used_dictionaries, column_dictionary_factory_objects);
fill_column(used_formats, column_format_factory_objects);
fill_column(used_functions, column_function_factory_objects);

View File

@ -59,8 +59,9 @@ struct QueryLogElement
std::set<String> query_columns;
std::unordered_set<String> used_aggregate_functions;
std::unordered_set<String> used_databases;
std::unordered_set<String> used_data_types;
std::unordered_set<String> used_aggregate_function_combinators;
std::unordered_set<String> used_database_engines;
std::unordered_set<String> used_data_type_families;
std::unordered_set<String> used_dictionaries;
std::unordered_set<String> used_formats;
std::unordered_set<String> used_functions;

View File

@ -736,8 +736,9 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl(
const auto & factories_info = context.getQueryFactoriesInfo();
elem.used_aggregate_functions = factories_info.aggregate_functions;
elem.used_databases = factories_info.databases;
elem.used_data_types = factories_info.data_types;
elem.used_aggregate_function_combinators = factories_info.aggregate_function_combinators;
elem.used_database_engines = factories_info.database_engines;
elem.used_data_type_families = factories_info.data_type_families;
elem.used_dictionaries = factories_info.dictionaries;
elem.used_formats = factories_info.formats;
elem.used_functions = factories_info.functions;

View File

@ -1,21 +1,24 @@
2 worl \N 50 4950 Nullable(UInt64) 50
2 worl \N 50 4950 Nullable(UInt64) 50
2 worl [123,1,1] 49 \N 50 4950 Nullable(UInt64) 50
2 worl [123,1,1] 49 \N 50 4950 Nullable(UInt64) 50
arraySort(used_aggregate_functions)
['Array','If','OrDefault','OrNull','avg','count','sum','uniq']
['avg','count','groupBitAnd','sum','uniq']
arraySort(used_aggregate_function_combinators)
['Array','If','OrDefault','OrNull']
arraySort(used_table_functions)
['numbers']
arraySort(used_functions)
['addDays','cast','modulo','plus','substring','toDate','toDayOfYear','toTypeName']
['addDays','array','arrayFlatten','cast','modulo','plus','substring','toDate','toDayOfYear','toTypeName','toWeek']
arraySort(used_data_types)
['Nullable','UInt8']
arraySort(used_data_type_families)
['Array','Int32','Nullable','String']
used_databases
used_database_engines
['Atomic']
arraySort(used_data_types) used_storages
['DateTime','UInt64'] ['Memory']
arraySort(used_data_type_families) used_storages
['DateTime','Int64'] ['Memory']

View File

@ -1,6 +1,8 @@
SELECT uniqArray([1, 1, 2]),
SUBSTRING('Hello, world', 7, 5),
CAST(arrayJoin([NULL, NULL]) AS Nullable(UInt8)),
flatten([[[BIT_AND(123)]], [[mod(3, 2)], [CAST('1' AS INTEGER)]]]),
week(toDate('2000-12-05')),
CAST(arrayJoin([NULL, NULL]) AS Nullable(TEXT)),
avgOrDefaultIf(number, number % 2),
sumOrNull(number),
toTypeName(sumOrNull(number)),
@ -15,6 +17,11 @@ FROM system.query_log WHERE type = 'QueryFinish' AND (query LIKE '%toDate(\'2000
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
SELECT '';
SELECT arraySort(used_aggregate_function_combinators)
FROM system.query_log WHERE type = 'QueryFinish' AND (query LIKE '%toDate(\'2000-12-05\')%')
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
SELECT '';
SELECT arraySort(used_table_functions)
FROM system.query_log WHERE type = 'QueryFinish' AND (query LIKE '%toDate(\'2000-12-05\')%')
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
@ -25,7 +32,7 @@ FROM system.query_log WHERE type = 'QueryFinish' AND (query LIKE '%toDate(\'2000
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
SELECT '';
SELECT arraySort(used_data_types)
SELECT arraySort(used_data_type_families)
FROM system.query_log WHERE type = 'QueryFinish' AND (query LIKE '%toDate(\'2000-12-05\')%')
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
SELECT '';
@ -34,16 +41,16 @@ DROP database IF EXISTS test_query_log_factories_info1;
CREATE database test_query_log_factories_info1 ENGINE=Atomic;
SYSTEM FLUSH LOGS;
SELECT used_databases
SELECT used_database_engines
FROM system.query_log
WHERE type == 'QueryFinish' AND (query LIKE '%database test_query_log_factories_info%')
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;
SELECT '';
CREATE OR REPLACE TABLE test_query_log_factories_info1.memory_table (id UInt64, date DateTime) ENGINE=Memory();
CREATE OR REPLACE TABLE test_query_log_factories_info1.memory_table (id BIGINT, date DateTime) ENGINE=Memory();
SYSTEM FLUSH LOGS;
SELECT arraySort(used_data_types), used_storages
SELECT arraySort(used_data_type_families), used_storages
FROM system.query_log
WHERE type == 'QueryFinish' AND (query LIKE '%TABLE test%')
ORDER BY query_start_time DESC LIMIT 1 FORMAT TabSeparatedWithNames;