mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
ec4a9dc983
that it tested the privilege in ::update() whereas it should be in ::check() (see email from Serg, subject "Re: bk commit - 4.1 tree (guilhem:1.1706)"). So I add instead a check_func function to sys_var_thd_bit. I do the same addition to sys_var_thd_ulong, to unify handling of PSEUDO_THREAD_ID with the one of SQL_LOG_BIN. So class sys_var_pseudo_thread_id is not needed anymore, removing it. mysql-test/r/rpl_temporary.result: result update mysql-test/t/rpl_temporary.test: tests after new way of fixing; verify that when second variable assignment is refused then first is not done. sql/set_var.cc: a check_func (check_log_update) when setting SQL_LOG_BIN, and one when setting PSEUDO_THREAD_ID. Removing class sys_var_pseudo_thread_id. Updates for new prototypes of constructor in sys_var_thd_bit and sys_var_thd_ulong. sql/set_var.h: Adding check_func to sys_var_thd_bit. Adding check_func to sys_var_thd_ulong, so class sys_var_pseudo_thread_id is not needed anymore, removing it.
90 lines
3.3 KiB
Text
90 lines
3.3 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
reset master;
|
|
SET @save_select_limit=@@session.sql_select_limit;
|
|
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
|
|
ERROR HY000: Access denied. You need the SUPER privilege for this operation
|
|
SELECT @@session.sql_select_limit = @save_select_limit;
|
|
@@session.sql_select_limit = @save_select_limit
|
|
1
|
|
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
|
|
ERROR HY000: Access denied. You need the SUPER privilege for this operation
|
|
SELECT @@session.sql_select_limit = @save_select_limit;
|
|
@@session.sql_select_limit = @save_select_limit
|
|
1
|
|
SET @@session.pseudo_thread_id=100;
|
|
SET @@session.pseudo_thread_id=connection_id();
|
|
SET @@session.sql_log_bin=0;
|
|
SET @@session.sql_log_bin=1;
|
|
drop table if exists t1,t2;
|
|
create table t1(f int);
|
|
create table t2(f int);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
create temporary table t3(f int);
|
|
insert into t3 select * from t1 where f<6;
|
|
create temporary table t3(f int);
|
|
insert into t2 select count(*) from t3;
|
|
insert into t3 select * from t1 where f>=4;
|
|
drop temporary table t3;
|
|
insert into t2 select count(*) from t3;
|
|
drop temporary table t3;
|
|
select * from t2;
|
|
f
|
|
5
|
|
7
|
|
show binlog events;
|
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
|
master-bin.000001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
|
master-bin.000001 79 Query 1 79 use `test`; create table t1(f int)
|
|
master-bin.000001 136 Query 1 136 use `test`; create table t2(f int)
|
|
master-bin.000001 193 Query 1 193 use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
|
|
master-bin.000001 290 Query 1 290 use `test`; create temporary table t3(f int)
|
|
master-bin.000001 357 Query 1 357 use `test`; insert into t3 select * from t1 where f<6
|
|
master-bin.000001 433 Query 1 433 use `test`; create temporary table t3(f int)
|
|
master-bin.000001 500 Query 1 500 use `test`; insert into t2 select count(*) from t3
|
|
master-bin.000001 573 Query 1 573 use `test`; insert into t3 select * from t1 where f>=4
|
|
master-bin.000001 650 Query 1 650 use `test`; drop temporary table t3
|
|
master-bin.000001 708 Query 1 708 use `test`; insert into t2 select count(*) from t3
|
|
master-bin.000001 781 Query 1 781 use `test`; drop temporary table t3
|
|
drop table t1, t2;
|
|
use test;
|
|
SET TIMESTAMP=1040323920;
|
|
create table t1(f int);
|
|
SET TIMESTAMP=1040323931;
|
|
create table t2(f int);
|
|
SET TIMESTAMP=1040323938;
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
SET TIMESTAMP=1040323945;
|
|
SET @@session.pseudo_thread_id=1;
|
|
create temporary table t3(f int);
|
|
SET TIMESTAMP=1040323952;
|
|
SET @@session.pseudo_thread_id=1;
|
|
insert into t3 select * from t1 where f<6;
|
|
SET TIMESTAMP=1040324145;
|
|
SET @@session.pseudo_thread_id=2;
|
|
create temporary table t3(f int);
|
|
SET TIMESTAMP=1040324186;
|
|
SET @@session.pseudo_thread_id=1;
|
|
insert into t2 select count(*) from t3;
|
|
SET TIMESTAMP=1040324200;
|
|
SET @@session.pseudo_thread_id=2;
|
|
insert into t3 select * from t1 where f>=4;
|
|
SET TIMESTAMP=1040324211;
|
|
SET @@session.pseudo_thread_id=1;
|
|
drop temporary table t3;
|
|
SET TIMESTAMP=1040324219;
|
|
SET @@session.pseudo_thread_id=2;
|
|
insert into t2 select count(*) from t3;
|
|
SET TIMESTAMP=1040324224;
|
|
SET @@session.pseudo_thread_id=2;
|
|
drop temporary table t3;
|
|
select * from t2;
|
|
f
|
|
5
|
|
7
|
|
drop table t1,t2;
|
|
create temporary table t3 (f int);
|