It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
case MYSQL_TYPE_YEAR: {
                        Int32 val = 0;
                        payload.readStrict(reinterpret_cast<char *>(&val), 1);
                        String time_buff;
                        time_buff.resize(4);
                        sprintf(time_buff.data(), "%04d", (val + 1900));
                        row.push_back(Field{String{time_buff}});
                        break;
                    }
                    case MYSQL_TYPE_TIME2: {
                        UInt32 val = 0, frac_part = 0;
                        readBigEndianStrict(payload, reinterpret_cast<char *>(&val), 3);
                        if (readBits(val, 0, 1, 24) == 0)
                        {
                            val = ~val + 1;
                        }
                        UInt32 hour = readBits(val, 2, 10, 24);
                        UInt32 minute = readBits(val, 12, 6, 24);
                        UInt32 second = readBits(val, 18, 6, 24);
                        readTimeFractionalPart(payload, reinterpret_cast<char *>(&frac_part), meta);
                        if (frac_part != 0)
                        {
                            String time_buff;
                            time_buff.resize(15);
                            sprintf(
                                time_buff.data(),
                                "%02d:%02d:%02d.%06d",
                                static_cast<int>(hour),
                                static_cast<int>(minute),
                                static_cast<int>(second),