It seems MaterializeMySQL doesn't support Decimal data type when doing replication.
{
    try
    {
        stopSynchronization();
    }
    catch (...)
    {
        tryLogCurrentException(__PRETTY_FUNCTION__);
    }
}
static String checkVariableAndGetVersion(const mysqlxx::Pool::Entry & connection)
{
    Block variables_header{
        {std::make_shared<DataTypeString>(), "Variable_name"},
        {std::make_shared<DataTypeString>(), "Value"}
    };
    const String & check_query = "SHOW VARIABLES WHERE "
         "(Variable_name = 'log_bin' AND upper(Value) = 'ON') "
         "OR (Variable_name = 'binlog_format' AND upper(Value) = 'ROW') "
         "OR (Variable_name = 'binlog_row_image' AND upper(Value) = 'FULL') "
         "OR (Variable_name = 'default_authentication_plugin' AND upper(Value) = 'MYSQL_NATIVE_PASSWORD');";
    MySQLBlockInputStream variables_input(connection, check_query, variables_header, DEFAULT_BLOCK_SIZE);
    Block variables_block = variables_input.read();
    if (!variables_block || variables_block.rows() != 4)
    {
        std::unordered_map<String, String> variables_error_message{
            {"log_bin", "log_bin = 'ON'"},