Current Path : /home/usr.opt/mysql57/mysql-test/suite/federated/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/suite/federated/federated_server.test |
# The include statement below is a temp one for tests that are yet to #be ported to run with InnoDB, #but needs to be kept for tests that would need MyISAM in future. --source include/force_myisam_default.inc --source include/no_valgrind_without_big.inc # WL #3031 This test tests the new servers table as well as # if federated can utilise the servers table -- source suite/federated/include/federated.inc connection slave; create database first_db; create database second_db; use first_db; DROP TABLE IF EXISTS first_db.t1; CREATE TABLE first_db.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS first_db.t2; CREATE TABLE first_db.t2 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) DEFAULT CHARSET=latin1; use second_db; DROP TABLE IF EXISTS second_db.t1; CREATE TABLE second_db.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS second_db.t2; CREATE TABLE second_db.t2 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) DEFAULT CHARSET=latin1; connection master; drop server if exists 'server_one'; --replace_result $SLAVE_MYPORT SLAVE_PORT eval create server 'server_one' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'first_db', USER 'root', PASSWORD '', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'root'); drop server if exists 'server_two'; --replace_result $SLAVE_MYPORT SLAVE_PORT eval create server 'server_two' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'second_db', USER 'root', PASSWORD '', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'root'); --replace_result $SLAVE_MYPORT SLAVE_PORT eval select * from mysql.servers order by Server_name; DROP TABLE IF EXISTS federated.old; --replace_result $SLAVE_MYPORT SLAVE_PORT eval CREATE TABLE federated.old ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/first_db/t1'; INSERT INTO federated.old (id, name) values (1, 'federated.old-> first_db.t1, url format'); SELECT * FROM federated.old; DROP TABLE IF EXISTS federated.old2; --replace_result $SLAVE_MYPORT SLAVE_PORT eval CREATE TABLE federated.old2 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/first_db/t2'; INSERT INTO federated.old2 (id, name) values (1, 'federated.old2-> first_db.t2, url format'); SELECT * FROM federated.old2; DROP TABLE IF EXISTS federated.urldb2t1; --replace_result $SLAVE_MYPORT SLAVE_PORT eval CREATE TABLE federated.urldb2t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/second_db/t1'; INSERT INTO federated.urldb2t1 (id, name) values (1, 'federated.urldb2t1 -> second_db.t1, url format'); SELECT * FROM federated.urldb2t1; DROP TABLE IF EXISTS federated.urldb2t2; --replace_result $SLAVE_MYPORT SLAVE_PORT eval CREATE TABLE federated.urldb2t2 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/second_db/t2'; INSERT INTO federated.urldb2t2 (id, name) values (1, 'federated.urldb2t2 -> second_db.t2, url format'); SELECT * FROM federated.urldb2t2; DROP TABLE IF EXISTS federated.t1; CREATE TABLE federated.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='server_one'; INSERT INTO federated.t1 (id, name) values (1, 'server_one, new scheme, first_db.t1'); SELECT * FROM federated.t1; DROP TABLE IF EXISTS federated.whatever; CREATE TABLE federated.whatever ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='server_one/t1'; INSERT INTO federated.whatever (id, name) values (1, 'server_one, new scheme, whatever, first_db.t1'); SELECT * FROM federated.whatever; ALTER SERVER 'server_one' options(DATABASE 'second_db'); # FLUSH TABLES is now unneccessary INSERT INTO federated.t1 (id, name) values (1, 'server_two, new scheme, second_db.t1'); SELECT * FROM federated.t1; INSERT INTO federated.whatever (id, name) values (1, 'server_two, new scheme, whatever, second_db.t1'); SELECT * FROM federated.whatever; drop table federated.t1; drop server 'server_one'; drop server 'server_two'; select * from mysql.servers order by Server_name; connection slave; drop table first_db.t1; drop table second_db.t1; drop database first_db; drop database second_db; # # Bug#25671 - CREATE/DROP/ALTER SERVER should require privileges # # Changes to SERVER declarations should require SUPER privilege. # Based upon test case by Giuseppe Maxia create database db_legitimate; create database db_bogus; use db_legitimate; CREATE TABLE db_legitimate.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ); INSERT INTO db_legitimate.t1 VALUES ('1','this is legitimate'); use db_bogus; CREATE TABLE db_bogus.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ; INSERT INTO db_bogus.t1 VALUES ('2','this is bogus'); connection master; --replace_result $SLAVE_MYPORT SLAVE_PORT eval create server 's1' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'db_legitimate', USER 'root', PASSWORD '', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'root'); create user guest_select@localhost; grant select on federated.* to guest_select@localhost; create user guest_super@localhost; grant select,SUPER,RELOAD on *.* to guest_super@localhost; create user guest_usage@localhost; grant usage on *.* to guest_usage@localhost; CREATE TABLE federated.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE = FEDERATED CONNECTION = 's1'; select * from federated.t1; connect (conn_select,127.0.0.1,guest_select,,federated,$MASTER_MYPORT); connect (conn_usage,127.0.0.1,guest_usage,,,$MASTER_MYPORT); connect (conn_super,127.0.0.1,guest_super,,,$MASTER_MYPORT); connection conn_select; --error ER_SPECIFIC_ACCESS_DENIED_ERROR alter server s1 options (database 'db_bogus'); connection master; flush tables; select * from federated.t1; connection conn_usage; --error ER_SPECIFIC_ACCESS_DENIED_ERROR alter server s1 options (database 'db_bogus'); connection master; flush tables; select * from federated.t1; connection conn_super; alter server s1 options (database 'db_bogus'); connection master; flush tables; select * from federated.t1; connection conn_select; --error ER_SPECIFIC_ACCESS_DENIED_ERROR drop server if exists 's1'; --replace_result $SLAVE_MYPORT SLAVE_PORT --error ER_SPECIFIC_ACCESS_DENIED_ERROR eval create server 's1' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'db_legitimate', USER 'root', PASSWORD '', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'root'); connection conn_super; drop server 's1'; --replace_result $SLAVE_MYPORT SLAVE_PORT eval create server 's1' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'db_legitimate', USER 'root', PASSWORD '', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'root'); connection master; flush tables; select * from federated.t1; # clean up test connection slave; drop database db_legitimate; drop database db_bogus; disconnect conn_select; disconnect conn_usage; disconnect conn_super; connection master; drop user guest_super@localhost; drop user guest_usage@localhost; drop user guest_select@localhost; drop table federated.t1; drop server 's1'; # # Bug#30671 - ALTER SERVER causes the server to crash # create server 's1' foreign data wrapper 'mysql' options (port 3306); alter server 's1' options (host 'localhost', database '', user '', password '', socket '', owner '', port 3306); # The next statement would crash unpatched server alter server 's1' options (host 'localhost', database 'database1', user '', password '', socket '', owner '', port 3306); drop server 's1'; --echo # End of 5.1 tests # # Bug#25721 - deadlock with ALTER/CREATE SERVER # connect (other,localhost,root,,); connection master; use test; create table t1(a int); insert into t1 values (1); delimiter //; create procedure p1 () begin DECLARE v INT DEFAULT 0; DECLARE i INT; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; SET i = sleep(5); WHILE v < 10000 do CREATE SERVER s FOREIGN DATA WRAPPER mysql OPTIONS (USER 'Remote', HOST '192.168.1.106', DATABASE 'test'); ALTER SERVER s OPTIONS (USER 'Remote'); DROP SERVER s; SET v = v + 1; END WHILE; select a into @a from t1; # Just reset warnings END// delimiter ;// connection other; use test; send call p1(); connection master; call p1(); connection other; reap; drop procedure p1; drop table t1; drop server if exists s; #### WL: ##### # # Bug#25671 - CREATE/DROP/ALTER SERVER should require privileges # # Changes to SERVER declarations should require SUPER privilege. # Based upon test case by Giuseppe Maxia connection slave; create database db_remote; use db_remote; CREATE TABLE db_remote.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ); INSERT INTO db_remote.t1 VALUES ('1','this is remote'); --character_set utf8 SET NAMES utf8; CREATE USER очень_очень_очень_длинный_юзер__@localhost IDENTIFIED WITH 'mysql_native_password' BY 'auth_string'; grant all on *.* to очень_очень_очень_длинный_юзер__@localhost; connection master; SET NAMES utf8; --replace_result $SLAVE_MYPORT SLAVE_PORT eval create server 's1' foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'db_remote', USER 'очень_очень_очень_длинный_юзер__', PASSWORD 'auth_string', PORT $SLAVE_MYPORT, SOCKET '', OWNER 'очень_очень_очень_длинный_юзер__'); create user user_name_len_32_012345678901234@localhost; grant select on federated.* to user_name_len_32_012345678901234@localhost; CREATE TABLE federated.t1 ( `id` int(20) NOT NULL, `name` varchar(64) NOT NULL default '' ) ENGINE = FEDERATED CONNECTION = 's1' CHARACTER SET utf8; select * from federated.t1; connect (conn_remote,127.0.0.1,user_name_len_32_012345678901234,,federated,$MASTER_MYPORT); connection conn_remote; SET NAMES utf8; select * from federated.t1; # clean up test connection slave; drop database db_remote; drop user очень_очень_очень_длинный_юзер__@localhost; disconnect conn_remote; SET NAMES default; connection master; drop user user_name_len_32_012345678901234@localhost; drop table federated.t1; drop server 's1'; SET NAMES default; source suite/federated/include/federated_cleanup.inc;