Commit 7c1d520e authored by unknown's avatar unknown
Browse files

a fix (bug #10339: Incorrect error is displayed if try to set value of internal ' warning_count ').


sql/set_var.cc:
  a fix (bug #10339: Incorrect error is displayed if try to set value of internal ' warning_count ').
  test for read only variables added.
sql/set_var.h:
  a fix (bug #10339: Incorrect error is displayed if try to set value of internal ' warning_count ').
  sys_var::is_readonly() method introduced.
parent 4acfc0b6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -526,3 +526,7 @@ show warnings;
Level	Code	Message
Warning	1329	No data to FETCH
drop table t1;
set @@warning_count=1;
ERROR HY000: Variable 'warning_count' is a read only variable
set @@global.error_count=1;
ERROR HY000: Variable 'error_count' is a read only variable
+8 −0
Original line number Diff line number Diff line
@@ -395,3 +395,11 @@ select a into @x from t1;
show warnings;
drop table t1;

#
# Bug #10339: read only variables.
#

--error 1238
set @@warning_count=1;
--error 1238
set @@global.error_count=1;
+5 −0
Original line number Diff line number Diff line
@@ -2964,6 +2964,11 @@ bool not_all_support_one_shot(List<set_var_base> *var_list)

int set_var::check(THD *thd)
{
  if (var->is_readonly())
  {
    my_error(ER_INCORRECT_GLOBAL_LOCAL_VAR, MYF(0), var->name, "read only");
    return -1;
  }
  if (var->check_type(type))
  {
    int err= type == OPT_GLOBAL ? ER_LOCAL_VARIABLE : ER_GLOBAL_VARIABLE;
+2 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ class sys_var
  { return option_limits == 0; }
  Item *item(THD *thd, enum_var_type type, LEX_STRING *base);
  virtual bool is_struct() { return 0; }
  virtual bool is_readonly() const { return 0; }
};


@@ -699,6 +700,7 @@ class sys_var_readonly: public sys_var
    return (*value_ptr_func)(thd);
  }
  SHOW_TYPE type() { return show_type; }
  bool is_readonly() const { return 1; }
};

class sys_var_thd_time_zone :public sys_var_thd