It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
case MYSQL_TYPE_JSON: {
                        UInt32 size = 0;
                        payload.readStrict(reinterpret_cast<char *>(&size), meta);
                        String val;
                        val.resize(size);
                        payload.readStrict(reinterpret_cast<char *>(val.data()), size);
                        row.push_back(Field{String{val}});
                        break;
                    }
                    default:
                        throw ReplicationError(
                            "ParseRow: Unhandled MySQL field type:" + std::to_string(field_type), ErrorCodes::UNKNOWN_EXCEPTION);
                }
            }
            null_index++;
        }
        rows.push_back(row);
    }
    void RowsEvent::dump(std::ostream & out) const
    {
        FieldVisitorToString to_string;
        header.dump(out);
        out << "Schema: " << this->schema << std::endl;
        out << "Table: " << this->table << std::endl;
        for (auto i = 0U; i < rows.size(); i++)
        {
            out << "Row[" << i << "]: " << applyVisitor(to_string, rows[i]) << std::endl;
        }
    }
    void GTIDEvent::parseImpl(ReadBuffer & payload)