summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r--sql/set_var.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 8e2e8b12a06..f03152ace03 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -825,15 +825,20 @@ int set_var::check(THD *thd)
*/
int set_var::light_check(THD *thd)
{
+ if (var->is_readonly())
+ {
+ my_error(ER_INCORRECT_GLOBAL_LOCAL_VAR, MYF(0), var->name.str, "read only");
+ return -1;
+ }
if (var->check_type(type))
{
int err= type == OPT_GLOBAL ? ER_LOCAL_VARIABLE : ER_GLOBAL_VARIABLE;
my_error(err, MYF(0), var->name.str);
return -1;
}
- if (type == OPT_GLOBAL &&
- check_global_access(thd, PRIV_SET_GLOBAL_SYSTEM_VARIABLE))
- return 1;
+
+ if (type == OPT_GLOBAL && var->on_check_access_global(thd))
+ return 1;
if (value && value->fix_fields_if_needed_for_scalar(thd, &value))
return -1;