mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
BUG#26286 (row-based logging scales worse than statement-based logging):
Submitting patch on Guilhem's behalf (he found the solution). Correcting a typo that caused very big increases in memory usage when more memory needed to be allocated for row-based events. Also correcting a border case check when more memory needed to be allocated. sql/log_event.cc: Correcting typo that caused very big increases in memory allocation. Correcting border case for when more memory should be allocated.
This commit is contained in:
parent
f60346193e
commit
13bee852c5
1 changed files with 3 additions and 3 deletions
|
@ -5515,13 +5515,13 @@ int Rows_log_event::do_add_row_data(byte *const row_data,
|
||||||
DBUG_ASSERT(m_rows_cur <= m_rows_end);
|
DBUG_ASSERT(m_rows_cur <= m_rows_end);
|
||||||
|
|
||||||
/* The cast will always work since m_rows_cur <= m_rows_end */
|
/* The cast will always work since m_rows_cur <= m_rows_end */
|
||||||
if (static_cast<my_size_t>(m_rows_end - m_rows_cur) < length)
|
if (static_cast<my_size_t>(m_rows_end - m_rows_cur) <= length)
|
||||||
{
|
{
|
||||||
my_size_t const block_size= 1024;
|
my_size_t const block_size= 1024;
|
||||||
my_ptrdiff_t const old_alloc= m_rows_end - m_rows_buf;
|
my_ptrdiff_t const old_alloc= m_rows_end - m_rows_buf;
|
||||||
my_ptrdiff_t const cur_size= m_rows_cur - m_rows_buf;
|
my_ptrdiff_t const cur_size= m_rows_cur - m_rows_buf;
|
||||||
my_ptrdiff_t const new_alloc=
|
my_ptrdiff_t const new_alloc=
|
||||||
block_size * ((cur_size + length) / block_size + block_size - 1);
|
block_size * ((cur_size + length + block_size - 1) / block_size);
|
||||||
|
|
||||||
byte* const new_buf= (byte*)my_realloc((gptr)m_rows_buf, new_alloc,
|
byte* const new_buf= (byte*)my_realloc((gptr)m_rows_buf, new_alloc,
|
||||||
MYF(MY_ALLOW_ZERO_PTR|MY_WME));
|
MYF(MY_ALLOW_ZERO_PTR|MY_WME));
|
||||||
|
@ -5542,7 +5542,7 @@ int Rows_log_event::do_add_row_data(byte *const row_data,
|
||||||
m_rows_end= m_rows_buf + new_alloc;
|
m_rows_end= m_rows_buf + new_alloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_ASSERT(m_rows_cur + length < m_rows_end);
|
DBUG_ASSERT(m_rows_cur + length <= m_rows_end);
|
||||||
memcpy(m_rows_cur, row_data, length);
|
memcpy(m_rows_cur, row_data, length);
|
||||||
m_rows_cur+= length;
|
m_rows_cur+= length;
|
||||||
m_row_count++;
|
m_row_count++;
|
||||||
|
|
Loading…
Reference in a new issue