1- #include < Access/ContextAccess.h>
21#include < AggregateFunctions/AggregateFunctionFactory.h>
3- #include < AggregateFunctions/Combinators/AggregateFunctionCombinatorFactory .h>
2+ #include < Access/ContextAccess .h>
43#include < Columns/ColumnString.h>
4+ #include < Common/Macros.h>
55#include < Core/Settings.h>
66#include < DataTypes/DataTypeFactory.h>
77#include < DataTypes/DataTypeNullable.h>
88#include < DataTypes/DataTypeString.h>
99#include < Databases/IDatabase.h>
10- #include < Dictionaries/DictionaryStructure.h>
1110#include < Dictionaries/IDictionary.h>
1211#include < Dictionaries/IDictionarySource.h>
12+ #include < Dictionaries/DictionaryStructure.h>
1313#include < Formats/FormatFactory.h>
14- #include < Functions/FunctionFactory.h>
1514#include < Functions/IFunction.h>
16- #include < Functions/UserDefined/UserDefinedExecutableFunctionFactory .h>
15+ #include < Functions/FunctionFactory .h>
1716#include < Functions/UserDefined/UserDefinedSQLFunctionFactory.h>
17+ #include < Functions/UserDefined/UserDefinedExecutableFunctionFactory.h>
1818#include < Interpreters/Context.h>
1919#include < Interpreters/DatabaseCatalog.h>
2020#include < Interpreters/ExternalDictionariesLoader.h>
2121#include < Parsers/CommonParsers.h>
22- #include < Storages/MergeTree/MergeTreeSettings.h>
23- #include < Storages/StorageFactory.h>
2422#include < Storages/System/StorageSystemCompletions.h>
23+ #include < Storages/StorageFactory.h>
24+ #include < Storages/MergeTree/MergeTreeSettings.h>
2525#include < TableFunctions/TableFunctionFactory.h>
26- #include < Common/Macros.h>
2726
2827
2928namespace DB
3029{
3130
3231namespace Setting
3332{
34- extern const SettingsUInt64 readonly;
35- extern const SettingsSeconds lock_acquire_timeout;
33+ extern const SettingsUInt64 readonly;
34+ extern const SettingsSeconds lock_acquire_timeout;
3635}
3736
3837static constexpr const char * DATABASE_CONTEXT = " database" ;
3938static constexpr const char * TABLE_CONTEXT = " table" ;
4039static constexpr const char * COLUMN_CONTEXT = " column" ;
4140static constexpr const char * FUNCTION_CONTEXT = " function" ;
42- static constexpr const char * AGGREGATE_FUNCTION_COMBINATOR_PAIR_CONTEXT = " aggregate function combinator pair" ;
4341static constexpr const char * TABLE_ENGINE_CONTEXT = " table engine" ;
4442static constexpr const char * FORMAT_CONTEXT = " format" ;
4543static constexpr const char * TABLE_FUNCTION_CONTEXT = " table function" ;
@@ -53,25 +51,19 @@ static constexpr const char * DICTIONARY_CONTEXT = "dictionary";
5351
5452ColumnsDescription StorageSystemCompletions::getColumnsDescription ()
5553{
56- auto description = ColumnsDescription{
54+ auto description = ColumnsDescription
55+ {
5756 {" word" , std::make_shared<DataTypeString>(), " Completion token." },
5857 {" context" , std::make_shared<DataTypeString>(), " Token entity kind (e.g. table)." },
59- {" belongs" ,
60- std::make_shared<DataTypeNullable>(std::make_shared<DataTypeString>()),
61- " Token for entity, this token belongs to (e.g. name of owning database)." }};
58+ {" belongs" , std::make_shared<DataTypeNullable>(std::make_shared<DataTypeString>()), " Token for entity, this token belongs to (e.g. name of owning database)." }
59+ };
6260 return description;
6361}
6462
65- void fillDataWithTableColumns (
66- const String & database_name,
67- const String & table_name,
68- const StoragePtr & table,
69- MutableColumns & res_columns,
70- const ContextPtr & context)
63+ void fillDataWithTableColumns (const String & database_name, const String & table_name, const StoragePtr & table, MutableColumns & res_columns, const ContextPtr & context)
7164{
7265 const auto & access = context->getAccess ();
73- if (!access->isGranted (AccessType::SHOW_TABLES) || !access->isGranted (AccessType::SHOW_TABLES, database_name)
74- || !access->isGranted (AccessType::SHOW_TABLES, database_name, table_name))
66+ if (!access->isGranted (AccessType::SHOW_TABLES) || !access->isGranted (AccessType::SHOW_TABLES, database_name) || !access->isGranted (AccessType::SHOW_TABLES, database_name, table_name))
7567 return ;
7668
7769 if (!table)
@@ -127,6 +119,7 @@ void fillDataWithDatabasesTablesColumns(MutableColumns & res_columns, const Cont
127119 const auto & table = iterator->table ();
128120 fillDataWithTableColumns (database_name, table_name, table, res_columns, context);
129121 }
122+
130123 }
131124
132125 if (context->hasSessionContext ())
@@ -161,23 +154,6 @@ void fillDataWithFunctions(MutableColumns & res_columns, const ContextPtr & cont
161154 insert_function (function_name);
162155}
163156
164- void fillDataWithAggregateFunctionCombinatorPair (MutableColumns & res_columns)
165- {
166- const auto & aggregate_functions = AggregateFunctionFactory::instance ().getAllRegisteredNames ();
167- const auto & aggregate_function_combinators = AggregateFunctionCombinatorFactory::instance ().getAllAggregateFunctionCombinators ();
168- for (const auto & function_name : aggregate_functions)
169- {
170- for (const auto & [combinator_name, combinator] : aggregate_function_combinators)
171- {
172- if (combinator->isForInternalUsageOnly ())
173- continue ;
174- res_columns[0 ]->insert (function_name + combinator_name);
175- res_columns[1 ]->insert (AGGREGATE_FUNCTION_COMBINATOR_PAIR_CONTEXT);
176- res_columns[2 ]->insertDefault ();
177- }
178- }
179- }
180-
181157void fillDataWithTableEngines (MutableColumns & res_columns)
182158{
183159 const auto & storage_factory = StorageFactory::instance ();
@@ -194,9 +170,9 @@ void fillDataWithFormats(MutableColumns & res_columns)
194170{
195171 const auto & format_factory = FormatFactory::instance ();
196172 const auto & formats = format_factory.getAllFormats ();
197- for (const auto & [_, creators ] : formats)
173+ for (const auto & [format_name, _ ] : formats)
198174 {
199- res_columns[0 ]->insert (creators. name );
175+ res_columns[0 ]->insert (format_name );
200176 res_columns[1 ]->insert (FORMAT_CONTEXT);
201177 res_columns[2 ]->insertDefault ();
202178 }
@@ -296,7 +272,7 @@ void fillDataWithPolicies(MutableColumns & res_columns, const ContextPtr & conte
296272void fillDataWithDictionaries (MutableColumns & res_columns, const ContextPtr & context)
297273{
298274 const auto & access = context->getAccess ();
299- if (! access->isGranted (AccessType::SHOW_DICTIONARIES))
275+ if (access->isGranted (AccessType::SHOW_DICTIONARIES))
300276 return ;
301277
302278 const auto & external_dictionaries = context->getExternalDictionariesLoader ();
@@ -321,8 +297,7 @@ void fillDataWithDictionaries(MutableColumns & res_columns, const ContextPtr & c
321297 }
322298}
323299
324- void StorageSystemCompletions::fillData (
325- MutableColumns & res_columns, ContextPtr context, const ActionsDAG::Node *, std::vector<UInt8>) const
300+ void StorageSystemCompletions::fillData (MutableColumns & res_columns, ContextPtr context, const ActionsDAG::Node *, std::vector<UInt8>) const
326301{
327302 fillDataWithDatabasesTablesColumns (res_columns, context);
328303 fillDataWithFunctions (res_columns, context);
@@ -337,7 +312,6 @@ void StorageSystemCompletions::fillData(
337312 fillDataWithMacros (res_columns, context);
338313 fillDataWithPolicies (res_columns, context);
339314 fillDataWithDictionaries (res_columns, context);
340- fillDataWithAggregateFunctionCombinatorPair (res_columns);
341315}
342316
343317}
0 commit comments