mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
fix drop column with enabled sparse columns
This commit is contained in:
parent
cc3c10d89d
commit
ede63a0f4e
@ -67,7 +67,9 @@ static void splitAndModifyMutationCommands(
|
|||||||
|
|
||||||
if (!isWidePart(part) || !isFullPartStorage(part->getDataPartStorage()))
|
if (!isWidePart(part) || !isFullPartStorage(part->getDataPartStorage()))
|
||||||
{
|
{
|
||||||
NameSet mutated_columns, dropped_columns;
|
NameSet mutated_columns;
|
||||||
|
NameSet dropped_columns;
|
||||||
|
|
||||||
for (const auto & command : commands)
|
for (const auto & command : commands)
|
||||||
{
|
{
|
||||||
if (command.type == MutationCommand::Type::MATERIALIZE_INDEX
|
if (command.type == MutationCommand::Type::MATERIALIZE_INDEX
|
||||||
@ -258,6 +260,10 @@ getColumnsForNewDataPart(
|
|||||||
storage_columns.emplace_back(column);
|
storage_columns.emplace_back(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NameSet storage_columns_set;
|
||||||
|
for (const auto & [name, _] : storage_columns)
|
||||||
|
storage_columns_set.insert(name);
|
||||||
|
|
||||||
for (const auto & command : all_commands)
|
for (const auto & command : all_commands)
|
||||||
{
|
{
|
||||||
if (command.type == MutationCommand::UPDATE)
|
if (command.type == MutationCommand::UPDATE)
|
||||||
@ -292,13 +298,15 @@ getColumnsForNewDataPart(
|
|||||||
SerializationInfoByName new_serialization_infos;
|
SerializationInfoByName new_serialization_infos;
|
||||||
for (const auto & [name, old_info] : serialization_infos)
|
for (const auto & [name, old_info] : serialization_infos)
|
||||||
{
|
{
|
||||||
if (removed_columns.contains(name))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
auto it = renamed_columns_from_to.find(name);
|
auto it = renamed_columns_from_to.find(name);
|
||||||
auto new_name = it == renamed_columns_from_to.end() ? name : it->second;
|
auto new_name = it == renamed_columns_from_to.end() ? name : it->second;
|
||||||
|
|
||||||
if (!updated_header.has(new_name))
|
if (!storage_columns_set.contains(new_name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/// In compact part we read all columns and all of them are in @updated_header.
|
||||||
|
/// But in wide part we must keep serialization infos for columns that are not touched by mutation.
|
||||||
|
if (!updated_header.has(new_name) && isWidePart(source_part))
|
||||||
{
|
{
|
||||||
new_serialization_infos.emplace(new_name, old_info);
|
new_serialization_infos.emplace(new_name, old_info);
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user