mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03: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:
@ -75,6 +75,7 @@ typedef struct st_user_var_events
|
||||
ulong length;
|
||||
Item_result type;
|
||||
uint charset_number;
|
||||
bool unsigned_flag;
|
||||
} BINLOG_USER_VAR_EVENT;
|
||||
|
||||
#define RP_LOCK_LOG_IS_ALREADY_LOCKED 1
|
||||
|
Reference in New Issue
Block a user