mariadb/mysql-test/main/sp-bugs2.test

129 lines
3.1 KiB
Text

--source include/have_perfschema.inc
--echo #
--echo # MDEV-6610 Assertion `thd->is_error() || thd->killed' failed in mysql_execute_command on executing an SP with repeated CREATE TABLE .. SELECT
--echo #
CREATE TABLE t1 (i INT);
SET @a = 2;
CREATE TABLE IF NOT EXISTS t2 (i INT) ENGINE = MyISAM
AS SELECT * FROM t1;
CREATE TABLE IF NOT EXISTS t2 (i INT) ENGINE = MyISAM
AS SELECT * FROM t1;
DROP TABLE t2;
--delimiter |
CREATE PROCEDURE sp()
BEGIN
REPEAT
CREATE TABLE IF NOT EXISTS t2 (i INT) ENGINE = MyISAM
AS SELECT * FROM t1;
SET @a = @a - 1;
UNTIL @a = 0
END REPEAT ;
END |
--delimiter ;
CALL sp();
DROP PROCEDURE sp;
DROP TABLE t1, t2;
--echo #
--echo # MDEV-36979 Same alias name with different case on same table is not working in functions
--echo #
create table t1 ( id int primary key auto_increment, name varchar(10));
insert into t1 (name) values ('wrbyviwb');
insert into t1 (name) values ('wrbyrwb1');
insert into t1 (name) values ('wrbrwb3');
select cnt.name from t1 cnt join ( select CMT.id from t1 CMT where CMT.id=1) t2 on t2.id=cnt.id;
delimiter //;
create function t1test(val int) returns varchar(400) charset utf8
begin
declare output varchar(400) default '';
set output = (select cnt.name from t1 cnt join ( select CMT.id from t1 CMT where CMT.id=val) t2 on t2.id=cnt.id);
return output;
end//
delimiter ;//
select t1test(1);
drop function t1test;
drop table t1;
--echo #
--echo # MDEV-36814 MariaDB 10.11.9 Signal 11 crash on second Stored Procedure call
--echo #
set names utf8;
create table t1 (a varchar(1000));
--delimiter //
create procedure p1(in p_a varchar(1000)) insert into t1 values (p_a);//
create procedure p2(in s varchar(10))
begin
if s = '1' then set @startDate = now(); end if;
if s = '2' then set @startDate = '2025-05-23'; end if;
call p1(concat(s, @startDate, ' and '));
end;//
--delimiter ;
call p2('1');
call p2('2');
drop table t1;
drop procedure p1;
drop procedure p2;
--echo #
--echo # MDEV-26115: Crash when calling stored function in FOR loop argument
--echo #
--delimiter $
CREATE OR REPLACE FUNCTION cnt()
RETURNS INTEGER NO SQL
BEGIN
RETURN 3;
END;
$
CREATE OR REPLACE PROCEDURE p1()
NO SQL
BEGIN
DECLARE i INTEGER;
FOR i IN 1..cnt() DO
SELECT 1;
END FOR;
END;
$
--delimiter ;
CALL p1();
CALL p1();
--echo # Clean up
DROP FUNCTION cnt;
DROP PROCEDURE p1;
--echo #
--echo # MDEV-37710 ASAN errors in find_type2 upon executing a procedure from sys schema
--echo #
delimiter $$;
create procedure p1()
begin
declare found int;
repeat
set found = exists (select * from information_schema.routines where routine_name='f');
if (sys.ps_is_consumer_enabled('events_waits_history_long') = 'yes') then
select * from mysql.user;
end if;
select release_all_locks();
until found end repeat;
end$$
delimiter ;$$
select get_lock('p1', 300);
--send call p1()
--connect con1,localhost,root,,
select get_lock('p1', 300);
create function f() returns int return 1;
--connection default
--disable_result_log
--reap
--enable_result_log
drop function f;
drop procedure p1;
--echo # End of 10.11 tests