Updating a Nullable column value by using alter .... where ... causes to set another value!

ClickHouse version: 20.6.3.28
Engine: MergeTree
OS: Ubuntu 18.04.3 LTS

Steps to reproduce:
```sql
CREATE TABLE table1(
	id int,
	price Nullable(Int32)
)
ENGINE = MergeTree()
PARTITION BY id
ORDER BY (id);
INSERT INTO table1 (id, price) VALUES (1, 100);
ALTER TABLE table1  update price = 150 where id=1;
SELECT * FROM table1;
```
We expect the price to be `150`, but it's `93148480`:

```
┌─id─┬────price─┐
│  1 │ 93148480 │
└────┴──────────┘
```
Using `Decimal(9,2)` field instead of `Int32` would set the value  `932342.88` always. It seems there's a fixed value for each data type.

If we don't use such a `where` clause, it works correctly:
```sql
ALTER TABLE db1.table1  update price = 150 where 1=1;
┌─id─┬─price─┐
│  1 │   150 │
└────┴───────┘
```
{
        return name;
    }
    size_t getNumberOfArguments() const override { return 3; }
    bool useDefaultImplementationForNulls() const override { return false; }
    ColumnNumbers getArgumentsThatDontImplyNullableReturnType(size_t ) const override { return {0}; }
    
    DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override
    {
        if (arguments[0]->onlyNull())
            return arguments[2];
        if (arguments[0]->isNullable())
            return getReturnTypeImpl({
                removeNullable(arguments[0]), arguments[1], arguments[2]});
        if (!WhichDataType(arguments[0]).isUInt8())
            throw Exception("Illegal type " + arguments[0]->getName() + " of first argument (condition) of function if. Must be UInt8.",
                ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT);
        return getLeastSupertype({arguments[1], arguments[2]});
    }
    void executeImpl(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) const override
    {
        if (executeForConstAndNullableCondition(block, arguments, result, input_rows_count)
            || executeForNullThenElse(block, arguments, result, input_rows_count)
            || executeForNullableThenElse(block, arguments, result, input_rows_count))
            return;
        const ColumnWithTypeAndName & arg_cond = block.getByPosition(arguments[0]);
        const ColumnWithTypeAndName & arg_then = block.getByPosition(arguments[1]);