void StorageMaterializedView::drop() { context.getGlobalContext().removeDependency( DatabaseAndTableName(select_database_name, select_table_name), DatabaseAndTableName(database_name, table_name)); auto inner_table_name = getInnerTableName(); if (context.tryGetTable(database_name, inner_table_name)) { /// Состваляем и выполняем запрос drop для внутреннего хранилища. auto drop_query = std::make_shared<ASTDropQuery>(); drop_query->database = database_name; drop_query->table = inner_table_name; ASTPtr ast_drop_query = drop_query; InterpreterDropQuery drop_interpreter(ast_drop_query, context); drop_interpreter.execute(); } }
Dependencies Context::getDependencies(const String & database_name, const String & table_name) const { auto lock = getLock(); String db = database_name.empty() ? current_database : database_name; checkDatabaseAccessRights(db); ViewDependencies::const_iterator iter = shared->view_dependencies.find(DatabaseAndTableName(db, table_name)); if (iter == shared->view_dependencies.end()) return {}; return Dependencies(iter->second.begin(), iter->second.end()); }