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 │
└────┴───────┘
```
left_ok = true;
            right_ok = executeConstRightType<T0, T1, ColVecT0, ColVecT1>(cond_col, block, arguments, result, col_const_left);
        }
        else if (const auto * col_arr_left = checkAndGetColumn<ColumnArray>(col_left_untyped))
        {
            if (auto col_arr_left_elems = checkAndGetColumn<ColVecT0>(&col_arr_left->getData()))
            {
                left_ok = true;
                right_ok = executeRightTypeArray<T0, T1, ColVecT0, ColVecT1>(
                    cond_col, block, arguments, result, col_arr_left, input_rows_count);
            }
        }
        else if (const auto * col_const_arr_left = checkAndGetColumnConst<ColumnArray>(col_left_untyped))
        {
            if (checkColumn<ColVecT0>(&assert_cast<const ColumnArray &>(col_const_arr_left->getDataColumn()).getData()))
            {
                left_ok = true;
                right_ok = executeConstRightTypeArray<T0, T1, ColVecT0, ColVecT1>(
                    cond_col, block, arguments, result, col_const_arr_left, input_rows_count);
            }
        }
        if (!left_ok)
            return false;
        ColumnWithTypeAndName & right_column_typed = block.getByPosition(arguments[2]);
        if (!right_ok)
            throw Exception("Illegal column " + right_column_typed.column->getName() + " of third argument of function " + getName(),
                ErrorCodes::ILLEGAL_COLUMN);
        return true;
    }
    static bool executeString(const ColumnUInt8 * cond_col, Block & block, const ColumnNumbers & arguments, size_t result)