diff options
Diffstat (limited to 'sql/set_var.h')
-rw-r--r-- | sql/set_var.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sql/set_var.h b/sql/set_var.h index a83de6425ae..c08097521d2 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -543,10 +543,16 @@ public: { chain_sys_var(chain); } bool check(THD *thd, set_var *var) { - int ret= 0; - if (check_func) - ret= (*check_func)(thd, var); - return ret ? ret : check_enum(thd, var, enum_names); + /* + check_enum fails if the character representation supplied was wrong + or that the integer value was wrong or missing. + */ + if (check_enum(thd, var, enum_names)) + return TRUE; + else if ((check_func && (*check_func)(thd, var))) + return TRUE; + else + return FALSE; } bool update(THD *thd, set_var *var); void set_default(THD *thd, enum_var_type type); |