It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
#    include <IO/ReadBufferFromString.h>
#    include <Interpreters/Context.h>
#    include <Interpreters/executeQuery.h>
#    include <Storages/StorageMergeTree.h>
#    include <Common/quoteString.h>
#    include <Common/setThreadName.h>
#    include <common/sleep.h>
#    include <ext/bit_cast.h>
namespace DB
{
namespace ErrorCodes
{
    extern const int SYNTAX_ERROR;
    extern const int LOGICAL_ERROR;
    extern const int NOT_IMPLEMENTED;
    extern const int ILLEGAL_MYSQL_VARIABLE;
}
static constexpr auto MYSQL_BACKGROUND_THREAD_NAME = "MySQLDBSync";
static Context createQueryContext(const Context & global_context)
{
    Settings new_query_settings = global_context.getSettings();
    new_query_settings.insert_allow_materialized_columns = true;
    Context query_context(global_context);
    query_context.setSettings(new_query_settings);
    CurrentThread::QueryScope query_scope(query_context);
    query_context.getClientInfo().query_kind = ClientInfo::QueryKind::SECONDARY_QUERY;
    query_context.setCurrentQueryId(""); 
    return query_context;
}
static BlockIO tryToExecuteQuery(const String & query_to_execute, Context & query_context, const String & database, const String & comment)