```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_entry.quorum = getQuorumSize(replicas_num);
            log_entry.block_id = block_id;
            log_entry.new_part_type = part->getType();
            ops.emplace_back(zkutil::makeCreateRequest(
                storage.zookeeper_path + "/log/log-",
                log_entry.toString(),
                zkutil::CreateMode::PersistentSequential));
            
            block_number_lock->getUnlockOps(ops);
            /** If we need a quorum - create a node in which the quorum is monitored.
              * (If such a node already exists, then someone has managed to make another quorum record at the same time,
              *  but for it the quorum has not yet been reached.
              *  You can not do the next quorum record at this time.)
              */
            if (isQuorumEnabled())
            {
                ReplicatedMergeTreeQuorumEntry quorum_entry;
                quorum_entry.part_name = part->name;
                quorum_entry.required_number_of_replicas = getQuorumSize(replicas_num);
                quorum_entry.replicas.insert(storage.replica_name);
                /** At this point, this node will contain information that the current replica received a part.
                    * When other replicas will receive this part (in the usual way, processing the replication log),
                    *  they will add themselves to the contents of this node.
                    * When it contains information about `quorum` number of replicas, this node is deleted,
                    *  which indicates that the quorum has been reached.
                    */
                if (quorum_parallel)
                    quorum_info.status_path = storage.zookeeper_path + "/quorum/parallel/" + part->name;
                ops.emplace_back(
                    zkutil::makeCreateRequest(