It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
static_cast<int>(frac_part));
                            row.push_back(Field{String{time_buff}});
                        }
                        else
                        {
                            String time_buff;
                            time_buff.resize(8);
                            sprintf(
                                time_buff.data(),
                                "%02d:%02d:%02d",
                                static_cast<int>(hour),
                                static_cast<int>(minute),
                                static_cast<int>(second));
                            row.push_back(Field{String{time_buff}});
                        }
                        break;
                    }
                    case MYSQL_TYPE_DATETIME2: {
                        Int64 val = 0, fsp = 0;
                        readBigEndianStrict(payload, reinterpret_cast<char *>(&val), 5);
                        readTimeFractionalPart(payload, reinterpret_cast<char *>(&fsp), meta);
                        UInt32 year_month = readBits(val, 1, 17, 40);
                        time_t date_time = DateLUT::instance().makeDateTime(
                            year_month / 13, year_month % 13, readBits(val, 18, 5, 40)
                            , readBits(val, 23, 5, 40), readBits(val, 28, 6, 40), readBits(val, 34, 6, 40)
                        );
                        row.push_back(Field{UInt32(date_time)});
                        break;
                    }
                    case MYSQL_TYPE_TIMESTAMP2: {