mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-mtr-warnings2
into pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-rpl mysql-test/mysql-test-run.pl: Auto merged
This commit is contained in:
8
mysql-test/include/check-warnings.test
Normal file
8
mysql-test/include/check-warnings.test
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
#
|
||||
# This test is executed once after each test to check the servers
|
||||
# for unexpected warnings found in the servers error log
|
||||
#
|
||||
--disable_query_log
|
||||
call mtr.check_warnings();
|
||||
--enable_query_log
|
@ -17,5 +17,5 @@ loose-innodb_data_file_path= ibdata1:10M:autoextend
|
||||
|
||||
slave-net-timeout=120
|
||||
|
||||
log-bin
|
||||
log-bin=mysqld-bin
|
||||
|
||||
|
290
mysql-test/include/mtr_warnings.sql
Normal file
290
mysql-test/include/mtr_warnings.sql
Normal file
@ -0,0 +1,290 @@
|
||||
delimiter ||;
|
||||
|
||||
use mtr||
|
||||
|
||||
--
|
||||
-- Load table with the patterns that are considered
|
||||
-- as suspicious and should be examined further
|
||||
--
|
||||
CREATE TABLE suspicious_patterns (
|
||||
pattern VARCHAR(255)
|
||||
)||
|
||||
|
||||
|
||||
--
|
||||
-- Declare a trigger that makes sure
|
||||
-- no invalid patterns can be inserted
|
||||
-- into suspicious_patterns
|
||||
--
|
||||
/*!50002
|
||||
CREATE DEFINER=root@localhost TRIGGER sp_insert
|
||||
BEFORE INSERT ON suspicious_patterns
|
||||
FOR EACH ROW BEGIN
|
||||
DECLARE dummy INT;
|
||||
SELECT "" REGEXP NEW.pattern INTO dummy;
|
||||
END
|
||||
*/||
|
||||
|
||||
|
||||
--
|
||||
-- Insert patterns for the lines we should check
|
||||
--
|
||||
INSERT INTO suspicious_patterns VALUES
|
||||
("^Warning:|mysqld: Warning|\\[Warning\\]"),
|
||||
("^Error:|\\[ERROR\\]"),
|
||||
("^==.* at 0x"),
|
||||
("InnoDB: Warning"),
|
||||
("^safe_mutex:|allocated at line"),
|
||||
("missing DBUG_RETURN"),
|
||||
("Attempting backtrace"),
|
||||
("Assertion .* failed")||
|
||||
|
||||
|
||||
--
|
||||
-- Create table where testcases can insert patterns to
|
||||
-- be supressed
|
||||
--
|
||||
CREATE TABLE test_supressions (
|
||||
pattern VARCHAR(255)
|
||||
)||
|
||||
|
||||
|
||||
--
|
||||
-- Declare a trigger that makes sure
|
||||
-- no invalid patterns can be inserted
|
||||
-- into test_supressions
|
||||
--
|
||||
/*!50002
|
||||
CREATE DEFINER=root@localhost TRIGGER ts_insert
|
||||
BEFORE INSERT ON test_supressions
|
||||
FOR EACH ROW BEGIN
|
||||
DECLARE dummy INT;
|
||||
SELECT "" REGEXP NEW.pattern INTO dummy;
|
||||
END
|
||||
*/||
|
||||
|
||||
|
||||
--
|
||||
-- Load table with patterns that will be supressed globally(always)
|
||||
--
|
||||
CREATE TABLE global_supressions (
|
||||
pattern VARCHAR(255)
|
||||
)||
|
||||
|
||||
|
||||
-- Declare a trigger that makes sure
|
||||
-- no invalid patterns can be inserted
|
||||
-- into global_supressions
|
||||
--
|
||||
/*!50002
|
||||
CREATE DEFINER=root@localhost TRIGGER gs_insert
|
||||
BEFORE INSERT ON global_supressions
|
||||
FOR EACH ROW BEGIN
|
||||
DECLARE dummy INT;
|
||||
SELECT "" REGEXP NEW.pattern INTO dummy;
|
||||
END
|
||||
*/||
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Insert patterns that should always be supressed
|
||||
--
|
||||
INSERT INTO global_supressions VALUES
|
||||
("'SELECT UNIX_TIMESTAMP\\(\\)' failed on master"),
|
||||
("Aborted connection"),
|
||||
("Client requested master to start replication from impossible position"),
|
||||
("Could not find first log file name in binary log"),
|
||||
("Enabling keys got errno"),
|
||||
("Error reading master configuration"),
|
||||
("Error reading packet"),
|
||||
("Event Scheduler"),
|
||||
("Failed to open log"),
|
||||
("Failed to open the existing master info file"),
|
||||
("Forcing shutdown of [0-9]* plugins"),
|
||||
|
||||
/*
|
||||
Due to timing issues, it might be that this warning
|
||||
is printed when the server shuts down and the
|
||||
computer is loaded.
|
||||
*/
|
||||
|
||||
("Got error [0-9]* when reading table"),
|
||||
("Incorrect definition of table"),
|
||||
("Incorrect information in file"),
|
||||
("InnoDB: Warning: we did not need to do crash recovery"),
|
||||
("Invalid \\(old\\?\\) table or database name"),
|
||||
("Lock wait timeout exceeded"),
|
||||
("Log entry on master is longer than max_allowed_packet"),
|
||||
("unknown option '--loose-"),
|
||||
("unknown variable 'loose-"),
|
||||
("You have forced lower_case_table_names to 0 through a command-line option"),
|
||||
("Setting lower_case_table_names=2"),
|
||||
("NDB Binlog:"),
|
||||
("NDB: failed to setup table"),
|
||||
("NDB: only row based binary logging"),
|
||||
("Neither --relay-log nor --relay-log-index were used"),
|
||||
("Query partially completed"),
|
||||
("Slave I.O thread aborted while waiting for relay log"),
|
||||
("Slave SQL thread is stopped because UNTIL condition"),
|
||||
("Slave SQL thread retried transaction"),
|
||||
("Slave \\(additional info\\)"),
|
||||
("Slave: .*Duplicate column name"),
|
||||
("Slave: .*master may suffer from"),
|
||||
("Slave: According to the master's version"),
|
||||
("Slave: Column [0-9]* type mismatch"),
|
||||
("Slave: Error .* doesn't exist"),
|
||||
("Slave: Error .*Deadlock found"),
|
||||
("Slave: Error .*Unknown table"),
|
||||
("Slave: Error in Write_rows event: "),
|
||||
("Slave: Field .* of table .* has no default value"),
|
||||
("Slave: Field .* doesn't have a default value"),
|
||||
("Slave: Query caused different errors on master and slave"),
|
||||
("Slave: Table .* doesn't exist"),
|
||||
("Slave: Table width mismatch"),
|
||||
("Slave: The incident LOST_EVENTS occured on the master"),
|
||||
("Slave: Unknown error.* 1105"),
|
||||
("Slave: Can't drop database.* database doesn't exist"),
|
||||
("Slave SQL:.*(Error_code: \[\[:digit:\]\]+|Query:.*)"),
|
||||
("Sort aborted"),
|
||||
("Time-out in NDB"),
|
||||
("Warning:\s+One can only use the --user.*root"),
|
||||
("Warning:\s+Setting lower_case_table_names=2"),
|
||||
("Warning:\s+Table:.* on (delete|rename)"),
|
||||
("You have an error in your SQL syntax"),
|
||||
("deprecated"),
|
||||
("description of time zone"),
|
||||
("equal MySQL server ids"),
|
||||
("error .*connecting to master"),
|
||||
("error reading log entry"),
|
||||
("lower_case_table_names is set"),
|
||||
("skip-name-resolve mode"),
|
||||
("slave SQL thread aborted"),
|
||||
("Slave: .*Duplicate entry"),
|
||||
|
||||
/*
|
||||
Special case, made as specific as possible, for:
|
||||
Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes
|
||||
server coredump
|
||||
*/
|
||||
|
||||
("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"),
|
||||
|
||||
("Statement is not safe to log in statement format"),
|
||||
|
||||
/* test case for Bug#bug29807 copies a stray frm into database */
|
||||
("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"),
|
||||
("Cannot find or open table test\/bug29807 from"),
|
||||
|
||||
/* innodb foreign key tests that fail in ALTER or RENAME produce this */
|
||||
("InnoDB: Error: in ALTER TABLE `test`.`t[12]`"),
|
||||
("InnoDB: Error: in RENAME TABLE table `test`.`t1`"),
|
||||
("InnoDB: Error: table `test`.`t[12]` does not exist in the InnoDB internal"),
|
||||
|
||||
/* Test case for Bug#14233 produces the following warnings: */
|
||||
("Stored routine 'test'.'bug14233_1': invalid value in column mysql.proc"),
|
||||
("Stored routine 'test'.'bug14233_2': invalid value in column mysql.proc"),
|
||||
("Stored routine 'test'.'bug14233_3': invalid value in column mysql.proc"),
|
||||
|
||||
/*
|
||||
BUG#32080 - Excessive warnings on Solaris: setrlimit could not
|
||||
change the size of core files
|
||||
*/
|
||||
("setrlimit could not change the size of core files to 'infinity'"),
|
||||
|
||||
/*
|
||||
rpl_extrColmaster_*.test, the slave thread produces warnings
|
||||
when it get updates to a table that has more columns on the
|
||||
master
|
||||
*/
|
||||
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
|
||||
("Slave: Can't DROP 'c7'.* 1091"),
|
||||
("Slave: Key column 'c6'.* 1072"),
|
||||
|
||||
("THE_LAST_SUPPRESSION")||
|
||||
|
||||
|
||||
--
|
||||
-- Procedure that uses the above created tables to check
|
||||
-- the servers error log for warnings
|
||||
--
|
||||
CREATE DEFINER=root@localhost PROCEDURE check_warnings()
|
||||
BEGIN
|
||||
--
|
||||
-- Load the server .err file into "error_log" table
|
||||
--
|
||||
CREATE TEMPORARY TABLE error_log (
|
||||
row INT AUTO_INCREMENT PRIMARY KEY,
|
||||
line mediumtext NULL
|
||||
);
|
||||
|
||||
SELECT variable_value INTO @log_error
|
||||
FROM information_schema.global_variables
|
||||
WHERE variable_name='LOG_ERROR';
|
||||
|
||||
SET @text= load_file(@log_error);
|
||||
-- select @text;
|
||||
|
||||
WHILE LOCATE('\n', @text) DO
|
||||
INSERT error_log (line)
|
||||
VALUES (
|
||||
SUBSTR(@text, 1, LOCATE('\n', @text)-1)
|
||||
);
|
||||
SET @text= SUBSTR(@text FROM LOCATE('\n', @text)+1);
|
||||
END WHILE;
|
||||
|
||||
-- select * from error_log;
|
||||
|
||||
--
|
||||
-- Remove all lines belonging to previous tests
|
||||
--
|
||||
SELECT COALESCE(MAX(row),0) INTO @max_row
|
||||
FROM error_log
|
||||
WHERE line REGEXP "^CURRENT_TEST:";
|
||||
DELETE FROM error_log WHERE row < @max_row;
|
||||
|
||||
CREATE TEMPORARY TABLE suspect_lines AS
|
||||
SELECT DISTINCT el.line, 0 as "supressed"
|
||||
FROM error_log el, suspicious_patterns ep
|
||||
WHERE el.line REGEXP ep.pattern;
|
||||
|
||||
-- Mark lines that are supressed by global supressions
|
||||
UPDATE suspect_lines sl, global_supressions gs
|
||||
SET supressed=1
|
||||
WHERE sl.line REGEXP gs.pattern;
|
||||
|
||||
-- Mark lines that are supressed by test specific supressions
|
||||
UPDATE suspect_lines sl, test_supressions ts
|
||||
SET supressed=2
|
||||
WHERE sl.line REGEXP ts.pattern;
|
||||
|
||||
SELECT COUNT(*) INTO @num_warnings FROM suspect_lines
|
||||
WHERE supressed=0;
|
||||
|
||||
IF @num_warnings > 0 THEN
|
||||
SELECT @log_error;
|
||||
SELECT line as log_error
|
||||
FROM suspect_lines WHERE supressed=0;
|
||||
SELECT * FROM test_supressions;
|
||||
ELSE
|
||||
SELECT "OK";
|
||||
END IF;
|
||||
|
||||
-- Cleanup for next test
|
||||
TRUNCATE test_supressions;
|
||||
|
||||
END||
|
||||
|
||||
--
|
||||
-- Declare a procedure testcases can use to insert test
|
||||
-- specific supressions
|
||||
--
|
||||
/*!50001
|
||||
CREATE DEFINER=root@localhost
|
||||
PROCEDURE add_supression(pattern VARCHAR(255))
|
||||
BEGIN
|
||||
INSERT INTO test_supressions (pattern) VALUES (pattern);
|
||||
END
|
||||
*/||
|
||||
|
||||
|
Reference in New Issue
Block a user