用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

429 lines
14 KiB

3 months ago
-- source include/no_valgrind_without_big.inc
--echo #
--echo # WL#7755 mysqlpump: Extend mysqldump functionalities
--echo #
--echo #
--echo # Test all newly added mysqlpump options
--echo #
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE DATABASE db2_extended;
USE db2_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
--echo # test exclude-databases
--exec $MYSQL_PUMP --add-drop-table --exclude-databases=db1_extended,mysql,mtr > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db2_extended;
DROP DATABASE db1_extended;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW DATABASES;
DROP DATABASE db2_extended;
--echo # test exclude-events
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO SET @a=5;
CREATE EVENT ev2 ON SCHEDULE EVERY 5 HOUR DO SELECT 1;
--exec $MYSQL_PUMP --databases db1_extended --exclude-events=ev2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_SCHEMA='db1_extended' ORDER BY EVENT_NAME;
--echo # test exclude-routines
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE PROCEDURE p1 () SELECT * FROM t1;
CREATE PROCEDURE p2 () SELECT * FROM t2;
CREATE PROCEDURE p3 () SELECT * FROM t1,t2;
--exec $MYSQL_PUMP --databases db1_extended --exclude-routines=p1,p2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA='db1_extended' AND ROUTINE_TYPE= 'PROCEDURE'
ORDER BY ROUTINE_NAME;
--echo # test exclude-tables
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE TABLE t3 (a VARCHAR(10));
--exec $MYSQL_PUMP --databases db1_extended --exclude-tables=t1,t2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW TABLES FROM db1_extended;
--echo # test exclude-triggers
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE TRIGGER trig1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.a = 1;
CREATE TRIGGER trig2 BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.a = 999;
--exec $MYSQL_PUMP --databases db1_extended --exclude-triggers=trig2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA='db1_extended' ORDER BY TRIGGER_NAME;
--echo # test include-events
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO SET @a=5;
CREATE EVENT ev2 ON SCHEDULE EVERY 5 HOUR DO SELECT 1;
--exec $MYSQL_PUMP --databases db1_extended --include-events=ev2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_SCHEMA='db1_extended' ORDER BY EVENT_NAME;
--echo # test include-routines
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE PROCEDURE p1 () SELECT * FROM t1;
CREATE PROCEDURE p2 () SELECT * FROM t2;
CREATE PROCEDURE p3 () SELECT * FROM t1,t2;
--exec $MYSQL_PUMP --databases db1_extended --include-routines=p1,p2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA='db1_extended' AND ROUTINE_TYPE= 'PROCEDURE'
ORDER BY ROUTINE_NAME;
--echo # test include-tables
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE TABLE t3 (a VARCHAR(10));
--exec $MYSQL_PUMP --databases db1_extended --include-tables=t1,t2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW TABLES FROM db1_extended;
--echo # test include-triggers
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
CREATE TRIGGER trig1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.a = 1;
CREATE TRIGGER trig2 BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.a = 999;
--exec $MYSQL_PUMP --databases db1_extended --include-triggers=trig2 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
CREATE DATABASE db1_extended;
USE db1_extended;
--exec $MYSQL db1_extended < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA='db1_extended' ORDER BY TRIGGER_NAME;
DROP DATABASE db1_extended;
--echo # test parallel-schemas
CREATE DATABASE db1_extended;
CREATE DATABASE db2_extended;
CREATE DATABASE db3_extended;
CREATE DATABASE db4_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
USE db2_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
USE db3_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
USE db4_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
--exec $MYSQL_PUMP --parallel-schemas=db2_extended,db4_extended --exclude-databases=db1_extended,db3_extended,mysql,mtr > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
DROP DATABASE db2_extended;
DROP DATABASE db3_extended;
DROP DATABASE db4_extended;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW DATABASES;
DROP DATABASE db2_extended;
DROP DATABASE db4_extended;
--echo # test skip-dump-rows
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
INSERT INTO t1 VALUES (1),(2),(21),(12),(41),(22),(51),(24);
INSERT INTO t2 VALUES (1,'abc'),(2,'abc'),(21,'abc'),(12,'abc');
SELECT COUNT(*) FROM t1;
SELECT COUNT(*) FROM t2;
--exec $MYSQL_PUMP --databases db1_extended --skip-dump-rows > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
USE db1_extended;
SELECT COUNT(*) FROM t1;
SELECT COUNT(*) FROM t2;
#cleanup
DROP DATABASE db1_extended;
--echo # test --users
CREATE USER u1@localhost IDENTIFIED BY 'abc';
CREATE USER u2;
--exec $MYSQL_PUMP --users --exclude-users=root,mysql.sys,mysql.session,mysql.infoschema --exclude-databases=mysql,mtr > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP USER u1@localhost,u2;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SELECT user FROM mysql.user WHERE user like 'u%';
DROP USER u1@localhost,u2;
--echo # test --include-users
CREATE USER u1@localhost IDENTIFIED BY 'abc';
GRANT SELECT ON mysql.user to u1@localhost;
CREATE USER u1@120.0.0.1;
GRANT INSERT,UPDATE,DELETE ON mysql.* to u1@120.0.0.1;
CREATE USER u2;
CREATE USER u3@120.0.0.1;
GRANT SELECT ON mysql.user to u3@120.0.0.1;
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr --include-users=u2,u1@120.0.0.1 > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP USER u1@localhost,u3@120.0.0.1,u1@120.0.0.1,u2;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
# report u1,u2 user rows
SELECT user FROM mysql.user WHERE user like 'u%';
DROP USER u1@120.0.0.1,u2;
--echo # test --exclude-users
CREATE USER u1@localhost IDENTIFIED BY 'abc';
GRANT SELECT ON mysql.user to u1@localhost;
CREATE USER u1@120.0.0.1;
GRANT INSERT,UPDATE,DELETE ON mysql.* to u1@120.0.0.1;
CREATE USER u2;
CREATE USER u3@120.0.0.1;
GRANT SELECT ON mysql.user to u3@120.0.0.1;
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr --exclude-users=u2,u1@120.0.0.1,root,mysql.sys,mysql.session,mysql.infoschema > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP USER u1@localhost,u3@120.0.0.1,u1@120.0.0.1,u2;
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
# report u1,u3 user rows
SELECT user FROM mysql.user WHERE user like 'u%';
DROP USER u1@localhost,u3@120.0.0.1;
--echo # test add-drop-user
CREATE USER u1@localhost IDENTIFIED BY 'abc';
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr --exclude-users=root,mysql.sys,mysql.session,mysql.infoschema --add-drop-user > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP USER u1@localhost;
# if restore reports error it means db1_extended.sql has DROP USER stmt
--error 1
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--echo # test skip-definer for views
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE USER u1@localhost;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b VARCHAR(10), primary key(a));
INSERT INTO t1 VALUES (289), (298), (234), (456), (789);
INSERT INTO t2 VALUES (1, "on"), (2, "off"), (10, "pol"), (12, "meg");
CREATE DEFINER = u1@localhost VIEW v1 AS SELECT * FROM t2;
CREATE DEFINER = u1@localhost VIEW v2 AS SELECT t1.a as X, t2.* FROM t1,t2 ORDER BY X;
CREATE DEFINER = u1@localhost VIEW definer_name_view AS SELECT * FROM t1 union SELECT a FROM t2;
#test without skip-definer
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
# now restore and check for view definitions
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW CREATE VIEW db1_extended.v1;
SHOW CREATE VIEW db1_extended.v2;
SHOW CREATE VIEW db1_extended.definer_name_view;
#test with skip-definer
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr --skip-definer > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
# now restore and check for view definitions
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW CREATE VIEW db1_extended.v1;
SHOW CREATE VIEW db1_extended.v2;
SHOW CREATE VIEW db1_extended.definer_name_view;
#cleanup
DROP DATABASE db1_extended;
DROP USER u1@localhost;
--echo # test skip-definer for stored routines (FUNCTIONS/PROCEDURES)
CREATE DATABASE db1_extended;
USE db1_extended;
CREATE USER u1@localhost;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (289), (298), (234), (456), (789);
DELIMITER |;
CREATE DEFINER = u1@localhost PROCEDURE p1()
BEGIN
SET @A= 20;
SELECT 1;
SELECT 2, 3 UNION SELECT 4, 5;
SELECT 6, 7, 8;
END ;|
CREATE DEFINER = u1@localhost FUNCTION f1 () RETURNS int
BEGIN
SET NAMES 'big5';
RETURN (SELECT COUNT(*) FROM t1);
END ;|
CREATE DEFINER = u1@localhost FUNCTION f2() RETURNS int
BEGIN
DECLARE n int;
DECLARE m int;
SET n:= (SELECT min(a) FROM t1);
SET m:= (SELECT max(a) FROM t1);
RETURN n < m;
END ;|
CREATE DEFINER = u1@localhost PROCEDURE p2(x int)
INSERT INTO t1 VALUES (x) ;|
DELIMITER ;|
#test without skip-definer
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
# now restore and check for view definitions
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW CREATE FUNCTION db1_extended.f1;
SHOW CREATE FUNCTION db1_extended.f2;
SHOW CREATE PROCEDURE db1_extended.p1;
SHOW CREATE PROCEDURE db1_extended.p2;
#test with skip-definer
--exec $MYSQL_PUMP --exclude-databases=mysql,mtr --skip-definer > $MYSQLTEST_VARDIR/tmp/db1_extended.sql
DROP DATABASE db1_extended;
# now restore and check for view definitions
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/db1_extended.sql
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.sql
SHOW CREATE FUNCTION db1_extended.f1;
SHOW CREATE FUNCTION db1_extended.f2;
SHOW CREATE PROCEDURE db1_extended.p1;
SHOW CREATE PROCEDURE db1_extended.p2;
#cleanup
DROP DATABASE db1_extended;
DROP USER u1@localhost;
--echo # test for compress-output
--exec $MYSQL_PUMP --all-databases --compress-output=zlib > $MYSQLTEST_VARDIR/tmp/db1_extended.zlib
--exec $MYSQL_PUMP --all-databases --compress-output=lz4 > $MYSQLTEST_VARDIR/tmp/db1_extended.lz4
--file_exists $MYSQLTEST_VARDIR/tmp/db1_extended.zlib
--file_exists $MYSQLTEST_VARDIR/tmp/db1_extended.lz4
#cleanup
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.zlib
--remove_file $MYSQLTEST_VARDIR/tmp/db1_extended.lz4