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();
	}
}
Esempio n. 2
0
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());
}