summaryrefslogtreecommitdiff
path: root/mysql-test/include/mtr_warnings.sql
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/include/mtr_warnings.sql')
-rw-r--r--mysql-test/include/mtr_warnings.sql290
1 files changed, 290 insertions, 0 deletions
diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql
new file mode 100644
index 00000000000..65aa9a5842f
--- /dev/null
+++ b/mysql-test/include/mtr_warnings.sql
@@ -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
+*/||
+
+