MCPcopy Create free account
hub / github.com/ByConity/ByConity / checkDatabaseAndTable

Function checkDatabaseAndTable

src/Optimizer/QueryUseOptimizerChecker.cpp:74–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72}
73
74static bool checkDatabaseAndTable(String database_name, String table_name, ContextMutablePtr context, const NameSet & ctes)
75{
76 /// not with table
77 if (database_name.empty() && ctes.contains(table_name))
78 return true;
79
80 /// If the database is not specified - use the current database.
81 auto table_id = context->tryResolveStorageID(StorageID(database_name, table_name));
82 auto storage_table = DatabaseCatalog::instance().tryGetTable(table_id, context);
83 if (database_name.empty() && !storage_table)
84 database_name = context->getCurrentDatabase();
85
86 if (!storage_table)
87 return false;
88
89 if (database_name == "system")
90 return true;
91
92 if (dynamic_cast<const StorageView *>(storage_table.get()))
93 {
94 auto table_metadata_snapshot = storage_table->getInMemoryMetadataPtr();
95 auto subquery = table_metadata_snapshot->getSelectQuery().inner_query;
96
97 QueryUseOptimizerVisitor checker;
98 QueryUseOptimizerContext check_context{.context = context};
99 return ASTVisitorUtil::accept(subquery, checker, check_context);
100 }
101
102 return storage_table->supportsOptimizer();
103}
104
105bool QueryUseOptimizerChecker::check(ASTPtr node, ContextMutablePtr context, bool throw_exception)
106{

Callers 3

checkMethod · 0.85
visitASTSelectQueryMethod · 0.85
visitASTFunctionMethod · 0.85

Calls 11

tryResolveStorageIDMethod · 0.80
getCurrentDatabaseMethod · 0.80
StorageIDClass · 0.50
emptyMethod · 0.45
containsMethod · 0.45
tryGetTableMethod · 0.45
getMethod · 0.45
getSelectQueryMethod · 0.45
supportsOptimizerMethod · 0.45

Tested by

no test coverage detected