```sql
drop table if exists src;

create table src( A Int64, B String, C String) Engine=MergeTree order by A
SETTINGS min_bytes_for_wide_part=0;
insert into src values(1, 'one', 'test');

alter table src detach partition tuple();

alter table src modify column B Nullable(String);

alter table src attach partition tuple();
select * from src;
┌─A─┬─B───┬─C────┐
│ 1 │ one │ test │
└───┴─────┴──────┘

alter table src update C = 'test1' where 1 settings mutations_sync=2;

select * from src;
┌─A─┬─B────┬─C─────┐
│ 1 │ ᴺᵁᴸᴸ │ test1 │   -- expected B='one'
└───┴──────┴───────┘
```

```sql
drop table if exists src;
create table src( A String, B String, C String) Engine=MergeTree order by A
SETTINGS min_bytes_for_wide_part=0;
insert into src values('one', 'one', 'test');

alter table src detach partition tuple();

alter table src modify column A LowCardinality(String);

alter table src attach partition tuple();

select * from src;
┌─A───┬─B───┬─C────┐
│ one │ one │ test │
└─────┴─────┴──────┘

alter table src update C = 'test1' where 1 settings mutations_sync=2;

select * from src;

Received exception from server (version 22.9.1):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: 
Got empty stream for SerializationLowCardinality keys.: (while reading column A): 
(while reading from part /var/lib/clickhouse/store/11b/11b74812-48b9-4c1f-9bdc-3e7a28137a9e/all_3_3_0_4/ from mark 0 with max_rows_to_read = 1): 
While executing MergeTreeInOrder. (LOGICAL_ERROR)

```

```sql
drop table if exists src;
create table src( A String, B String, C String) Engine=MergeTree order by A
SETTINGS min_bytes_for_wide_part=0;
insert into src values('one', 'one', 'test');

alter table src detach partition tuple();

alter table src modify column A LowCardinality(String);

alter table src attach partition tuple();

select * from src;
┌─A───┬─B───┬─C────┐
│ one │ one │ test │
└─────┴─────┴──────┘

alter table src modify column C LowCardinality(String);

select * from src;

Received exception from server (version 22.9.3):
Code: 49. DB::Exception: Received from localhost:9000. 
DB::Exception: Got empty stream for SerializationLowCardinality keys.: 
```

related https://github.com/ClickHouse/ClickHouse/issues/42083 , https://github.com/ClickHouse/ClickHouse/issues/42074
(basically it's the same one issue, but I opened this one, because I think the root issue is in `alter update`.

it seems `alter update` updates columns.txt for all columns even if they are not participated in the `alter update`.
LOG_TRACE(ctx->log, "Mutating part {} to mutation version {}", ctx->source_part->name, ctx->future_part->part_info.mutation);
    }
    MutationHelpers::splitMutationCommands(ctx->source_part, ctx->commands_for_part, ctx->for_interpreter, ctx->for_file_renames);
    ctx->stage_progress = std::make_unique<MergeStageProgress>(1.0);
    if (!ctx->for_interpreter.empty())
    {
        ctx->interpreter = std::make_unique<MutationsInterpreter>(
            ctx->storage_from_source_part, ctx->metadata_snapshot, ctx->for_interpreter, context_for_reading, true);
        ctx->materialized_indices = ctx->interpreter->grabMaterializedIndices();
        ctx->materialized_projections = ctx->interpreter->grabMaterializedProjections();
        ctx->mutation_kind = ctx->interpreter->getMutationKind();
        
        
        ctx->interpreter->setApplyDeletedMask(false);
        ctx->mutating_pipeline_builder = ctx->interpreter->execute();
        ctx->updated_header = ctx->interpreter->getUpdatedHeader();
        ctx->progress_callback = MergeProgressCallback((*ctx->mutate_entry)->ptr(), ctx->watch_prev_elapsed, *ctx->stage_progress);
    }
    auto single_disk_volume = std::make_shared<SingleDiskVolume>("volume_" + ctx->future_part->name, ctx->space_reservation->getDisk(), 0);
    
    
    String tmp_part_dir_name = "tmp_mut_" + ctx->future_part->name;
    ctx->temporary_directory_lock = ctx->data->getTemporaryPartDirectoryHolder(tmp_part_dir_name);
    auto data_part_storage = std::make_shared<DataPartStorageOnDisk>(
        single_disk_volume,
        ctx->data->getRelativeDataPath(),
        tmp_part_dir_name);
    ctx->data_part_storage_builder = std::make_shared<DataPartStorageBuilderOnDisk>(
        single_disk_volume,
        ctx->data->getRelativeDataPath(),