mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			137 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
-- source include/have_debug.inc
 | 
						|
 | 
						|
SET @org_slow_query_log= @@global.slow_query_log;
 | 
						|
SET @org_log_output= @@global.log_output;
 | 
						|
SET @org_log_slow_admin_statements= @@global.log_slow_admin_statements;
 | 
						|
 | 
						|
SET @@GLOBAL.slow_query_log=OFF;
 | 
						|
SET @@GLOBAL.log_output='TABLE';
 | 
						|
FLUSH SLOW LOGS;
 | 
						|
SET @@GLOBAL.slow_query_log=ON;
 | 
						|
SET @@GLOBAL.log_slow_admin_statements=ON;
 | 
						|
SET @saved_dbug = @@debug_dbug;
 | 
						|
SET SESSION debug_dbug="+d,simulate_slow_query";
 | 
						|
 | 
						|
DELIMITER $$;
 | 
						|
CREATE PROCEDURE show_slow_log()
 | 
						|
BEGIN
 | 
						|
  SELECT CONCAT('[slow] ', sql_text) AS sql_text
 | 
						|
    FROM mysql.slow_log
 | 
						|
     WHERE sql_text NOT LIKE '%debug_dbug%';
 | 
						|
END
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Expect all admin statements in the slow log (ON,DEFAULT)
 | 
						|
--echo #
 | 
						|
 | 
						|
SET @@SESSION.log_slow_admin_statements=ON;
 | 
						|
SET log_slow_filter=DEFAULT;
 | 
						|
TRUNCATE TABLE mysql.slow_log;
 | 
						|
--source include/log_slow_debug_common.inc
 | 
						|
CALL show_slow_log();
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Expect all admin statements in the slow log (ON,admin)
 | 
						|
--echo #
 | 
						|
 | 
						|
SET @@SESSION.log_slow_admin_statements=ON;
 | 
						|
SET log_slow_filter=admin;
 | 
						|
TRUNCATE TABLE mysql.slow_log;
 | 
						|
--source include/log_slow_debug_common.inc
 | 
						|
CALL show_slow_log();
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Expect none of admin DDL statements in the slow log (ON,filesort)
 | 
						|
--echo #
 | 
						|
 | 
						|
SET @@SESSION.log_slow_admin_statements=ON;
 | 
						|
SET log_slow_filter=filesort;
 | 
						|
TRUNCATE TABLE mysql.slow_log;
 | 
						|
--source include/log_slow_debug_common.inc
 | 
						|
CALL show_slow_log();
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Expect none of admin statements in the slow log (OFF,DEFAULT)
 | 
						|
--echo #
 | 
						|
 | 
						|
SET @@SESSION.log_slow_admin_statements=OFF;
 | 
						|
SET log_slow_filter=DEFAULT;
 | 
						|
TRUNCATE TABLE mysql.slow_log;
 | 
						|
--source include/log_slow_debug_common.inc
 | 
						|
CALL show_slow_log();
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Expect all admin statements in the slow log (GLOBAL OFF,LOCAL ON,DEFAULT)
 | 
						|
--echo # In the original implementation, this combination disabled slow log for admin commands.
 | 
						|
--echo # However, instead of this exception in GLOBAL vs LOCAL variable behaviour,
 | 
						|
--echo # we should make max_system_variables.log_slow_admin_statements=0
 | 
						|
--echo # prevent enabling globally suppressed logging by setting the session variable to ON.
 | 
						|
--echo #
 | 
						|
 | 
						|
SET @@GLOBAL.log_slow_admin_statements=OFF;
 | 
						|
SET @@SESSION.log_slow_admin_statements=ON;
 | 
						|
SET log_slow_filter=DEFAULT;
 | 
						|
TRUNCATE TABLE mysql.slow_log;
 | 
						|
--source include/log_slow_debug_common.inc
 | 
						|
CALL show_slow_log();
 | 
						|
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # MDEV-30820: slow log Rows_examined out of range
 | 
						|
--echo #
 | 
						|
 | 
						|
CREATE TABLE `tab_MDEV_30820` (
 | 
						|
`ID` int(11) NOT NULL AUTO_INCREMENT,
 | 
						|
`A` int(11),
 | 
						|
PRIMARY KEY(ID)
 | 
						|
);
 | 
						|
 | 
						|
insert into tab_MDEV_30820 values (null, 0),(null, 0);
 | 
						|
 | 
						|
SET @old_slow_query_log= @@global.slow_query_log;
 | 
						|
SET @old_log_output= @@global.log_output;
 | 
						|
SET @old_long_query_time= @@long_query_time;
 | 
						|
SET @old_dbug= @@GLOBAL.debug_dbug;
 | 
						|
SET GLOBAL log_output= "TABLE";
 | 
						|
 | 
						|
SET GLOBAL slow_query_log= ON;
 | 
						|
SET SESSION long_query_time= 0;
 | 
						|
 | 
						|
SET debug_dbug="+d,debug_huge_number_of_examined_rows";
 | 
						|
--disable_ps_protocol
 | 
						|
--disable_view_protocol
 | 
						|
SELECT * FROM tab_MDEV_30820 ORDER BY 1;
 | 
						|
--enable_view_protocol
 | 
						|
--enable_ps_protocol
 | 
						|
SET debug_dbug=@old_dbug;
 | 
						|
 | 
						|
## Reset to initial values
 | 
						|
SET @@long_query_time= @old_long_query_time;
 | 
						|
SET @@global.log_output= @old_log_output;
 | 
						|
SET @@global.slow_query_log= @old_slow_query_log;
 | 
						|
 | 
						|
SELECT rows_examined, sql_text from mysql.slow_log where sql_text like "SELECT%FROM tab_MDEV_30820%";
 | 
						|
 | 
						|
drop table tab_MDEV_30820;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # End of 10.4 test
 | 
						|
--echo #
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Clean up
 | 
						|
--echo #
 | 
						|
 | 
						|
SET SESSION debug_dbug=@saved_dbug;
 | 
						|
TRUNCATE mysql.slow_log;
 | 
						|
SET @@global.slow_query_log= @org_slow_query_log;
 | 
						|
SET @@global.log_output= @org_log_output;
 | 
						|
SET @@global.log_slow_admin_statements= @org_log_slow_admin_statements;
 | 
						|
DROP PROCEDURE show_slow_log;
 |