mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Fix for bug #29131: SHOW VARIABLES reports variable 'log' but SET
doesn't recognize it This is a 5.0 version of the patch, it will be null-merged to 5.1 Problem: 'log' and 'log_slow_queries' were "fixed" variables, i.e. they showed up in SHOW VARIABLES, but could not be used in expressions like "select @@log". Also, using them in the SET statement produced an incorrect "unknown system variable" error. Solution: Make 'log' and 'log_slow_queries' read-only dynamic variables to make them available for use in expressions, and produce a correct error about the variable being read-only when used in the SET statement. mysql-test/r/variables.result: Added a test case for bug #29131. mysql-test/t/variables.test: Added a test case for bug #29131. sql/mysql_priv.h: Changed the type of opt_log and opt_slow_log to my_bool to align with the interfaces in set_var.cc sql/mysqld.cc: Changed the type of opt_log and opt_slow_log to my_bool to align with the interfaces in set_var.cc sql/set_var.cc: Made 'log' and 'log_slow_queries' to be read-only dynamic system variable, i.e. available for use in expressions with the @@var syntax. sql/set_var.h: Added a new system variable class representing a read-only boolean variable.
This commit is contained in:
parent
04311fabaa
commit
6eced1b857
6 changed files with 62 additions and 6 deletions
|
|
@ -160,6 +160,28 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class sys_var_bool_const_ptr : public sys_var
|
||||
{
|
||||
public:
|
||||
my_bool *value;
|
||||
sys_var_bool_const_ptr(const char *name_arg, my_bool *value_arg)
|
||||
:sys_var(name_arg),value(value_arg)
|
||||
{}
|
||||
bool check(THD *thd, set_var *var)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
bool update(THD *thd, set_var *var)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
|
||||
byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base)
|
||||
{ return (byte*) value; }
|
||||
bool check_update_type(Item_result type) { return 0; }
|
||||
bool is_readonly() const { return 1; }
|
||||
};
|
||||
|
||||
class sys_var_str :public sys_var
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue