mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
We now require SUPER privilege for SET PSEUDO_THREAD_ID.
This commit is contained in:
@@ -5,6 +5,8 @@ reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
reset master;
|
||||
SET @@session.pseudo_thread_id=100;
|
||||
ERROR HY000: Access denied. You need the SUPER privilege for this operation
|
||||
drop table if exists t1,t2;
|
||||
create table t1(f int);
|
||||
create table t2(f int);
|
||||
|
@@ -19,6 +19,14 @@ connection master;
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
connect (con3,localhost,test,,);
|
||||
|
||||
# We are going to use SET PSEUDO_THREAD_ID in this test;
|
||||
# check that it requires the SUPER privilege.
|
||||
|
||||
connection con3;
|
||||
--error 1227
|
||||
SET @@session.pseudo_thread_id=100;
|
||||
|
||||
let $VERSION=`select version()`;
|
||||
|
||||
|
@@ -168,7 +168,11 @@ sys_var_thd_ulong sys_max_error_count("max_error_count",
|
||||
&SV::max_error_count);
|
||||
sys_var_thd_ulong sys_max_heap_table_size("max_heap_table_size",
|
||||
&SV::max_heap_table_size);
|
||||
sys_var_thd_ulong sys_pseudo_thread_id("pseudo_thread_id",
|
||||
/*
|
||||
sys_pseudo_thread_id has its own class (instead of sys_var_thd_ulong) because
|
||||
we want a check() function.
|
||||
*/
|
||||
sys_var_pseudo_thread_id sys_pseudo_thread_id("pseudo_thread_id",
|
||||
&SV::pseudo_thread_id);
|
||||
sys_var_thd_ha_rows sys_max_join_size("max_join_size",
|
||||
&SV::max_join_size,
|
||||
@@ -1454,6 +1458,17 @@ byte *sys_var_insert_id::value_ptr(THD *thd, enum_var_type type)
|
||||
return (byte*) &thd->current_insert_id;
|
||||
}
|
||||
|
||||
bool sys_var_pseudo_thread_id::check(THD *thd, set_var *var)
|
||||
{
|
||||
if (thd->master_access & SUPER_ACL)
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
my_error(ER_SPECIFIC_ACCESS_DENIED_ERROR, MYF(0), "SUPER");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
bool sys_var_slave_skip_counter::check(THD *thd, set_var *var)
|
||||
|
@@ -212,6 +212,15 @@ public:
|
||||
byte *value_ptr(THD *thd, enum_var_type type);
|
||||
};
|
||||
|
||||
class sys_var_pseudo_thread_id :public sys_var_thd_ulong
|
||||
{
|
||||
public:
|
||||
sys_var_pseudo_thread_id(const char *name_arg, ulong SV::*offset_arg)
|
||||
:sys_var_thd_ulong(name_arg, offset_arg)
|
||||
{}
|
||||
bool check(THD *thd, set_var *var);
|
||||
};
|
||||
|
||||
|
||||
class sys_var_thd_ha_rows :public sys_var_thd
|
||||
{
|
||||
|
Reference in New Issue
Block a user