1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-15941 Explicit cursor FOR loop does not close the cursor

This commit is contained in:
Alexander Barkov
2018-06-20 13:29:11 +04:00
parent b534a7b89e
commit 9c53cbdd88
11 changed files with 427 additions and 64 deletions

View File

@ -607,3 +607,85 @@ END;
$$
DELIMITER ;$$
DROP TABLE t1;
--echo #
--echo # MDEV-15941 Explicit cursor FOR loop does not close the cursor
--echo #
DELIMITER $$;
--error ER_SP_CURSOR_NOT_OPEN
BEGIN NOT ATOMIC
DECLARE v INT;
DECLARE cur CURSOR FOR SELECT 1 AS a FROM DUAL;
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
FETCH cur INTO v;
END;
$$
DELIMITER ;$$
DELIMITER $$;
--error ER_SP_CURSOR_NOT_OPEN
BEGIN NOT ATOMIC
DECLARE v INT;
DECLARE cur CURSOR FOR SELECT 1 AS a FROM DUAL;
label:
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
FETCH cur INTO v;
END;
$$
DELIMITER ;$$
DELIMITER $$;
--error ER_SP_CURSOR_ALREADY_OPEN
BEGIN NOT ATOMIC
DECLARE cur CURSOR FOR SELECT 1 AS a FROM DUAL;
OPEN cur;
FOR rec IN cur DO
SELECT rec.a;
END FOR;
END;
$$
DELIMITER ;$$
DELIMITER $$;
BEGIN NOT ATOMIC
DECLARE cur CURSOR FOR SELECT 1 AS a FROM DUAL;
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
END;
$$
DELIMITER ;$$
DELIMITER $$;
BEGIN NOT ATOMIC
DECLARE cur CURSOR FOR SELECT 1 AS a FROM DUAL;
label1:
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
label2:
FOR rec IN cur
DO
SELECT rec.a;
END FOR;
END;
$$
DELIMITER ;$$