mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +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.
131 lines
3.6 KiB
Text
131 lines
3.6 KiB
Text
source include/master-slave.inc;
|
|
|
|
# Clean up old slave's binlogs.
|
|
# The slave is started with --log-slave-updates
|
|
# and this test does SHOW BINLOG EVENTS on the slave's
|
|
# binlog. But previous tests can influence the current test's
|
|
# binlog (e.g. a temporary table in the previous test has not
|
|
# been explicitly deleted, or it has but the slave hasn't had
|
|
# enough time to catch it before STOP SLAVE,
|
|
# and at the beginning of the current
|
|
# test the slave immediately writes DROP TEMPORARY TABLE this_old_table).
|
|
# We wait for the slave to have written all he wants to the binlog
|
|
# (otherwise RESET MASTER may come too early).
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
reset master;
|
|
connection master;
|
|
|
|
connect (con1,localhost,root,,);
|
|
connect (con2,localhost,root,,);
|
|
# We want to connect as an unprivileged user. But if we use user="" then this
|
|
# will pick the Unix login, which will cause problems if you're running the test
|
|
# as root.
|
|
connect (con3,localhost,zedjzlcsjhd,,);
|
|
|
|
# We are going to use SET PSEUDO_THREAD_ID in this test;
|
|
# check that it requires the SUPER privilege.
|
|
|
|
connection con3;
|
|
SET @save_select_limit=@@session.sql_select_limit;
|
|
--error 1227
|
|
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
|
|
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
|
|
# While we are here we also test that SQL_LOG_BIN can't be set
|
|
--error 1227
|
|
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
|
|
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
|
|
# Now as root, to be sure it works
|
|
connection con2;
|
|
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;
|
|
|
|
connection con3;
|
|
let $VERSION=`select version()`;
|
|
|
|
--disable_warnings
|
|
drop table if exists t1,t2;
|
|
--enable_warnings
|
|
|
|
create table t1(f int);
|
|
create table t2(f int);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
|
|
connection con1;
|
|
create temporary table t3(f int);
|
|
insert into t3 select * from t1 where f<6;
|
|
sleep 1;
|
|
|
|
connection con2;
|
|
create temporary table t3(f int);
|
|
sleep 1;
|
|
|
|
connection con1;
|
|
insert into t2 select count(*) from t3;
|
|
sleep 1;
|
|
|
|
connection con2;
|
|
insert into t3 select * from t1 where f>=4;
|
|
sleep 1;
|
|
|
|
connection con1;
|
|
drop temporary table t3;
|
|
sleep 1;
|
|
|
|
connection con2;
|
|
insert into t2 select count(*) from t3;
|
|
drop temporary table t3;
|
|
|
|
select * from t2;
|
|
|
|
--replace_result $VERSION VERSION
|
|
show binlog events;
|
|
|
|
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;
|
|
drop table t1,t2;
|
|
|
|
# Create last a temporary table that is not dropped at end to ensure that we
|
|
# don't get any memory leaks for this
|
|
|
|
create temporary table t3 (f int);
|
|
sync_with_master;
|
|
|
|
# The server will now close done
|