oceanbase
252 строки · 5.5 Кб
1--disable_query_log
2set @@session.explicit_defaults_for_timestamp=off;
3--enable_query_log
4# Test file for stored procedure bugfixes
5
6#owner: linlin.xll
7#owner group: sql1
8#description: test pl transformed
9#tags: pl, funcs
10
11--result_format 4
12
13--echo #
14--echo # Bug #47412: Valgrind warnings / user can read uninitalized memory
15--echo # using SP variables
16--echo #
17
18--disable_warnings
19DROP SCHEMA IF EXISTS testdb;
20--enable_warnings
21
22CREATE SCHEMA testdb;
23USE testdb;
24DELIMITER |;
25
26CREATE FUNCTION f2 () RETURNS INTEGER
27BEGIN
28DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
29RETURN f_not_exists () ;
30END|
31CREATE PROCEDURE p3 ( arg1 VARCHAR(32) )
32BEGIN
33CALL p_not_exists();
34END|
35DELIMITER ;|
36--echo # should not return valgrind warnings
37### TODO : --error 1305
38--error 1321
39CALL p3(f2());
40
41DROP SCHEMA testdb;
42
43CREATE SCHEMA testdb;
44USE testdb;
45DELIMITER |;
46
47CREATE FUNCTION f2() RETURNS INTEGER
48BEGIN
49DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
50RETURN f_not_exists();
51END|
52CREATE PROCEDURE p3(arg2 INTEGER)
53BEGIN
54CALL p_not_exists();
55END|
56DELIMITER ;|
57--echo # should not return valgrind warnings
58### TODO : --error 1305
59--error 1321
60CALL p3(f2());
61
62DROP SCHEMA testdb;
63
64CREATE SCHEMA testdb;
65USE testdb;
66DELIMITER |;
67
68CREATE FUNCTION f2 () RETURNS INTEGER
69BEGIN
70DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
71RETURN f_not_exists () ;
72END|
73DELIMITER ;|
74--echo # should not return valgrind warnings
75### TODO : --error 1305
76--error 1321
77SELECT f2();
78
79DROP SCHEMA testdb;
80
81USE test;
82
83--echo #
84--echo # Bug#50423: Crash on second call of a procedure dropping a trigger
85--echo #
86
87--disable_warnings
88## coeanbase not support trigger yet !
89##
90## DROP TABLE IF EXISTS t1;
91## DROP TRIGGER IF EXISTS tr1;
92## DROP PROCEDURE IF EXISTS p1;
93## --enable_warnings
94##
95## CREATE TABLE t1 (f1 INTEGER);
96## CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
97## CREATE PROCEDURE p1 () DROP TRIGGER tr1;
98##
99## CALL p1 ();
100## --error ER_TRG_DOES_NOT_EXIST
101## CALL p1 ();
102##
103## DROP TABLE t1;
104## DROP PROCEDURE p1;
105##
106## --echo #
107## --echo # Bug#50423: Crash on second call of a procedure dropping a trigger
108## --echo #
109##
110## --disable_warnings
111## DROP TABLE IF EXISTS t1;
112## DROP TRIGGER IF EXISTS tr1;
113## DROP PROCEDURE IF EXISTS p1;
114## --enable_warnings
115##
116## CREATE TABLE t1 (f1 INTEGER);
117## CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
118## CREATE PROCEDURE p1 () DROP TRIGGER tr1;
119##
120## CALL p1 ();
121## --error ER_TRG_DOES_NOT_EXIST
122## CALL p1 ();
123##
124## DROP TABLE t1;
125## DROP PROCEDURE p1;
126
127--echo #
128--echo # Bug#54375: Error in stored procedure leaves connection
129--echo # in different default schema
130--echo #
131
132--disable_warnings
133SET @SQL_MODE_SAVE = @@SQL_MODE;
134SET @@SQL_MODE = 'STRICT_ALL_TABLES';
135DROP DATABASE IF EXISTS db1;
136CREATE DATABASE db1;
137USE db1;
138DROP TABLE IF EXISTS t1;
139CREATE TABLE t1 (c1 int NOT NULL PRIMARY KEY);
140INSERT INTO t1 VALUES (1);
141DELIMITER $$;
142CREATE FUNCTION f1 (
143some_value int
144)
145RETURNS smallint
146DETERMINISTIC
147BEGIN
148INSERT INTO t1 SET c1 = some_value;
149RETURN(LAST_INSERT_ID());
150END$$
151DELIMITER ;$$
152DROP DATABASE IF EXISTS db2;
153CREATE DATABASE db2;
154--enable_warnings
155USE db2;
156SELECT DATABASE();
157--error ER_DUP_ENTRY,1235
158SELECT db1.f1(1);
159SELECT DATABASE();
160USE test;
161DROP FUNCTION db1.f1;
162DROP TABLE db1.t1;
163DROP DATABASE db1;
164DROP DATABASE db2;
165
166--echo #
167--echo # Bug#13105873:valgrind warning:possible crash in foreign
168--echo # key handling on subsequent create table if not exists
169--echo #
170
171## oceanbase not support foreign key yet!
172## --disable_warnings
173## DROP DATABASE IF EXISTS testdb;
174## --enable_warnings
175## CREATE DATABASE testdb;
176## USE testdb;
177## CREATE TABLE t1 (id1 INT PRIMARY KEY);
178## DELIMITER $;
179## CREATE PROCEDURE `p1`()
180## BEGIN
181## CREATE TABLE IF NOT EXISTS t2(id INT PRIMARY KEY,
182## CONSTRAINT FK FOREIGN KEY (id) REFERENCES t1( id1 ));
183## END$
184## DELIMITER ;$
185## CALL p1();
186## --echo # below stmt should not return valgrind warnings
187## CALL p1();
188## DROP DATABASE testdb;
189## USE test;
190
191--echo End of 5.1 tests
192
193--echo #
194--echo # BUG#13489996 valgrind:conditional jump or move depends on
195--echo # uninitialised values-field_blob
196--echo #
197
198## oceanbase not support BLOB yet!
199## CREATE FUNCTION sf() RETURNS BLOB RETURN "";
200## SELECT sf();
201## DROP FUNCTION sf;
202
203--echo #
204--echo # Bug#11763507 - 56224: FUNCTION NAME IS CASE-SENSITIVE
205--echo #
206SET @@SQL_MODE = '';
207DELIMITER $;
208CREATE FUNCTION testf_bug11763507() RETURNS INT
209BEGIN
210RETURN 0;
211END
212$
213
214CREATE PROCEDURE testp_bug11763507()
215BEGIN
216SELECT "PROCEDURE testp_bug11763507";
217END
218$
219
220DELIMITER ;$
221
222# STORED FUNCTIONS
223SELECT testf_bug11763507();
224SELECT TESTF_bug11763507();
225
226#SHOW FUNCTION STATUS WHERE NAME='TESTF_bug11763507';
227
228#SHOW CREATE FUNCTION testf_bug11763507;
229#SHOW CREATE FUNCTION TESTF_bug11763507;
230
231# STORED PROCEDURE
232CALL testp_bug11763507();
233CALL TESTP_bug11763507();
234
235#SHOW PROCEDURE STATUS WHERE NAME='TESTP_bug11763507';
236
237#SHOW CREATE PROCEDURE testp_bug11763507;
238#SHOW CREATE PROCEDURE TESTP_bug11763507;
239
240# INFORMATION SCHEMA
241SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'testf_bug11763507';
242SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'TESTF_bug11763507';
243
244SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='testf_bug11763507';
245SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='TESTF_bug11763507';
246
247DROP PROCEDURE testp_bug11763507;
248DROP FUNCTION testf_bug11763507;
249
250SET @@SQL_MODE = @SQL_MODE_SAVE;
251
252--echo #END OF BUG#11763507 test.
253