It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
{
    sample_block = sample_block_;
    types.reserve(sample_block.columns());
    for (auto & elem : sample_block)
    {
        
        if (elem.column->empty())
            elem.column = elem.type->createColumnConstWithDefaultValue(1)->convertToFullColumnIfConst();
        bool is_nullable = elem.type->isNullable();
        DataTypePtr type_not_nullable = removeNullable(elem.type);
        const IDataType * type = type_not_nullable.get();
        if (typeid_cast<const DataTypeUInt8 *>(type))
            types.emplace_back(ValueType::vtUInt8, is_nullable);
        else if (typeid_cast<const DataTypeUInt16 *>(type))
            types.emplace_back(ValueType::vtUInt16, is_nullable);
        else if (typeid_cast<const DataTypeUInt32 *>(type))
            types.emplace_back(ValueType::vtUInt32, is_nullable);
        else if (typeid_cast<const DataTypeUInt64 *>(type))
            types.emplace_back(ValueType::vtUInt64, is_nullable);
        else if (typeid_cast<const DataTypeInt8 *>(type))
            types.emplace_back(ValueType::vtInt8, is_nullable);
        else if (typeid_cast<const DataTypeInt16 *>(type))
            types.emplace_back(ValueType::vtInt16, is_nullable);
        else if (typeid_cast<const DataTypeInt32 *>(type))
            types.emplace_back(ValueType::vtInt32, is_nullable);
        else if (typeid_cast<const DataTypeInt64 *>(type))
            types.emplace_back(ValueType::vtInt64, is_nullable);