This commit is contained in:
Andrey Mironov 2015-04-13 16:54:49 +03:00
parent 626a49cb56
commit c477f5f152
2 changed files with 15 additions and 1 deletions

View File

@ -115,7 +115,15 @@ void InterpreterRenameQuery::execute()
/// Уведомляем таблицу о том, что она переименовывается. Если таблица не поддерживает переименование - кинется исключение.
StoragePtr table = context.getTable(elem.from_database_name, elem.from_table_name);
table->rename(path + "data/" + elem.to_database_name_escaped + "/", elem.to_database_name, elem.to_table_name);
try
{
table->rename(path + "data/" + elem.to_database_name_escaped + "/", elem.to_database_name,
elem.to_table_name);
}
catch (const Poco::Exception & e)
{
throw Exception{e};
}
/// Пишем новый файл с метаданными.
{

View File

@ -362,6 +362,12 @@ void MergeTreeData::setPath(const String & new_full_path, bool move_data)
{
if (move_data)
{
if (Poco::File{new_full_path}.exists())
throw Exception{
"Target path already exists: " + new_full_path,
/// @todo existing target can also be a file, not directory
ErrorCodes::DIRECTORY_ALREADY_EXISTS
};
Poco::File(full_path).renameTo(new_full_path);
/// Если данные перемещать не нужно, значит их переместил кто-то другой. Расчитываем, что он еще и сбросил кеши.
context.resetCaches();