2016-03-25 17:51:22 +01:00
|
|
|
connect master,127.0.0.1,root,,test,$MASTER_MYPORT,;
|
|
|
|
connect slave,127.0.0.1,root,,test,$SLAVE_MYPORT,;
|
|
|
|
connection master;
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE DATABASE federated;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE DATABASE federated;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2006-12-02 01:47:45 +01:00
|
|
|
create database first_db;
|
|
|
|
create database second_db;
|
|
|
|
use first_db;
|
|
|
|
DROP TABLE IF EXISTS first_db.t1;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'first_db.t1'
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE TABLE first_db.t1 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
DEFAULT CHARSET=latin1;
|
2007-03-24 09:18:19 +01:00
|
|
|
DROP TABLE IF EXISTS first_db.t2;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'first_db.t2'
|
2007-03-24 09:18:19 +01:00
|
|
|
CREATE TABLE first_db.t2 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
DEFAULT CHARSET=latin1;
|
2006-12-02 01:47:45 +01:00
|
|
|
use second_db;
|
|
|
|
DROP TABLE IF EXISTS second_db.t1;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'second_db.t1'
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE TABLE second_db.t1 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
DEFAULT CHARSET=latin1;
|
2007-03-24 09:18:19 +01:00
|
|
|
DROP TABLE IF EXISTS second_db.t2;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'second_db.t2'
|
2007-03-24 09:18:19 +01:00
|
|
|
CREATE TABLE second_db.t2 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
DEFAULT CHARSET=latin1;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2006-12-02 01:47:45 +01:00
|
|
|
drop server if exists 'server_one';
|
|
|
|
create server 'server_one' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'first_db',
|
|
|
|
USER 'root',
|
|
|
|
PASSWORD '',
|
2006-12-12 19:18:49 +01:00
|
|
|
PORT SLAVE_PORT,
|
2006-12-02 01:47:45 +01:00
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
|
|
|
drop server if exists 'server_two';
|
|
|
|
create server 'server_two' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'second_db',
|
|
|
|
USER 'root',
|
|
|
|
PASSWORD '',
|
2006-12-12 19:18:49 +01:00
|
|
|
PORT SLAVE_PORT,
|
2006-12-02 01:47:45 +01:00
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
2011-02-28 23:35:05 +01:00
|
|
|
select * from mysql.servers order by db;
|
2006-12-02 01:47:45 +01:00
|
|
|
Server_name Host Db Username Password Port Socket Wrapper Owner
|
2006-12-13 01:39:45 +01:00
|
|
|
server_one 127.0.0.1 first_db root SLAVE_PORT mysql root
|
|
|
|
server_two 127.0.0.1 second_db root SLAVE_PORT mysql root
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.old;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.old'
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE TABLE federated.old (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
2006-12-12 19:18:49 +01:00
|
|
|
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/first_db/t1';
|
2007-03-24 09:18:19 +01:00
|
|
|
INSERT INTO federated.old (id, name) values (1, 'federated.old-> first_db.t1, url format');
|
2006-12-02 01:47:45 +01:00
|
|
|
SELECT * FROM federated.old;
|
|
|
|
id name
|
2007-03-24 09:18:19 +01:00
|
|
|
1 federated.old-> first_db.t1, url format
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.old2;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.old2'
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE TABLE federated.old2 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
2007-03-24 09:18:19 +01:00
|
|
|
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/first_db/t2';
|
|
|
|
INSERT INTO federated.old2 (id, name) values (1, 'federated.old2-> first_db.t2, url format');
|
|
|
|
SELECT * FROM federated.old2;
|
|
|
|
id name
|
|
|
|
1 federated.old2-> first_db.t2, url format
|
|
|
|
DROP TABLE IF EXISTS federated.urldb2t1;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.urldb2t1'
|
2007-03-24 09:18:19 +01:00
|
|
|
CREATE TABLE federated.urldb2t1 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
2006-12-12 19:18:49 +01:00
|
|
|
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/second_db/t1';
|
2007-03-24 09:18:19 +01:00
|
|
|
INSERT INTO federated.urldb2t1 (id, name) values (1, 'federated.urldb2t1 -> second_db.t1, url format');
|
|
|
|
SELECT * FROM federated.urldb2t1;
|
|
|
|
id name
|
|
|
|
1 federated.urldb2t1 -> second_db.t1, url format
|
|
|
|
DROP TABLE IF EXISTS federated.urldb2t2;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.urldb2t2'
|
2007-03-24 09:18:19 +01:00
|
|
|
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_PORT/second_db/t2';
|
|
|
|
INSERT INTO federated.urldb2t2 (id, name) values (1, 'federated.urldb2t2 -> second_db.t2, url format');
|
|
|
|
SELECT * FROM federated.urldb2t2;
|
|
|
|
id name
|
|
|
|
1 federated.urldb2t2 -> second_db.t2, url format
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.t1;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.t1'
|
2006-12-02 01:47:45 +01:00
|
|
|
CREATE TABLE federated.t1 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
|
|
|
CONNECTION='server_one';
|
2007-03-24 09:18:19 +01:00
|
|
|
INSERT INTO federated.t1 (id, name) values (1, 'server_one, new scheme, first_db.t1');
|
2006-12-02 01:47:45 +01:00
|
|
|
SELECT * FROM federated.t1;
|
|
|
|
id name
|
2007-03-24 09:18:19 +01:00
|
|
|
1 federated.old-> first_db.t1, url format
|
|
|
|
1 server_one, new scheme, first_db.t1
|
|
|
|
DROP TABLE IF EXISTS federated.whatever;
|
|
|
|
Warnings:
|
2013-07-07 12:09:52 +02:00
|
|
|
Note 1051 Unknown table 'federated.whatever'
|
2007-03-24 09:18:19 +01:00
|
|
|
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;
|
|
|
|
id name
|
|
|
|
1 federated.old-> first_db.t1, url format
|
|
|
|
1 server_one, new scheme, first_db.t1
|
|
|
|
1 server_one, new scheme, whatever, first_db.t1
|
2006-12-02 01:47:45 +01:00
|
|
|
ALTER SERVER 'server_one' options(DATABASE 'second_db');
|
2007-03-24 09:18:19 +01:00
|
|
|
INSERT INTO federated.t1 (id, name) values (1, 'server_two, new scheme, second_db.t1');
|
2006-12-02 01:47:45 +01:00
|
|
|
SELECT * FROM federated.t1;
|
|
|
|
id name
|
2007-03-24 09:18:19 +01:00
|
|
|
1 federated.urldb2t1 -> second_db.t1, url format
|
|
|
|
1 server_two, new scheme, second_db.t1
|
|
|
|
INSERT INTO federated.whatever (id, name) values (1, 'server_two, new scheme, whatever, second_db.t1');
|
|
|
|
SELECT * FROM federated.whatever;
|
|
|
|
id name
|
|
|
|
1 federated.urldb2t1 -> second_db.t1, url format
|
|
|
|
1 server_two, new scheme, second_db.t1
|
|
|
|
1 server_two, new scheme, whatever, second_db.t1
|
2006-12-02 01:47:45 +01:00
|
|
|
drop table federated.t1;
|
|
|
|
drop server 'server_one';
|
|
|
|
drop server 'server_two';
|
2011-02-28 23:35:05 +01:00
|
|
|
select * from mysql.servers order by db;
|
2006-12-02 01:47:45 +01:00
|
|
|
Server_name Host Db Username Password Port Socket Wrapper Owner
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2006-12-02 01:47:45 +01:00
|
|
|
drop table first_db.t1;
|
|
|
|
drop table second_db.t1;
|
|
|
|
drop database first_db;
|
|
|
|
drop database second_db;
|
2007-03-13 19:58:24 +01:00
|
|
|
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');
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2009-11-04 12:11:04 +01:00
|
|
|
create user test_fed@localhost identified by 'foo';
|
|
|
|
grant all on db_legitimate.* to test_fed@localhost;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
2009-10-30 00:05:51 +01:00
|
|
|
USER 'test_fed',
|
|
|
|
PASSWORD 'foo',
|
2007-03-13 19:58:24 +01:00
|
|
|
PORT SLAVE_PORT,
|
|
|
|
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;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
2016-03-25 17:51:22 +01:00
|
|
|
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;
|
2007-03-13 19:58:24 +01:00
|
|
|
alter server s1 options (database 'db_bogus');
|
2020-03-11 07:28:45 +01:00
|
|
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, FEDERATED ADMIN privilege(s) for this operation
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
2016-03-25 17:51:22 +01:00
|
|
|
connection conn_usage;
|
2007-03-13 19:58:24 +01:00
|
|
|
alter server s1 options (database 'db_bogus');
|
2020-03-11 07:28:45 +01:00
|
|
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, FEDERATED ADMIN privilege(s) for this operation
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
2016-03-25 17:51:22 +01:00
|
|
|
connection conn_super;
|
2007-03-13 19:58:24 +01:00
|
|
|
alter server s1 options (database 'db_bogus');
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
2011-11-30 11:37:28 +01:00
|
|
|
Got one of the listed errors
|
2016-03-25 17:51:22 +01:00
|
|
|
connection conn_select;
|
2007-03-13 19:58:24 +01:00
|
|
|
drop server if exists 's1';
|
2020-03-11 07:28:45 +01:00
|
|
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, FEDERATED ADMIN privilege(s) for this operation
|
2007-03-13 19:58:24 +01:00
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
2009-11-04 12:11:04 +01:00
|
|
|
USER 'test_fed',
|
|
|
|
PASSWORD 'foo',
|
2007-03-13 19:58:24 +01:00
|
|
|
PORT SLAVE_PORT,
|
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
2020-03-11 07:28:45 +01:00
|
|
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, FEDERATED ADMIN privilege(s) for this operation
|
2016-03-25 17:51:22 +01:00
|
|
|
connection conn_super;
|
2007-03-13 19:58:24 +01:00
|
|
|
drop server 's1';
|
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
2009-11-04 12:11:04 +01:00
|
|
|
USER 'test_fed',
|
|
|
|
PASSWORD 'foo',
|
2007-03-13 19:58:24 +01:00
|
|
|
PORT SLAVE_PORT,
|
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2009-11-04 12:11:04 +01:00
|
|
|
drop user test_fed@localhost;
|
2007-03-13 19:58:24 +01:00
|
|
|
drop database db_legitimate;
|
|
|
|
drop database db_bogus;
|
2016-03-25 17:51:22 +01:00
|
|
|
disconnect conn_select;
|
|
|
|
disconnect conn_usage;
|
|
|
|
disconnect conn_super;
|
|
|
|
connection master;
|
2007-03-13 19:58:24 +01:00
|
|
|
drop user guest_super@localhost;
|
|
|
|
drop user guest_usage@localhost;
|
|
|
|
drop user guest_select@localhost;
|
|
|
|
drop table federated.t1;
|
|
|
|
drop server 's1';
|
2014-11-16 13:15:35 +01:00
|
|
|
create server 's1' foreign data wrapper 'mysql' options (host 'foo');
|
2007-11-01 20:30:03 +01:00
|
|
|
alter server 's1' options
|
|
|
|
(host 'localhost', database '', user '',
|
|
|
|
password '', socket '', owner '', port 3306);
|
|
|
|
alter server 's1' options
|
|
|
|
(host 'localhost', database 'database1', user '',
|
|
|
|
password '', socket '', owner '', port 3306);
|
|
|
|
drop server 's1';
|
2007-03-13 19:58:24 +01:00
|
|
|
# End of 5.1 tests
|
2016-03-25 17:51:22 +01:00
|
|
|
connect other,localhost,root,,;
|
|
|
|
connection master;
|
2007-03-24 01:31:27 +01:00
|
|
|
use test;
|
2010-07-31 15:10:27 +02:00
|
|
|
create table t1(a int);
|
|
|
|
insert into t1 values (1);
|
2007-03-24 01:31:27 +01:00
|
|
|
create procedure p1 ()
|
|
|
|
begin
|
|
|
|
DECLARE v INT DEFAULT 0;
|
2007-04-04 23:35:58 +02:00
|
|
|
DECLARE i INT;
|
BUG#40143 federated.federated_server fails sporadically in pushbuild
The original goal of the test, as reported on BUG #25721, is to check whether
a deadlock happens or not when concurrently CREATING/ALTERING/DROPPING the
same server. For that a procedure (p1) is created that runs the exact same
CREATE/ALTER/DROP statements for 10K iterations and two different connections
(threads - t1 and t2) call p1 concurrently. At the end of the 10K iterations,
the test checks if there was errors while running the loop (SELECT e >0).
The problem is that In some cases it may happen that one thread, t1, gets
scheduled to execute with just enough time to complete the iteration and
never bumps into the other thread t2. Meaning that t1 will never run into an
SQL exception. On the other hand, the other thread, t2, may run into t1 and
never issue any/part of its own statements because it will throw an SQLEXCEPTION.
This is probably the case for failures where only one value differs.
Furthermore, there is a third scenario: both threads are scheduled to run
interleaved for each iteration (or even one thread completes all iterations
before the other starts). In this case, both will succeed without any error.
This is probably the case for the failure that reports two different values.
This patch addresses the failure in pushbuild by removing the error counting
and the printout (SELECT > 0) at the end of the test. A timeout should occur
if the error that the test is checking surfaces.
2009-01-22 14:07:58 +01:00
|
|
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
2007-04-04 23:35:58 +02:00
|
|
|
SET i = sleep(5);
|
2007-11-01 20:30:03 +01:00
|
|
|
WHILE v < 10000 do
|
2007-03-24 01:31:27 +01:00
|
|
|
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;
|
2010-07-31 15:10:27 +02:00
|
|
|
select a into @a from t1; # Just reset warnings
|
2007-03-24 01:31:27 +01:00
|
|
|
END//
|
2016-03-25 17:51:22 +01:00
|
|
|
connection other;
|
2007-03-24 01:31:27 +01:00
|
|
|
use test;
|
|
|
|
call p1();
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2007-03-24 01:31:27 +01:00
|
|
|
call p1();
|
2016-03-25 17:51:22 +01:00
|
|
|
connection other;
|
2007-03-24 01:31:27 +01:00
|
|
|
drop procedure p1;
|
2010-07-31 15:10:27 +02:00
|
|
|
drop table t1;
|
2007-03-24 01:31:27 +01:00
|
|
|
drop server if exists s;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection master;
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.t1;
|
2009-11-04 12:11:04 +01:00
|
|
|
DROP DATABASE IF EXISTS federated;
|
2016-03-25 17:51:22 +01:00
|
|
|
connection slave;
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.t1;
|
2009-11-04 12:11:04 +01:00
|
|
|
DROP DATABASE IF EXISTS federated;
|