mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 09:32:01 +00:00
3cea474ccf
This fixes https://github.com/ClickHouse/ClickHouse/issues/33549 The infinite loop caused because sometimes the pos of ReadBuffer overflows the end. It happens f.e. when `MySQLPacketPayloadReadBuffer::nextImpl` might return empty buffer, because `in.nextIfAtEnd();` could not read more bytes and thus no bytes available (pos == end). It might happen when a network error or the connection to MySQL was closed or killed. This leads to empty `working_buffer` but successful returning from the func. And check `if (in.eof())` from `MySQLBinlogEventReadBuffer::nextImpl()` fails and also causes empty its `working_buffer` and successul return. At the end `payload.ignore(1)` and `payload.read(c)` produces the infinite loop since it is not eof() and ++pos overflows the end of the buffer. Should be tested by `test_mysql_kill*` from test.py |
||
---|---|---|
.. | ||
Access | ||
AggregateFunctions | ||
Analyzer | ||
Backups | ||
Bridge | ||
BridgeHelper | ||
Client | ||
Columns | ||
Common | ||
Compression | ||
Coordination | ||
Core | ||
Daemon | ||
Databases | ||
DataTypes | ||
Dictionaries | ||
Disks | ||
Formats | ||
Functions | ||
Interpreters | ||
IO | ||
Loggers | ||
Parsers | ||
Planner | ||
Processors | ||
QueryPipeline | ||
Server | ||
Storages | ||
TableFunctions | ||
CMakeLists.txt | ||
configure_config.cmake | ||
NOTICE |