blob: a98cd6d99f93424c1ea0879fdf8f5d458da2a2a8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <Storages/MergeTree/AlterConversions.h>
#include <Common/Exception.h>
namespace DB
{
namespace ErrorCodes
{
extern const int LOGICAL_ERROR;
}
void AlterConversions::addMutationCommand(const MutationCommand & command)
{
/// Currently only RENAME_COLUMN is applied on-fly.
if (command.type == MutationCommand::Type::RENAME_COLUMN)
rename_map.emplace_back(RenamePair{command.rename_to, command.column_name});
}
bool AlterConversions::columnHasNewName(const std::string & old_name) const
{
for (const auto & [new_name, prev_name] : rename_map)
{
if (old_name == prev_name)
return true;
}
return false;
}
std::string AlterConversions::getColumnNewName(const std::string & old_name) const
{
for (const auto & [new_name, prev_name] : rename_map)
{
if (old_name == prev_name)
return new_name;
}
throw Exception(ErrorCodes::LOGICAL_ERROR, "Column {} was not renamed", old_name);
}
bool AlterConversions::isColumnRenamed(const std::string & new_name) const
{
for (const auto & [name_to, name_from] : rename_map)
{
if (name_to == new_name)
return true;
}
return false;
}
/// Get column old name before rename (lookup by key in rename_map)
std::string AlterConversions::getColumnOldName(const std::string & new_name) const
{
for (const auto & [name_to, name_from] : rename_map)
{
if (name_to == new_name)
return name_from;
}
throw Exception(ErrorCodes::LOGICAL_ERROR, "Column {} was not renamed", new_name);
}
}
|