mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
fix
update fix
This commit is contained in:
parent
9ad405cae8
commit
3789e23dc9
@ -49,7 +49,7 @@ public:
|
|||||||
const ASTPtr & left_in_operand, ContextPtr query_context, const StorageMetadataPtr & metadata_snapshot) const override;
|
const ASTPtr & left_in_operand, ContextPtr query_context, const StorageMetadataPtr & metadata_snapshot) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using DbToTableSetMap = std::unordered_map<String, std::unordered_set<String>>;
|
using DbToTableSetMap = std::map<String, std::set<String>>;
|
||||||
|
|
||||||
std::optional<OptimizedRegularExpression> source_database_regexp;
|
std::optional<OptimizedRegularExpression> source_database_regexp;
|
||||||
std::optional<OptimizedRegularExpression> source_table_regexp;
|
std::optional<OptimizedRegularExpression> source_table_regexp;
|
||||||
|
@ -106,10 +106,13 @@ ColumnsDescription TableFunctionMerge::getActualTableStructure(ContextPtr contex
|
|||||||
{
|
{
|
||||||
for (const auto & db_with_tables : getSourceDatabasesAndTables(context))
|
for (const auto & db_with_tables : getSourceDatabasesAndTables(context))
|
||||||
{
|
{
|
||||||
auto storage = DatabaseCatalog::instance().tryGetTable(StorageID{db_with_tables.first, *db_with_tables.second.begin()}, context);
|
for (const auto & table : db_with_tables.second)
|
||||||
|
{
|
||||||
|
auto storage = DatabaseCatalog::instance().tryGetTable(StorageID{db_with_tables.first, table}, context);
|
||||||
if (storage)
|
if (storage)
|
||||||
return ColumnsDescription{storage->getInMemoryMetadataPtr()->getColumns().getAllPhysical()};
|
return ColumnsDescription{storage->getInMemoryMetadataPtr()->getColumns().getAllPhysical()};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
throwNoTablesMatchRegexp(source_database_name_or_regexp, source_table_regexp);
|
throwNoTablesMatchRegexp(source_database_name_or_regexp, source_table_regexp);
|
||||||
}
|
}
|
||||||
@ -130,7 +133,7 @@ StoragePtr TableFunctionMerge::executeImpl(const ASTPtr & /*ast_function*/, Cont
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
NameSet
|
TableFunctionMerge::TableSet
|
||||||
TableFunctionMerge::getMatchedTablesWithAccess(const String & database_name, const String & table_regexp, const ContextPtr & context)
|
TableFunctionMerge::getMatchedTablesWithAccess(const String & database_name, const String & table_regexp, const ContextPtr & context)
|
||||||
{
|
{
|
||||||
OptimizedRegularExpression table_re(table_regexp);
|
OptimizedRegularExpression table_re(table_regexp);
|
||||||
@ -144,7 +147,7 @@ TableFunctionMerge::getMatchedTablesWithAccess(const String & database_name, con
|
|||||||
bool granted_show_on_all_tables = access->isGranted(AccessType::SHOW_TABLES, database_name);
|
bool granted_show_on_all_tables = access->isGranted(AccessType::SHOW_TABLES, database_name);
|
||||||
bool granted_select_on_all_tables = access->isGranted(AccessType::SELECT, database_name);
|
bool granted_select_on_all_tables = access->isGranted(AccessType::SELECT, database_name);
|
||||||
|
|
||||||
NameSet tables;
|
TableSet tables;
|
||||||
|
|
||||||
for (auto it = database->getTablesIterator(context, table_name_match); it->isValid(); it->next())
|
for (auto it = database->getTablesIterator(context, table_name_match); it->isValid(); it->next())
|
||||||
{
|
{
|
||||||
|
@ -20,11 +20,12 @@ private:
|
|||||||
StoragePtr executeImpl(const ASTPtr & ast_function, ContextPtr context, const std::string & table_name, ColumnsDescription cached_columns) const override;
|
StoragePtr executeImpl(const ASTPtr & ast_function, ContextPtr context, const std::string & table_name, ColumnsDescription cached_columns) const override;
|
||||||
const char * getStorageTypeName() const override { return "Merge"; }
|
const char * getStorageTypeName() const override { return "Merge"; }
|
||||||
|
|
||||||
using DbToTableSetMap = std::unordered_map<String, std::unordered_set<String>>;
|
using TableSet = std::set<String>;
|
||||||
|
using DbToTableSetMap = std::map<String, TableSet>;
|
||||||
const DbToTableSetMap & getSourceDatabasesAndTables(ContextPtr context) const;
|
const DbToTableSetMap & getSourceDatabasesAndTables(ContextPtr context) const;
|
||||||
ColumnsDescription getActualTableStructure(ContextPtr context) const override;
|
ColumnsDescription getActualTableStructure(ContextPtr context) const override;
|
||||||
void parseArguments(const ASTPtr & ast_function, ContextPtr context) override;
|
void parseArguments(const ASTPtr & ast_function, ContextPtr context) override;
|
||||||
static NameSet getMatchedTablesWithAccess(const String & database_name, const String & table_regexp, const ContextPtr & context);
|
static TableSet getMatchedTablesWithAccess(const String & database_name, const String & table_regexp, const ContextPtr & context);
|
||||||
|
|
||||||
String source_database_name_or_regexp;
|
String source_database_name_or_regexp;
|
||||||
String source_table_regexp;
|
String source_table_regexp;
|
||||||
|
@ -49,9 +49,9 @@
|
|||||||
2018-08-01 100
|
2018-08-01 100
|
||||||
2018-08-01 200
|
2018-08-01 200
|
||||||
--------------Implicit type conversion------------
|
--------------Implicit type conversion------------
|
||||||
|
2018-08-01 -1
|
||||||
|
2018-08-01 1
|
||||||
|
2018-08-01 -1
|
||||||
2018-08-01 1
|
2018-08-01 1
|
||||||
2018-08-01 18446744073709551615
|
|
||||||
2018-08-01 1
|
|
||||||
2018-08-01 18446744073709551615
|
|
||||||
2018-08-01 1
|
2018-08-01 1
|
||||||
2018-08-01 1
|
2018-08-01 1
|
||||||
|
Loading…
Reference in New Issue
Block a user