Commit c1b2b515 authored by Michael Widenius's avatar Michael Widenius

Fixed lp:886479 "[PATCH] plugin boolean result"

Thanks to Maarten Vanraes for the patch


sql/sql_plugin.cc:
  Fix plugin boolean variables to receive the value "1", not "-1", when they are set to 1.
  Aside from being bizarre, the existing behavior is unportable: machines where char is unsigned print "255" instead.
parent 48a25fd9
...@@ -2203,7 +2203,7 @@ static int check_func_bool(THD *thd, struct st_mysql_sys_var *var, ...@@ -2203,7 +2203,7 @@ static int check_func_bool(THD *thd, struct st_mysql_sys_var *var,
{ {
if (value->val_int(value, &tmp) < 0) if (value->val_int(value, &tmp) < 0)
goto err; goto err;
if (tmp > 1) if (tmp != 0 && tmp != 1)
{ {
llstr(tmp, buff); llstr(tmp, buff);
strvalue= buff; strvalue= buff;
...@@ -2211,7 +2211,7 @@ static int check_func_bool(THD *thd, struct st_mysql_sys_var *var, ...@@ -2211,7 +2211,7 @@ static int check_func_bool(THD *thd, struct st_mysql_sys_var *var,
} }
result= (int) tmp; result= (int) tmp;
} }
*(my_bool *) save= -result; *(my_bool *) save= result ? 1 : 0;
return 0; return 0;
err: err:
my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), var->name, strvalue); my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), var->name, strvalue);
...@@ -2392,7 +2392,7 @@ static int check_func_set(THD *thd, struct st_mysql_sys_var *var, ...@@ -2392,7 +2392,7 @@ static int check_func_set(THD *thd, struct st_mysql_sys_var *var,
static void update_func_bool(THD *thd, struct st_mysql_sys_var *var, static void update_func_bool(THD *thd, struct st_mysql_sys_var *var,
void *tgt, const void *save) void *tgt, const void *save)
{ {
*(my_bool *) tgt= *(my_bool *) save ? TRUE : FALSE; *(my_bool *) tgt= *(my_bool *) save ? 1 : 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment