Database engines: development [#METR-19997].

This commit is contained in:
Alexey Milovidov 2016-03-19 04:06:36 +03:00
parent ad1ac0d8df
commit 073c0de63e
4 changed files with 6 additions and 5 deletions

View File

@ -39,7 +39,7 @@ public:
void attachTable(const String & table_name, const StoragePtr & table) override;
StoragePtr detachTable(const String & table_name) override;
void renameTable(const String & table_name, IDatabase & to_database, const String & to_table_name) override;
void renameTable(const Context & context, const String & table_name, IDatabase & to_database, const String & to_table_name) override;
ASTPtr getCreateQuery(const String & table_name) const override;

View File

@ -66,7 +66,7 @@ public:
virtual StoragePtr detachTable(const String & name) = 0;
/// Переименовать таблицу и, возможно, переместить таблицу в другую БД.
virtual void renameTable(const String & name, IDatabase & to_database, const String & to_name) = 0;
virtual void renameTable(const Context & context, const String & name, IDatabase & to_database, const String & to_name) = 0;
/// Получить запрос CREATE TABLE для таблицы. Может выдавать информацию и для detached таблиц, для которых есть метаданные.
virtual ASTPtr getCreateQuery(const String & name) const = 0;

View File

@ -442,7 +442,8 @@ static ASTPtr getCreateQueryImpl(const String & path, const String & table_name)
}
void DatabaseOrdinary::renameTable(const String & table_name, IDatabase & to_database, const String & to_table_name)
void DatabaseOrdinary::renameTable(
const Context & context, const String & table_name, IDatabase & to_database, const String & to_table_name)
{
DatabaseOrdinary * to_database_concrete = typeid_cast<DatabaseOrdinary *>(&to_database);
@ -457,7 +458,7 @@ void DatabaseOrdinary::renameTable(const String & table_name, IDatabase & to_dat
/// Уведомляем таблицу о том, что она переименовывается. Если таблица не поддерживает переименование - кинется исключение.
try
{
table->rename(path + "data/" + escapeForFileName(to_database_concrete->name) + "/",
table->rename(context.getPath() + "/data/" + escapeForFileName(to_database_concrete->name) + "/",
to_database_concrete->name,
to_table_name);
}

View File

@ -102,7 +102,7 @@ BlockIO InterpreterRenameQuery::execute()
context.assertTableDoesntExist(elem.to_database_name, elem.to_table_name);
context.getDatabase(elem.from_database_name)->renameTable(
elem.from_table_name, *context.getDatabase(elem.to_database_name), elem.to_table_name);
context, elem.from_table_name, *context.getDatabase(elem.to_database_name), elem.to_table_name);
}
return {};