**Describe the bug**
when I set  log_bin_use_v1_row_events =1 in MySQL side and start replicate data to ClickHouse，I will get the following execption：

0. DB::ReadBuffer::throwReadAfterEOF() @ 0x7d3f9ed in /usr/bin/clickhouse
1. ? @ 0xdb3d0a3 in /usr/bin/clickhouse
2. DB::MySQLReplication::MySQLFlavor::readPayloadImpl(DB::ReadBuffer&) @ 0xdb41983 in /usr/bin/clickhouse
3. DB::MySQLProtocol::IMySQLReadPacket::readPayload(DB::ReadBuffer&, unsigned char&) @ 0xdb29bb2 in /usr/bin/clickhouse
4. DB::MySQLProtocol::PacketEndpoint::tryReceivePacket(DB::MySQLProtocol::IMySQLReadPacket&, unsigned long) @ 0xdb2a6a3 in /usr/bin/clickhouse
5. DB::MaterializeMySQLSyncThread::synchronization(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xdb544b6 in /usr/bin/clickhouse
6. ? @ 0xdb72e2a in /usr/bin/clickhouse
7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x7d25aad in /usr/bin/clickhouse
8. ? @ 0x7d295d3 in /usr/bin/clickhouse
9. start_thread @ 0x7e65 in /usr/lib64/libpthread-2.17.so
10. __clone @ 0xfe88d in /usr/lib64/libc-2.17.so
 (version 20.12.4.5 (official build))
2021.01.12 17:52:48.630695 [ 13966 ] {abb6f32b-079a-493a-8bf3-30c970a46a22} <Error> executeQuery: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 20.12.4.5 (official build)) (from [::ffff:172.21.128.5]:37384) (in query: select count(*) from yuan;), Stack trace (when copying this message, always include the lines below):

0. DB::ReadBuffer::throwReadAfterEOF() @ 0x7d3f9ed in /usr/bin/clickhouse
1. ? @ 0xdb3d0a3 in /usr/bin/clickhouse
2. DB::MySQLReplication::MySQLFlavor::readPayloadImpl(DB::ReadBuffer&) @ 0xdb41983 in /usr/bin/clickhouse
3. DB::MySQLProtocol::IMySQLReadPacket::readPayload(DB::ReadBuffer&, unsigned char&) @ 0xdb29bb2 in /usr/bin/clickhouse
4. DB::MySQLProtocol::PacketEndpoint::tryReceivePacket(DB::MySQLProtocol::IMySQLReadPacket&, unsigned long) @ 0xdb2a6a3 in /usr/bin/clickhouse
5. DB::MaterializeMySQLSyncThread::synchronization(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xdb544b6 in /usr/bin/clickhouse
6. ? @ 0xdb72e2a in /usr/bin/clickhouse
7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x7d25aad in /usr/bin/clickhouse
8. ? @ 0x7d295d3 in /usr/bin/clickhouse
9. start_thread @ 0x7e65 in /usr/lib64/libpthread-2.17.so
10. __clone @ 0xfe88d in /usr/lib64/libc-2.17.so

2021.01.12 17:52:48.630860 [ 13966 ] {abb6f32b-079a-493a-8bf3-30c970a46a22} <Error> TCPHandler: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof, Stack trace:

0. DB::ReadBuffer::throwReadAfterEOF() @ 0x7d3f9ed in /usr/bin/clickhouse
1. ? @ 0xdb3d0a3 in /usr/bin/clickhouse
2. DB::MySQLReplication::MySQLFlavor::readPayloadImpl(DB::ReadBuffer&) @ 0xdb41983 in /usr/bin/clickhouse
3. DB::MySQLProtocol::IMySQLReadPacket::readPayload(DB::ReadBuffer&, unsigned char&) @ 0xdb29bb2 in /usr/bin/clickhouse
4. DB::MySQLProtocol::PacketEndpoint::tryReceivePacket(DB::MySQLProtocol::IMySQLReadPacket&, unsigned long) @ 0xdb2a6a3 in /usr/bin/clickhouse
5. DB::MaterializeMySQLSyncThread::synchronization(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xdb544b6 in /usr/bin/clickhouse
6. ? @ 0xdb72e2a in /usr/bin/clickhouse
7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x7d25aad in /usr/bin/clickhouse
8. ? @ 0x7d295d3 in /usr/bin/clickhouse
9. start_thread @ 0x7e65 in /usr/lib64/libpthread-2.17.so
10. __clone @ 0xfe88d in /usr/lib64/libc-2.17.so



**How to reproduce**
just setting log_bin_use_v1_row_events  in my.cnf

* Which ClickHouse server version to use
20.12.4.5

**Additional context**
MySQL 5.7.31 and  MySQL8.0.21 both can reprod the bug.

write_data_to_column(casted_decimal_64_column, Decimal64(), Decimal64());
        else if (ColumnDecimal<Decimal128> * casted_decimal_128_column = typeid_cast<ColumnDecimal<Decimal128> *>(&column_to))
            write_data_to_column(casted_decimal_128_column, Decimal128(), Decimal128());
        else if (ColumnDecimal<Decimal256> * casted_decimal_256_column = typeid_cast<ColumnDecimal<Decimal256> *>(&column_to))
            write_data_to_column(casted_decimal_256_column, Decimal256(), Decimal256());
        else if (ColumnDecimal<DateTime64> * casted_datetime_64_column = typeid_cast<ColumnDecimal<DateTime64> *>(&column_to))
            write_data_to_column(casted_datetime_64_column, DateTime64(), DateTime64());
        else if (ColumnInt32 * casted_int32_column = typeid_cast<ColumnInt32 *>(&column_to))
        {
            for (size_t index = 0; index < rows_data.size(); ++index)
            {
                const Tuple & row_data = DB::get<const Tuple &>(rows_data[index]);
                const Field & value = row_data[column_index];
                if (write_data_to_null_map(value, index))
                {
                    if (value.getType() == Field::Types::UInt64)
                        casted_int32_column->insertValue(value.get<Int32>());
                    else if (value.getType() == Field::Types::Int64)
                    {
                        
                        const Int32 & num = value.get<Int32>();
                        casted_int32_column->insertValue(num & 0x800000 ? num | 0xFF000000 : num);
                    }
                    else
                        throw Exception("LOGICAL ERROR: it is a bug.", ErrorCodes::LOGICAL_ERROR);
                }
            }
        }
        else if (ColumnString * casted_string_column = typeid_cast<ColumnString *>(&column_to))
        {