It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
{
        
        payload.readStrict(reinterpret_cast<char *>(&commit_flag), 1);
        
        UInt64 high = 0UL, low = 0UL;
        readBigEndianStrict(payload, reinterpret_cast<char *>(&low), 8);
        gtid.uuid.toUnderType().low = low;
        readBigEndianStrict(payload, reinterpret_cast<char *>(&high), 8);
        gtid.uuid.toUnderType().high = high;
        payload.readStrict(reinterpret_cast<char *>(&gtid.seq_no), 8);
        
        payload.ignoreAll();
    }
    void GTIDEvent::dump(std::ostream & out) const
    {
        WriteBufferFromOwnString ws;
        writeUUIDText(gtid.uuid, ws);
        auto gtid_next = ws.str() + ":" + std::to_string(gtid.seq_no);
        header.dump(out);
        out << "GTID Next: " << gtid_next << std::endl;
    }
    void DryRunEvent::parseImpl(ReadBuffer & payload) { payload.ignoreAll(); }
    void DryRunEvent::dump(std::ostream & out) const
    {
        header.dump(out);
        out << "[DryRun Event]" << std::endl;
    }
    
    void Position::update(BinlogEventPtr event)