It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
const Context & context, const String & database_name_, const String & mysql_database_name_,
    mysqlxx::Pool && pool_, MySQLClient && client_, MaterializeMySQLSettings * settings_)
    : log(&Poco::Logger::get("MaterializeMySQLSyncThread")), global_context(context.getGlobalContext()), database_name(database_name_)
    , mysql_database_name(mysql_database_name_), pool(std::move(pool_)), client(std::move(client_)), settings(settings_)
{
    query_prefix = "EXTERNAL DDL FROM MySQL(" + backQuoteIfNeed(database_name) + ", " + backQuoteIfNeed(mysql_database_name) + ") ";
}
void MaterializeMySQLSyncThread::synchronization(const String & mysql_version)
{
    setThreadName(MYSQL_BACKGROUND_THREAD_NAME);
    try
    {
        if (std::optional<MaterializeMetadata> metadata = prepareSynchronized(mysql_version))
        {
            Stopwatch watch;