It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
{
    public:
        using Exception::Exception;
    };
    class EventHeader
    {
    public:
        UInt32 timestamp;
        EventType type = UNKNOW_EVENT;
        UInt32 server_id;
        UInt32 event_size;
        UInt32 log_pos;
        UInt16 flags;
        EventHeader() : timestamp(0), server_id(0), event_size(0), log_pos(0), flags(0) { }
        void dump(std::ostream & out) const;
        void parse(ReadBuffer & payload);
    };
    class EventBase
    {
    public:
        EventHeader header;
        EventBase(EventHeader && header_) : header(std::move(header_)) {}
        virtual ~EventBase() = default;
        virtual void dump(std::ostream & out) const = 0;
        virtual void parseEvent(ReadBuffer & payload) { parseImpl(payload); }
        virtual MySQLEventType type() const { return MYSQL_UNHANDLED_EVENT; }
    protected:
        virtual void parseImpl(ReadBuffer & payload) = 0;
    };
    class FormatDescriptionEvent : public EventBase