It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
{
        if (payload.eof())
            throw Exception("Attempt to read after EOF.", ErrorCodes::ATTEMPT_TO_READ_AFTER_EOF);
        UInt16 header = static_cast<unsigned char>(*payload.position());
        switch (header)
        {
            case PACKET_EOF:
                throw ReplicationError("Master maybe lost", ErrorCodes::UNKNOWN_EXCEPTION);
            case PACKET_ERR:
                ERRPacket err;
                err.readPayloadWithUnpacked(payload);
                throw ReplicationError(err.error_message, ErrorCodes::UNKNOWN_EXCEPTION);
        }
        
        payload.ignore(1);
        MySQLBinlogEventReadBuffer event_payload(payload);
        EventHeader event_header;
        event_header.parse(event_payload);
        switch (event_header.type)
        {
            case FORMAT_DESCRIPTION_EVENT:
            {
                event = std::make_shared<FormatDescriptionEvent>(std::move(event_header));
                event->parseEvent(event_payload);