diff options
author | Luis Soares <luis.soares@sun.com> | 2010-03-17 00:06:13 +0000 |
---|---|---|
committer | Luis Soares <luis.soares@sun.com> | 2010-03-17 00:06:13 +0000 |
commit | 92b5e586758de97ebf3272e337b965d43cdf571c (patch) | |
tree | 5100e704c6b5312c7170166f1217fcfea545441d /sql/item_func.cc | |
parent | 5937da69a6d5b3461373dfc7abd8d003f4013fce (diff) | |
download | mariadb-git-92b5e586758de97ebf3272e337b965d43cdf571c.tar.gz |
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.
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index ca8f5d00bb1..391ddfa4a7c 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4766,6 +4766,7 @@ int get_var_with_binlog(THD *thd, enum_sql_command sql_command, user_var_event->user_var_event= var_entry; user_var_event->type= var_entry->type; user_var_event->charset_number= var_entry->collation.collation->number; + user_var_event->unsigned_flag= var_entry->unsigned_flag; if (!var_entry->value) { /* NULL value*/ |