mirror of
https://github.com/MariaDB/server.git
synced 2025-11-22 21:49:39 +01:00
don't reload stored routines in the middle of the execution of a routine. we don't want different iterations of a loop to see diffefent definitions For this: remember Cversion in THD on the first sp cache lookup, after that only compare versions with this value not with Cversion.
126 lines
2.8 KiB
Text
126 lines
2.8 KiB
Text
#
|
|
# MDEV-6610 Assertion `thd->is_error() || thd->killed' failed in mysql_execute_command on executing an SP with repeated CREATE TABLE .. SELECT
|
|
#
|
|
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;
|
|
Warnings:
|
|
Note 1050 Table 't2' already exists
|
|
DROP TABLE t2;
|
|
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 |
|
|
CALL sp();
|
|
Warnings:
|
|
Note 1050 Table 't2' already exists
|
|
DROP PROCEDURE sp;
|
|
DROP TABLE t1, t2;
|
|
#
|
|
# MDEV-36979 Same alias name with different case on same table is not working in functions
|
|
#
|
|
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;
|
|
name
|
|
wrbyviwb
|
|
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//
|
|
select t1test(1);
|
|
t1test(1)
|
|
wrbyviwb
|
|
drop function t1test;
|
|
drop table t1;
|
|
#
|
|
# MDEV-36814 MariaDB 10.11.9 Signal 11 crash on second Stored Procedure call
|
|
#
|
|
set names utf8;
|
|
create table t1 (a varchar(1000));
|
|
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;//
|
|
call p2('1');
|
|
call p2('2');
|
|
drop table t1;
|
|
drop procedure p1;
|
|
drop procedure p2;
|
|
#
|
|
# MDEV-26115: Crash when calling stored function in FOR loop argument
|
|
#
|
|
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;
|
|
$
|
|
CALL p1();
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
CALL p1();
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
# Clean up
|
|
DROP FUNCTION cnt;
|
|
DROP PROCEDURE p1;
|
|
#
|
|
# MDEV-37710 ASAN errors in find_type2 upon executing a procedure from sys schema
|
|
#
|
|
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$$
|
|
select get_lock('p1', 300);
|
|
get_lock('p1', 300)
|
|
1
|
|
call p1();
|
|
connect con1,localhost,root,,;
|
|
select get_lock('p1', 300);
|
|
get_lock('p1', 300)
|
|
1
|
|
create function f() returns int return 1;
|
|
connection default;
|
|
drop function f;
|
|
drop procedure p1;
|
|
# End of 10.11 tests
|