mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 15:15:34 +02:00
BUG#51426: overflow for auto_increment column causes slave to stop
In BUG#49562 we fixed the case where numeric user var events
would not serialize the flag stating whether the value was signed
or unsigned (unsigned_flag). This fixed the case that the slave
would get an overflow while treating the unsigned values as
signed.
In this bug, we find that the unsigned_flag can sometimes change
between the moment that the user value is recorded for binlogging
purposes and the actual binlogging time. Since we take the
unsigned_flag from the runtime variable data, at binlogging time,
and the variable value is comes from the copy taken earlier in
the execution, there may be inconsistency in the
User_var_log_event between the variable value and its
unsigned_flag.
We fix this by also copying the unsigned_flag of the
user_var_entry when its value is copied, for binlogging
purposes. Later, at binlogging time, we use the copied
unsigned_flag and not the one in the runtime user_var_entry
instance.
This commit is contained in:
parent
5937da69a6
commit
92b5e58675
5 changed files with 52 additions and 1 deletions
|
|
@ -4671,7 +4671,7 @@ bool MYSQL_BIN_LOG::write(Log_event *event_info)
|
|||
|
||||
/* setting flags for user var log event */
|
||||
uchar flags= User_var_log_event::UNDEF_F;
|
||||
if (user_var_event->user_var_event->unsigned_flag)
|
||||
if (user_var_event->unsigned_flag)
|
||||
flags|= User_var_log_event::UNSIGNED_F;
|
||||
|
||||
User_var_log_event e(thd, user_var_event->user_var_event->name.str,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue