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 │
└────┴───────┘
```
if (!col_right_vec)
                    return false;
                auto res = block.getByPosition(result).type->createColumn();
                conditional(
                    NumericArraySource<T0>(*col_left_array),
                    NumericArraySource<T1>(*col_right_array),
                    NumericArraySink<ResultType>(assert_cast<ColumnArray &>(*res), input_rows_count),
                    cond_col->getData());
                block.getByPosition(result).column = std::move(res);
                return true;
            }
            else if (const auto * col_right_const_array = checkAndGetColumnConst<ColumnArray>(col_right_untyped))
            {
                const ColumnArray * col_right_const_array_data = checkAndGetColumn<ColumnArray>(&col_right_const_array->getDataColumn());
                if (!checkColumn<ColVecT1>(&col_right_const_array_data->getData()))
                    return false;
                auto res = block.getByPosition(result).type->createColumn();
                conditional(
                    NumericArraySource<T0>(*col_left_array),
                    ConstSource<NumericArraySource<T1>>(*col_right_const_array),
                    NumericArraySink<ResultType>(assert_cast<ColumnArray &>(*res), input_rows_count),
                    cond_col->getData());
                block.getByPosition(result).column = std::move(res);
                return true;
            }
        }
        return false;
    }
    template <typename T0, typename T1, typename ColVecT0, typename ColVecT1>
    bool executeConstRightTypeArray(