mirror of
https://github.com/MariaDB/server.git
synced 2025-12-28 08:10:14 +00:00
MDEV-7850: Optimize Query_log_event::begin_event()
* Use bfill() to pad a Query_log_event (from GTID event) instead of a loop. * Add error conditions Co-author: Monty <monty@mariadb.org>
This commit is contained in:
parent
5217d8609b
commit
01cf1cb84b
@ -1947,7 +1947,7 @@ Query_log_event::begin_event(String *packet, ulong ev_offset,
|
||||
uchar *p= (uchar *)packet->ptr() + ev_offset;
|
||||
uchar *q= p + LOG_EVENT_HEADER_LEN;
|
||||
size_t data_len= packet->length() - ev_offset;
|
||||
size_t dummy_bytes;
|
||||
uint dummy_bytes;
|
||||
uint16 flags;
|
||||
|
||||
if (checksum_alg == BINLOG_CHECKSUM_ALG_CRC32)
|
||||
@ -1975,10 +1975,14 @@ Query_log_event::begin_event(String *packet, ulong ev_offset,
|
||||
DUMMY value, and will skip the rest of the status vars section.
|
||||
*/
|
||||
DBUG_ASSERT(data_len >= LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN);
|
||||
dummy_bytes= data_len - (LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN);
|
||||
if (data_len < LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN)
|
||||
return 1;
|
||||
DBUG_ASSERT(std::numeric_limits<uint16>::max() >=
|
||||
(data_len - (LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN)));
|
||||
dummy_bytes=
|
||||
static_cast<uint>(data_len - (LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN));
|
||||
int2store(q + Q_STATUS_VARS_LEN_OFFSET, dummy_bytes);
|
||||
for (size_t i= 0; i < dummy_bytes; i++)
|
||||
q[Q_DATA_OFFSET + i]= Q_DUMMY;
|
||||
bfill(&q[Q_DATA_OFFSET], dummy_bytes, Q_DUMMY);
|
||||
q[Q_DATA_OFFSET + dummy_bytes]= 0; /* Zero terminator for empty db */
|
||||
q+= Q_DATA_OFFSET + dummy_bytes + 1;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user