2006-12-02 01:47:45 +01:00
|
|
|
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;
|
|
|
|
stop slave;
|
|
|
|
DROP DATABASE IF EXISTS federated;
|
|
|
|
CREATE DATABASE federated;
|
|
|
|
DROP DATABASE IF EXISTS federated;
|
|
|
|
CREATE DATABASE federated;
|
|
|
|
create database first_db;
|
|
|
|
create database second_db;
|
|
|
|
use first_db;
|
|
|
|
DROP TABLE IF EXISTS first_db.t1;
|
|
|
|
Warnings:
|
|
|
|
Note 1051 Unknown table 't1'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 't2'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 't1'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 't2'
|
|
|
|
CREATE TABLE second_db.t2 (
|
|
|
|
`id` int(20) NOT NULL,
|
|
|
|
`name` varchar(64) NOT NULL default ''
|
|
|
|
)
|
|
|
|
DEFAULT CHARSET=latin1;
|
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');
|
|
|
|
select * from mysql.servers;
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 'old'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 'old2'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 'urldb2t1'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 'urldb2t2'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table 't1'
|
|
|
|
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:
|
|
|
|
Note 1051 Unknown table '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;
|
|
|
|
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';
|
|
|
|
select * from mysql.servers;
|
|
|
|
Server_name Host Db Username Password Port Socket Wrapper Owner
|
|
|
|
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');
|
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
|
|
|
USER 'root',
|
|
|
|
PASSWORD '',
|
|
|
|
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
|
|
|
|
alter server s1 options (database 'db_bogus');
|
|
|
|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
|
|
|
alter server s1 options (database 'db_bogus');
|
|
|
|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
|
|
|
alter server s1 options (database 'db_bogus');
|
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
2 this is bogus
|
|
|
|
drop server if exists 's1';
|
|
|
|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
|
|
|
USER 'root',
|
|
|
|
PASSWORD '',
|
|
|
|
PORT SLAVE_PORT,
|
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
|
|
|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
|
|
|
drop server 's1';
|
|
|
|
create server 's1' foreign data wrapper 'mysql' options
|
|
|
|
(HOST '127.0.0.1',
|
|
|
|
DATABASE 'db_legitimate',
|
|
|
|
USER 'root',
|
|
|
|
PASSWORD '',
|
|
|
|
PORT SLAVE_PORT,
|
|
|
|
SOCKET '',
|
|
|
|
OWNER 'root');
|
|
|
|
flush tables;
|
|
|
|
select * from federated.t1;
|
|
|
|
id name
|
|
|
|
1 this is legitimate
|
|
|
|
drop database db_legitimate;
|
|
|
|
drop database db_bogus;
|
|
|
|
drop user guest_super@localhost;
|
|
|
|
drop user guest_usage@localhost;
|
|
|
|
drop user guest_select@localhost;
|
|
|
|
drop table federated.t1;
|
|
|
|
drop server 's1';
|
2007-11-01 20:30:03 +01:00
|
|
|
create server 's1' foreign data wrapper 'mysql' options (port 3306);
|
|
|
|
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
|
2007-03-24 01:31:27 +01:00
|
|
|
use test;
|
|
|
|
create procedure p1 ()
|
|
|
|
begin
|
|
|
|
DECLARE v INT DEFAULT 0;
|
|
|
|
DECLARE e INT DEFAULT 0;
|
2007-04-04 23:35:58 +02:00
|
|
|
DECLARE i INT;
|
2007-03-24 01:31:27 +01:00
|
|
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET e = e + 1;
|
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;
|
|
|
|
SELECT e > 0;
|
|
|
|
END//
|
|
|
|
use test;
|
|
|
|
call p1();
|
|
|
|
call p1();
|
|
|
|
e > 0
|
|
|
|
1
|
|
|
|
e > 0
|
|
|
|
1
|
|
|
|
drop procedure p1;
|
|
|
|
drop server if exists s;
|
2006-12-02 01:47:45 +01:00
|
|
|
DROP TABLE IF EXISTS federated.t1;
|
|
|
|
DROP DATABASE IF EXISTS federated;
|
|
|
|
DROP TABLE IF EXISTS federated.t1;
|
|
|
|
DROP DATABASE IF EXISTS federated;
|