mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / mysql-test / t / sp-bugs.test
blob3ab1689e8b2f5440a738f93211dd05e87e388f01
1 # Test file for stored procedure bugfixes
3 --echo #
4 --echo # Bug #47412: Valgrind warnings / user can read uninitalized memory
5 --echo # using SP variables
6 --echo #
8 CREATE SCHEMA testdb;
9 USE testdb;
10 DELIMITER |;
11 CREATE FUNCTION f2 () RETURNS INTEGER
12 BEGIN
13    DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
14    RETURN f_not_exists () ;
15 END|
16 CREATE PROCEDURE p3 ( arg1 VARCHAR(32) )
17 BEGIN
18    CALL p_not_exists ( );
19 END|
20 DELIMITER ;|
21 --echo # should not return valgrind warnings
22 --error ER_SP_DOES_NOT_EXIST
23 CALL p3 ( f2 () );
25 DROP SCHEMA testdb;
27 CREATE SCHEMA testdb;
28 USE testdb;
29 DELIMITER |;
30 CREATE FUNCTION f2 () RETURNS INTEGER
31 BEGIN
32    DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
33    RETURN f_not_exists () ;
34 END|
35 CREATE PROCEDURE p3 ( arg2 INTEGER )
36 BEGIN
37    CALL p_not_exists ( );
38 END|
39 DELIMITER ;|
40 --echo # should not return valgrind warnings
41 --error ER_SP_DOES_NOT_EXIST
42 CALL p3 ( f2 () );
44 DROP SCHEMA testdb;
46 CREATE SCHEMA testdb;
47 USE testdb;
48 DELIMITER |;
49 CREATE FUNCTION f2 () RETURNS INTEGER
50 BEGIN
51    DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
52    RETURN f_not_exists () ;
53 END|
54 DELIMITER ;|
55 --echo # should not return valgrind warnings
56 SELECT f2 ();
58 DROP SCHEMA testdb;
60 USE test;
62 --echo #
63 --echo # Bug#50423: Crash on second call of a procedure dropping a trigger
64 --echo #
66 --disable_warnings
67 DROP TABLE IF EXISTS t1;
68 DROP TRIGGER IF EXISTS tr1;
69 DROP PROCEDURE IF EXISTS p1;
70 --enable_warnings
72 CREATE TABLE t1 (f1 INTEGER);
73 CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
74 CREATE PROCEDURE p1 () DROP TRIGGER tr1;
76 CALL p1 ();
77 --error ER_TRG_DOES_NOT_EXIST
78 CALL p1 ();
80 DROP TABLE t1;
81 DROP PROCEDURE p1;
83 --echo #
84 --echo # Bug#50423: Crash on second call of a procedure dropping a trigger
85 --echo #
87 --disable_warnings
88 DROP TABLE IF EXISTS t1;
89 DROP TRIGGER IF EXISTS tr1;
90 DROP PROCEDURE IF EXISTS p1;
91 --enable_warnings
93 CREATE TABLE t1 (f1 INTEGER);
94 CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
95 CREATE PROCEDURE p1 () DROP TRIGGER tr1;
97 CALL p1 ();
98 --error ER_TRG_DOES_NOT_EXIST
99 CALL p1 ();
101 DROP TABLE t1;
102 DROP PROCEDURE p1;
104 --echo #
105 --echo # Bug#54375: Error in stored procedure leaves connection
106 --echo # in different default schema
107 --echo #
109 --disable_warnings
110 SET @@SQL_MODE = 'STRICT_ALL_TABLES';
111 DROP DATABASE IF EXISTS db1;
112 CREATE DATABASE db1;
113 USE db1;
114 DROP TABLE IF EXISTS t1;
115 CREATE TABLE t1 (c1 int NOT NULL PRIMARY KEY);
116 INSERT INTO t1 VALUES (1);
117 DELIMITER $$;
118 CREATE FUNCTION f1 (
119         some_value int
121 RETURNS smallint
122 DETERMINISTIC
123 BEGIN
124         INSERT INTO t1 SET c1 = some_value;
125         RETURN(LAST_INSERT_ID());
126 END$$
127 DELIMITER ;$$
128 DROP DATABASE IF EXISTS db2;
129 CREATE DATABASE db2;
130 --enable_warnings
131 USE db2;
132 SELECT DATABASE();
133 --error ER_DUP_ENTRY
134 SELECT db1.f1(1);
135 SELECT DATABASE();
136 USE test;
137 DROP FUNCTION db1.f1;
138 DROP TABLE db1.t1;
139 DROP DATABASE db1;
140 DROP DATABASE db2;
141 USE test;
143 --echo #
144 --echo # Bug#13105873:valgrind warning:possible crash in foreign 
145 --echo # key handling on subsequent create table if not exists 
146 --echo #
148 --disable_warnings
149 DROP DATABASE IF EXISTS testdb;
150 --enable_warnings
151 CREATE DATABASE testdb;
152 USE testdb;
153 CREATE TABLE t1 (id1 INT PRIMARY KEY);
154 DELIMITER $;
155 CREATE PROCEDURE `p1`()
156 BEGIN
157     CREATE TABLE IF NOT EXISTS t2(id INT PRIMARY KEY,
158     CONSTRAINT FK FOREIGN KEY (id) REFERENCES t1( id1 ));
159 END$
160 DELIMITER ;$
161 CALL p1();
162 --echo # below stmt should not return valgrind warnings
163 CALL p1(); 
164 DROP DATABASE testdb;
165 USE test;
167 --echo End of 5.1 tests
169 --echo #
170 --echo # Bug#11763507 - 56224: FUNCTION NAME IS CASE-SENSITIVE
171 --echo #
172 SET @@SQL_MODE = '';
173 DELIMITER $;
174 CREATE FUNCTION testf_bug11763507() RETURNS INT
175 BEGIN
176     RETURN 0;
180 CREATE PROCEDURE testp_bug11763507()
181 BEGIN
182     SELECT "PROCEDURE testp_bug11763507";
186 DELIMITER ;$
188 # STORED FUNCTIONS
189 SELECT testf_bug11763507();
190 SELECT TESTF_bug11763507();
192 --replace_column 5 # 6 #
193 SHOW FUNCTION STATUS LIKE  'testf_bug11763507';
194 --replace_column 5 # 6 #
195 SHOW FUNCTION STATUS WHERE NAME='testf_bug11763507';
196 --replace_column 5 # 6 #
197 SHOW FUNCTION STATUS LIKE  'TESTF_bug11763507';
198 --replace_column 5 # 6 #
199 SHOW FUNCTION STATUS WHERE NAME='TESTF_bug11763507';
201 SHOW CREATE FUNCTION testf_bug11763507;
202 SHOW CREATE FUNCTION TESTF_bug11763507;
204 # STORED PROCEDURE
205 CALL testp_bug11763507();
206 CALL TESTP_bug11763507();
208 --replace_column 5 # 6 #
209 SHOW PROCEDURE STATUS LIKE  'testp_bug11763507';
210 --replace_column 5 # 6 #
211 SHOW PROCEDURE STATUS WHERE NAME='testp_bug11763507';
212 --replace_column 5 # 6 #
213 SHOW PROCEDURE STATUS LIKE  'TESTP_bug11763507';
214 --replace_column 5 # 6 #
215 SHOW PROCEDURE STATUS WHERE NAME='TESTP_bug11763507';
217 SHOW CREATE PROCEDURE testp_bug11763507;
218 SHOW CREATE PROCEDURE TESTP_bug11763507;
220 # INFORMATION SCHEMA 
221 SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'testf_bug11763507';
222 SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'TESTF_bug11763507';
224 SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='testf_bug11763507';
225 SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='TESTF_bug11763507';
227 DROP PROCEDURE testp_bug11763507;
228 DROP FUNCTION testf_bug11763507;
230 --echo #END OF BUG#11763507 test.