From 3f619478f796eddbba6e39502fe941b285dd97b1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 20:00:34 +0200 Subject: Adding upstream version 1:10.11.6. Signed-off-by: Daniel Baumann --- mysql-test/main/sp-condition-handler.test | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mysql-test/main/sp-condition-handler.test (limited to 'mysql-test/main/sp-condition-handler.test') diff --git a/mysql-test/main/sp-condition-handler.test b/mysql-test/main/sp-condition-handler.test new file mode 100644 index 00000000..29f84160 --- /dev/null +++ b/mysql-test/main/sp-condition-handler.test @@ -0,0 +1,50 @@ + +--echo # +--echo # Start of 10.3 tests +--echo # + +--echo # +--echo # MDEV-16595 SP with a CONTINUE HANDLER inside a loop wastes THD memory aggressively +--echo # + +DELIMITER $$; +CREATE PROCEDURE p1() +BEGIN + DECLARE mem_used_old BIGINT UNSIGNED DEFAULT + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS + WHERE VARIABLE_NAME='MEMORY_USED'); + DECLARE i INT DEFAULT 1; + WHILE i <= 1000 + DO + BEGIN + DECLARE msg TEXT; + DECLARE mem_used_cur BIGINT UNSIGNED DEFAULT + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS + WHERE VARIABLE_NAME='MEMORY_USED'); + DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23001' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23002' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23003' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23004' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23005' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23006' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23007' SET @x=1; + DECLARE CONTINUE HANDLER FOR SQLSTATE '23008' SET @x=1; + IF (mem_used_cur >= mem_used_old * 1.1) THEN + SHOW STATUS LIKE 'Memory_used'; + SET msg=CONCAT('Memory leak detected: i=', i, ' mem_used_old=',mem_used_old,' mem_used_cur=', mem_used_cur); + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT=msg; + END IF; + END; + SET i=i+1; + END WHILE; +END; +$$ +DELIMITER ;$$ +CALL p1; +DROP PROCEDURE p1; + + +--echo # +--echo # End of 10.3 tests +--echo # -- cgit v1.2.3