summaryrefslogtreecommitdiff
path: root/mysql-test/r/sp_stress_case.result
diff options
context:
space:
mode:
authorunknown <malff/marcsql@weblab.(none)>2006-12-11 16:59:02 -0700
committerunknown <malff/marcsql@weblab.(none)>2006-12-11 16:59:02 -0700
commitc01c4cc3590a619d907544d7bdb3f9a4bd523ce1 (patch)
treef3d26b05138f6f861bb6c7ec0b9975d59d37deeb /mysql-test/r/sp_stress_case.result
parent476eaae84db86837716c3c1ab689e3f2be9da0f4 (diff)
downloadmariadb-git-c01c4cc3590a619d907544d7bdb3f9a4bd523ce1.tar.gz
Bug#19194 (Right recursion in parser for CASE causes excessive stack usage,
limitation) Bug#24854 (Mixing Searched Case with Simple Case inside Stored Procedure crashes Mysqld) Implemented code review (19194) comments mysql-test/r/sp_stress_case.result: Implemented code review comments : use SQL instead of a shell script to generate the code mysql-test/t/sp_stress_case.test: Adjusted sql/sql_yacc.yy: Added more explicit comments BitKeeper/deleted/.del-sp_stress_case.sh: Delete: mysql-test/t/sp_stress_case.sh
Diffstat (limited to 'mysql-test/r/sp_stress_case.result')
-rw-r--r--mysql-test/r/sp_stress_case.result114
1 files changed, 96 insertions, 18 deletions
diff --git a/mysql-test/r/sp_stress_case.result b/mysql-test/r/sp_stress_case.result
index b85fb41d0bf..8ec68363c8d 100644
--- a/mysql-test/r/sp_stress_case.result
+++ b/mysql-test/r/sp_stress_case.result
@@ -1,42 +1,120 @@
-DROP PROCEDURE IF EXISTS bug_19194_a;
-DROP PROCEDURE IF EXISTS bug_19194_b;
-'Silently creating PROCEDURE bug_19194_a'
-'Silently creating PROCEDURE bug_19194_b'
-CALL bug_19194_a(1);
+DROP PROCEDURE IF EXISTS proc_19194_codegen;
+DROP PROCEDURE IF EXISTS bug_19194_simple;
+DROP PROCEDURE IF EXISTS bug_19194_searched;
+CREATE PROCEDURE proc_19194_codegen(
+IN proc_name VARCHAR(50),
+IN count INTEGER,
+IN simple INTEGER,
+OUT body MEDIUMTEXT)
+BEGIN
+DECLARE code MEDIUMTEXT;
+DECLARE i INT DEFAULT 1;
+SET code = concat("CREATE PROCEDURE ", proc_name, "(i INT)\n");
+SET code = concat(code, "BEGIN\n");
+SET code = concat(code, " DECLARE str CHAR(10);\n");
+IF (simple)
+THEN
+SET code = concat(code, " CASE i\n");
+ELSE
+SET code = concat(code, " CASE\n");
+END IF;
+WHILE (i <= count)
+DO
+IF (simple)
+THEN
+SET code = concat(code, " WHEN ", i, " THEN SET str=\"", i, "\";\n");
+ELSE
+SET code = concat(code, " WHEN i=", i, " THEN SET str=\"", i, "\";\n");
+END IF;
+SET i = i + 1;
+END WHILE;
+SET code = concat(code, " ELSE SET str=\"unknown\";\n");
+SET code = concat(code, " END CASE;\n");
+SET code = concat(code, " SELECT str;\n");
+SET code = concat(code, "END\n");
+SET body = code;
+END|
+set @body="";
+call proc_19194_codegen("test_simple", 10, 1, @body);
+select @body;
+@body
+CREATE PROCEDURE test_simple(i INT)
+BEGIN
+ DECLARE str CHAR(10);
+ CASE i
+ WHEN 1 THEN SET str="1";
+ WHEN 2 THEN SET str="2";
+ WHEN 3 THEN SET str="3";
+ WHEN 4 THEN SET str="4";
+ WHEN 5 THEN SET str="5";
+ WHEN 6 THEN SET str="6";
+ WHEN 7 THEN SET str="7";
+ WHEN 8 THEN SET str="8";
+ WHEN 9 THEN SET str="9";
+ WHEN 10 THEN SET str="10";
+ ELSE SET str="unknown";
+ END CASE;
+ SELECT str;
+END
+
+call proc_19194_codegen("test_searched", 10, 0, @body);
+select @body;
+@body
+CREATE PROCEDURE test_searched(i INT)
+BEGIN
+ DECLARE str CHAR(10);
+ CASE
+ WHEN i=1 THEN SET str="1";
+ WHEN i=2 THEN SET str="2";
+ WHEN i=3 THEN SET str="3";
+ WHEN i=4 THEN SET str="4";
+ WHEN i=5 THEN SET str="5";
+ WHEN i=6 THEN SET str="6";
+ WHEN i=7 THEN SET str="7";
+ WHEN i=8 THEN SET str="8";
+ WHEN i=9 THEN SET str="9";
+ WHEN i=10 THEN SET str="10";
+ ELSE SET str="unknown";
+ END CASE;
+ SELECT str;
+END
+
+CALL bug_19194_simple(1);
str
1
-CALL bug_19194_a(2);
+CALL bug_19194_simple(2);
str
2
-CALL bug_19194_a(1000);
+CALL bug_19194_simple(1000);
str
1000
-CALL bug_19194_a(4998);
+CALL bug_19194_simple(4998);
str
4998
-CALL bug_19194_a(4999);
+CALL bug_19194_simple(4999);
str
4999
-CALL bug_19194_a(9999);
+CALL bug_19194_simple(9999);
str
unknown
-CALL bug_19194_b(1);
+CALL bug_19194_searched(1);
str
1
-CALL bug_19194_b(2);
+CALL bug_19194_searched(2);
str
2
-CALL bug_19194_b(1000);
+CALL bug_19194_searched(1000);
str
1000
-CALL bug_19194_b(4998);
+CALL bug_19194_searched(4998);
str
4998
-CALL bug_19194_b(4999);
+CALL bug_19194_searched(4999);
str
4999
-CALL bug_19194_b(9999);
+CALL bug_19194_searched(9999);
str
unknown
-DROP PROCEDURE bug_19194_a;
-DROP PROCEDURE bug_19194_b;
+DROP PROCEDURE proc_19194_codegen;
+DROP PROCEDURE bug_19194_simple;
+DROP PROCEDURE bug_19194_searched;