Description:
Calling the procedure "delivery" below crashes the server when executing
the instruction corresponding to "IF tmp_o_id > 0 THEN".
--
use test;
DROP TABLE IF EXISTS new_order;
CREATE TABLE new_order (
no_o_id decimal(8,0) NOT NULL default '0',
no_d_id decimal(2,0) NOT NULL default '0',
no_w_id decimal(9,0) NOT NULL default '0',
PRIMARY KEY (no_w_id,no_d_id,no_o_id)
) TYPE=MyISAM CHARSET=latin1;
DROP PROCEDURE IF EXISTS new_order_init;
delimiter |;
CREATE PROCEDURE new_order_init()
BEGIN
DELETE FROM new_order;
INSERT INTO new_order VALUES (2102,1,1);
INSERT INTO new_order VALUES (2103,1,1);
INSERT INTO new_order VALUES (2104,1,1);
INSERT INTO new_order VALUES (2105,1,1);
INSERT INTO new_order VALUES (2106,1,1);
INSERT INTO new_order VALUES (2107,1,1);
INSERT INTO new_order VALUES (2108,1,1);
INSERT INTO new_order VALUES (2109,1,1);
INSERT INTO new_order VALUES (2110,1,1);
INSERT INTO new_order VALUES (2111,1,1);
INSERT INTO new_order VALUES (2112,1,1);
INSERT INTO new_order VALUES (2101,2,1);
INSERT INTO new_order VALUES (2102,2,1);
INSERT INTO new_order VALUES (2103,2,1);
INSERT INTO new_order VALUES (2104,2,1);
INSERT INTO new_order VALUES (2105,2,1);
INSERT INTO new_order VALUES (2106,2,1);
INSERT INTO new_order VALUES (2107,2,1);
INSERT INTO new_order VALUES (2108,2,1);
INSERT INTO new_order VALUES (2109,2,1);
INSERT INTO new_order VALUES (2110,2,1);
INSERT INTO new_order VALUES (2111,2,1);
INSERT INTO new_order VALUES (2112,2,1);
INSERT INTO new_order VALUES (2101,3,1);
INSERT INTO new_order VALUES (2102,3,1);
INSERT INTO new_order VALUES (2103,3,1);
INSERT INTO new_order VALUES (2104,3,1);
INSERT INTO new_order VALUES (2105,3,1);
INSERT INTO new_order VALUES (2106,3,1);
INSERT INTO new_order VALUES (2107,3,1);
INSERT INTO new_order VALUES (2108,3,1);
INSERT INTO new_order VALUES (2109,3,1);
INSERT INTO new_order VALUES (2110,3,1);
INSERT INTO new_order VALUES (2111,3,1);
INSERT INTO new_order VALUES (2112,3,1);
INSERT INTO new_order VALUES (2101,4,1);
INSERT INTO new_order VALUES (2102,4,1);
INSERT INTO new_order VALUES (2103,4,1);
INSERT INTO new_order VALUES (2104,4,1);
INSERT INTO new_order VALUES (2105,4,1);
INSERT INTO new_order VALUES (2106,4,1);
INSERT INTO new_order VALUES (2107,4,1);
INSERT INTO new_order VALUES (2108,4,1);
INSERT INTO new_order VALUES (2109,4,1);
INSERT INTO new_order VALUES (2110,4,1);
INSERT INTO new_order VALUES (2111,4,1);
INSERT INTO new_order VALUES (2112,4,1);
INSERT INTO new_order VALUES (2101,5,1);
INSERT INTO new_order VALUES (2102,5,1);
INSERT INTO new_order VALUES (2103,5,1);
INSERT INTO new_order VALUES (2104,5,1);
INSERT INTO new_order VALUES (2105,5,1);
INSERT INTO new_order VALUES (2106,5,1);
INSERT INTO new_order VALUES (2107,5,1);
INSERT INTO new_order VALUES (2108,5,1);
INSERT INTO new_order VALUES (2109,5,1);
INSERT INTO new_order VALUES (2110,5,1);
INSERT INTO new_order VALUES (2111,5,1);
INSERT INTO new_order VALUES (2112,5,1);
INSERT INTO new_order VALUES (2101,6,1);
INSERT INTO new_order VALUES (2102,6,1);
INSERT INTO new_order VALUES (2103,6,1);
INSERT INTO new_order VALUES (2104,6,1);
INSERT INTO new_order VALUES (2105,6,1);
INSERT INTO new_order VALUES (2106,6,1);
INSERT INTO new_order VALUES (2107,6,1);
INSERT INTO new_order VALUES (2108,6,1);
INSERT INTO new_order VALUES (2109,6,1);
INSERT INTO new_order VALUES (2110,6,1);
INSERT INTO new_order VALUES (2111,6,1);
INSERT INTO new_order VALUES (2112,6,1);
INSERT INTO new_order VALUES (2101,7,1);
INSERT INTO new_order VALUES (2102,7,1);
INSERT INTO new_order VALUES (2103,7,1);
INSERT INTO new_order VALUES (2104,7,1);
INSERT INTO new_order VALUES (2105,7,1);
INSERT INTO new_order VALUES (2106,7,1);
INSERT INTO new_order VALUES (2107,7,1);
INSERT INTO new_order VALUES (2108,7,1);
INSERT INTO new_order VALUES (2109,7,1);
INSERT INTO new_order VALUES (2110,7,1);
INSERT INTO new_order VALUES (2111,7,1);
INSERT INTO new_order VALUES (2112,7,1);
INSERT INTO new_order VALUES (2101,8,1);
INSERT INTO new_order VALUES (2102,8,1);
INSERT INTO new_order VALUES (2103,8,1);
INSERT INTO new_order VALUES (2104,8,1);
INSERT INTO new_order VALUES (2105,8,1);
INSERT INTO new_order VALUES (2106,8,1);
INSERT INTO new_order VALUES (2107,8,1);
INSERT INTO new_order VALUES (2108,8,1);
INSERT INTO new_order VALUES (2109,8,1);
INSERT INTO new_order VALUES (2110,8,1);
INSERT INTO new_order VALUES (2111,8,1);
INSERT INTO new_order VALUES (2112,8,1);
INSERT INTO new_order VALUES (2101,9,1);
INSERT INTO new_order VALUES (2102,9,1);
INSERT INTO new_order VALUES (2103,9,1);
INSERT INTO new_order VALUES (2104,9,1);
INSERT INTO new_order VALUES (2105,9,1);
INSERT INTO new_order VALUES (2106,9,1);
INSERT INTO new_order VALUES (2107,9,1);
INSERT INTO new_order VALUES (2108,9,1);
INSERT INTO new_order VALUES (2109,9,1);
INSERT INTO new_order VALUES (2110,9,1);
INSERT INTO new_order VALUES (2111,9,1);
INSERT INTO new_order VALUES (2112,9,1);
INSERT INTO new_order VALUES (2101,10,1);
INSERT INTO new_order VALUES (2102,10,1);
INSERT INTO new_order VALUES (2103,10,1);
INSERT INTO new_order VALUES (2104,10,1);
INSERT INTO new_order VALUES (2105,10,1);
INSERT INTO new_order VALUES (2106,10,1);
INSERT INTO new_order VALUES (2107,10,1);
INSERT INTO new_order VALUES (2108,10,1);
INSERT INTO new_order VALUES (2109,10,1);
INSERT INTO new_order VALUES (2110,10,1);
INSERT INTO new_order VALUES (2111,10,1);
INSERT INTO new_order VALUES (2112,10,1);
INSERT INTO new_order VALUES (2101,1,2);
INSERT INTO new_order VALUES (2102,1,2);
INSERT INTO new_order VALUES (2103,1,2);
INSERT INTO new_order VALUES (2104,1,2);
INSERT INTO new_order VALUES (2105,1,2);
INSERT INTO new_order VALUES (2106,1,2);
INSERT INTO new_order VALUES (2107,1,2);
INSERT INTO new_order VALUES (2108,1,2);
INSERT INTO new_order VALUES (2109,1,2);
INSERT INTO new_order VALUES (2110,1,2);
INSERT INTO new_order VALUES (2111,1,2);
INSERT INTO new_order VALUES (2112,1,2);
INSERT INTO new_order VALUES (2101,2,2);
INSERT INTO new_order VALUES (2102,2,2);
INSERT INTO new_order VALUES (2103,2,2);
INSERT INTO new_order VALUES (2104,2,2);
INSERT INTO new_order VALUES (2105,2,2);
INSERT INTO new_order VALUES (2106,2,2);
INSERT INTO new_order VALUES (2107,2,2);
INSERT INTO new_order VALUES (2108,2,2);
INSERT INTO new_order VALUES (2109,2,2);
INSERT INTO new_order VALUES (2110,2,2);
INSERT INTO new_order VALUES (2111,2,2);
INSERT INTO new_order VALUES (2112,2,2);
INSERT INTO new_order VALUES (2101,3,2);
INSERT INTO new_order VALUES (2102,3,2);
INSERT INTO new_order VALUES (2103,3,2);
INSERT INTO new_order VALUES (2104,3,2);
INSERT INTO new_order VALUES (2105,3,2);
INSERT INTO new_order VALUES (2106,3,2);
INSERT INTO new_order VALUES (2107,3,2);
INSERT INTO new_order VALUES (2108,3,2);
INSERT INTO new_order VALUES (2109,3,2);
INSERT INTO new_order VALUES (2110,3,2);
INSERT INTO new_order VALUES (2111,3,2);
INSERT INTO new_order VALUES (2112,3,2);
INSERT INTO new_order VALUES (2101,4,2);
INSERT INTO new_order VALUES (2102,4,2);
INSERT INTO new_order VALUES (2103,4,2);
INSERT INTO new_order VALUES (2104,4,2);
INSERT INTO new_order VALUES (2105,4,2);
INSERT INTO new_order VALUES (2106,4,2);
INSERT INTO new_order VALUES (2107,4,2);
INSERT INTO new_order VALUES (2108,4,2);
INSERT INTO new_order VALUES (2109,4,2);
INSERT INTO new_order VALUES (2110,4,2);
INSERT INTO new_order VALUES (2111,4,2);
INSERT INTO new_order VALUES (2112,4,2);
INSERT INTO new_order VALUES (2101,5,2);
INSERT INTO new_order VALUES (2102,5,2);
INSERT INTO new_order VALUES (2103,5,2);
INSERT INTO new_order VALUES (2104,5,2);
INSERT INTO new_order VALUES (2105,5,2);
INSERT INTO new_order VALUES (2106,5,2);
INSERT INTO new_order VALUES (2107,5,2);
INSERT INTO new_order VALUES (2108,5,2);
INSERT INTO new_order VALUES (2109,5,2);
INSERT INTO new_order VALUES (2110,5,2);
INSERT INTO new_order VALUES (2111,5,2);
INSERT INTO new_order VALUES (2112,5,2);
INSERT INTO new_order VALUES (2101,6,2);
INSERT INTO new_order VALUES (2102,6,2);
INSERT INTO new_order VALUES (2103,6,2);
INSERT INTO new_order VALUES (2104,6,2);
INSERT INTO new_order VALUES (2105,6,2);
INSERT INTO new_order VALUES (2106,6,2);
INSERT INTO new_order VALUES (2107,6,2);
INSERT INTO new_order VALUES (2108,6,2);
INSERT INTO new_order VALUES (2109,6,2);
INSERT INTO new_order VALUES (2110,6,2);
INSERT INTO new_order VALUES (2111,6,2);
INSERT INTO new_order VALUES (2112,6,2);
INSERT INTO new_order VALUES (2101,7,2);
INSERT INTO new_order VALUES (2102,7,2);
INSERT INTO new_order VALUES (2103,7,2);
INSERT INTO new_order VALUES (2104,7,2);
INSERT INTO new_order VALUES (2105,7,2);
INSERT INTO new_order VALUES (2106,7,2);
INSERT INTO new_order VALUES (2107,7,2);
INSERT INTO new_order VALUES (2108,7,2);
INSERT INTO new_order VALUES (2109,7,2);
INSERT INTO new_order VALUES (2110,7,2);
INSERT INTO new_order VALUES (2111,7,2);
INSERT INTO new_order VALUES (2112,7,2);
INSERT INTO new_order VALUES (2101,8,2);
INSERT INTO new_order VALUES (2102,8,2);
INSERT INTO new_order VALUES (2103,8,2);
INSERT INTO new_order VALUES (2104,8,2);
INSERT INTO new_order VALUES (2105,8,2);
INSERT INTO new_order VALUES (2106,8,2);
INSERT INTO new_order VALUES (2107,8,2);
INSERT INTO new_order VALUES (2108,8,2);
INSERT INTO new_order VALUES (2109,8,2);
INSERT INTO new_order VALUES (2110,8,2);
INSERT INTO new_order VALUES (2111,8,2);
INSERT INTO new_order VALUES (2112,8,2);
INSERT INTO new_order VALUES (2101,9,2);
INSERT INTO new_order VALUES (2102,9,2);
INSERT INTO new_order VALUES (2103,9,2);
INSERT INTO new_order VALUES (2104,9,2);
INSERT INTO new_order VALUES (2105,9,2);
INSERT INTO new_order VALUES (2106,9,2);
INSERT INTO new_order VALUES (2107,9,2);
INSERT INTO new_order VALUES (2108,9,2);
INSERT INTO new_order VALUES (2109,9,2);
INSERT INTO new_order VALUES (2110,9,2);
INSERT INTO new_order VALUES (2111,9,2);
INSERT INTO new_order VALUES (2112,9,2);
INSERT INTO new_order VALUES (2101,10,2);
INSERT INTO new_order VALUES (2102,10,2);
INSERT INTO new_order VALUES (2103,10,2);
INSERT INTO new_order VALUES (2104,10,2);
INSERT INTO new_order VALUES (2105,10,2);
INSERT INTO new_order VALUES (2106,10,2);
INSERT INTO new_order VALUES (2107,10,2);
INSERT INTO new_order VALUES (2108,10,2);
INSERT INTO new_order VALUES (2109,10,2);
INSERT INTO new_order VALUES (2110,10,2);
INSERT INTO new_order VALUES (2111,10,2);
INSERT INTO new_order VALUES (2112,10,2);
INSERT INTO new_order VALUES (2101,1,3);
INSERT INTO new_order VALUES (2102,1,3);
INSERT INTO new_order VALUES (2103,1,3);
INSERT INTO new_order VALUES (2104,1,3);
INSERT INTO new_order VALUES (2105,1,3);
INSERT INTO new_order VALUES (2106,1,3);
INSERT INTO new_order VALUES (2107,1,3);
INSERT INTO new_order VALUES (2108,1,3);
INSERT INTO new_order VALUES (2109,1,3);
INSERT INTO new_order VALUES (2110,1,3);
INSERT INTO new_order VALUES (2111,1,3);
INSERT INTO new_order VALUES (2112,1,3);
INSERT INTO new_order VALUES (2101,2,3);
INSERT INTO new_order VALUES (2102,2,3);
INSERT INTO new_order VALUES (2103,2,3);
INSERT INTO new_order VALUES (2104,2,3);
INSERT INTO new_order VALUES (2105,2,3);
INSERT INTO new_order VALUES (2106,2,3);
INSERT INTO new_order VALUES (2107,2,3);
INSERT INTO new_order VALUES (2108,2,3);
INSERT INTO new_order VALUES (2109,2,3);
INSERT INTO new_order VALUES (2110,2,3);
INSERT INTO new_order VALUES (2111,2,3);
INSERT INTO new_order VALUES (2112,2,3);
INSERT INTO new_order VALUES (2101,3,3);
INSERT INTO new_order VALUES (2102,3,3);
INSERT INTO new_order VALUES (2103,3,3);
INSERT INTO new_order VALUES (2104,3,3);
INSERT INTO new_order VALUES (2105,3,3);
INSERT INTO new_order VALUES (2106,3,3);
INSERT INTO new_order VALUES (2107,3,3);
INSERT INTO new_order VALUES (2108,3,3);
INSERT INTO new_order VALUES (2109,3,3);
INSERT INTO new_order VALUES (2110,3,3);
INSERT INTO new_order VALUES (2111,3,3);
INSERT INTO new_order VALUES (2112,3,3);
INSERT INTO new_order VALUES (2101,4,3);
INSERT INTO new_order VALUES (2102,4,3);
INSERT INTO new_order VALUES (2103,4,3);
INSERT INTO new_order VALUES (2104,4,3);
INSERT INTO new_order VALUES (2105,4,3);
INSERT INTO new_order VALUES (2106,4,3);
INSERT INTO new_order VALUES (2107,4,3);
INSERT INTO new_order VALUES (2108,4,3);
INSERT INTO new_order VALUES (2109,4,3);
INSERT INTO new_order VALUES (2110,4,3);
INSERT INTO new_order VALUES (2111,4,3);
INSERT INTO new_order VALUES (2112,4,3);
INSERT INTO new_order VALUES (2101,5,3);
INSERT INTO new_order VALUES (2102,5,3);
INSERT INTO new_order VALUES (2103,5,3);
INSERT INTO new_order VALUES (2104,5,3);
INSERT INTO new_order VALUES (2105,5,3);
INSERT INTO new_order VALUES (2106,5,3);
INSERT INTO new_order VALUES (2107,5,3);
INSERT INTO new_order VALUES (2108,5,3);
INSERT INTO new_order VALUES (2109,5,3);
INSERT INTO new_order VALUES (2110,5,3);
INSERT INTO new_order VALUES (2111,5,3);
INSERT INTO new_order VALUES (2112,5,3);
INSERT INTO new_order VALUES (2101,6,3);
INSERT INTO new_order VALUES (2102,6,3);
INSERT INTO new_order VALUES (2103,6,3);
INSERT INTO new_order VALUES (2104,6,3);
INSERT INTO new_order VALUES (2105,6,3);
INSERT INTO new_order VALUES (2106,6,3);
INSERT INTO new_order VALUES (2107,6,3);
INSERT INTO new_order VALUES (2108,6,3);
INSERT INTO new_order VALUES (2109,6,3);
INSERT INTO new_order VALUES (2110,6,3);
INSERT INTO new_order VALUES (2111,6,3);
INSERT INTO new_order VALUES (2112,6,3);
INSERT INTO new_order VALUES (2101,7,3);
INSERT INTO new_order VALUES (2102,7,3);
INSERT INTO new_order VALUES (2103,7,3);
INSERT INTO new_order VALUES (2104,7,3);
INSERT INTO new_order VALUES (2105,7,3);
INSERT INTO new_order VALUES (2106,7,3);
INSERT INTO new_order VALUES (2107,7,3);
INSERT INTO new_order VALUES (2108,7,3);
INSERT INTO new_order VALUES (2109,7,3);
INSERT INTO new_order VALUES (2110,7,3);
INSERT INTO new_order VALUES (2111,7,3);
INSERT INTO new_order VALUES (2112,7,3);
INSERT INTO new_order VALUES (2101,8,3);
INSERT INTO new_order VALUES (2102,8,3);
INSERT INTO new_order VALUES (2103,8,3);
INSERT INTO new_order VALUES (2104,8,3);
INSERT INTO new_order VALUES (2105,8,3);
INSERT INTO new_order VALUES (2106,8,3);
INSERT INTO new_order VALUES (2107,8,3);
INSERT INTO new_order VALUES (2108,8,3);
INSERT INTO new_order VALUES (2109,8,3);
INSERT INTO new_order VALUES (2110,8,3);
INSERT INTO new_order VALUES (2111,8,3);
INSERT INTO new_order VALUES (2112,8,3);
INSERT INTO new_order VALUES (2101,9,3);
INSERT INTO new_order VALUES (2102,9,3);
INSERT INTO new_order VALUES (2103,9,3);
INSERT INTO new_order VALUES (2104,9,3);
INSERT INTO new_order VALUES (2105,9,3);
INSERT INTO new_order VALUES (2106,9,3);
INSERT INTO new_order VALUES (2107,9,3);
INSERT INTO new_order VALUES (2108,9,3);
INSERT INTO new_order VALUES (2109,9,3);
INSERT INTO new_order VALUES (2110,9,3);
INSERT INTO new_order VALUES (2111,9,3);
INSERT INTO new_order VALUES (2112,9,3);
INSERT INTO new_order VALUES (2101,10,3);
INSERT INTO new_order VALUES (2102,10,3);
INSERT INTO new_order VALUES (2103,10,3);
INSERT INTO new_order VALUES (2104,10,3);
INSERT INTO new_order VALUES (2105,10,3);
INSERT INTO new_order VALUES (2106,10,3);
INSERT INTO new_order VALUES (2107,10,3);
INSERT INTO new_order VALUES (2108,10,3);
INSERT INTO new_order VALUES (2109,10,3);
INSERT INTO new_order VALUES (2110,10,3);
INSERT INTO new_order VALUES (2111,10,3);
INSERT INTO new_order VALUES (2112,10,3);
END|
delimiter ;|
DROP TABLE IF EXISTS result;
CREATE TABLE result (
f1 int(11) default NULL
) TYPE=MyISAM CHARSET=latin1;
drop procedure if exists delivery;
delimiter |;
CREATE PROCEDURE delivery(in_w_id INT, in_o_carrier_id INT)
BEGIN
DECLARE tmp_d_id INT;
DECLARE tmp_o_id INT;
set tmp_d_id = 1;
while tmp_d_id <= 10 do
begin
SELECT no_o_id
INTO tmp_o_id
FROM new_order
WHERE no_w_id = in_w_id AND no_d_id = tmp_d_id limit 1;
insert into test.result values (1);
IF tmp_o_id > 0 THEN
insert into test.result values (2);
DELETE FROM new_order WHERE no_o_id = tmp_o_id AND no_w_id = in_w_id AND no_d_id = tmp_d_id;
end if;
set tmp_d_id = tmp_d_id + 1;
end;
end while;
END|
delimiter ;|
How to repeat:
Source the above script, then:
mysql> call new_order_init();
Query OK, 0 rows affected (0.10 sec)
mysql> call delivery(1,1);