1# 2# These tests are designed to cause an internal parser stack overflow, 3# and trigger my_yyoverflow(). 4# 5 6use test; 7 8SELECT 9(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 10(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 11(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 121 13)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 14)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 15)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 16; 17 18prepare stmt from 19" 20SELECT 21(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 22(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 23(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 241 25)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 26)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 27)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 28" 29; 30 31execute stmt; 32 33--disable_warnings 34drop view if exists view_overflow; 35--enable_warnings 36 37CREATE VIEW view_overflow AS 38SELECT 39(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 40(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 41(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 421 43)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 44)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 45)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 46; 47 48SELECT * from view_overflow; 49 50drop view view_overflow; 51 52--disable_warnings 53drop procedure if exists proc_overflow; 54--enable_warnings 55 56delimiter $$; 57 58CREATE PROCEDURE proc_overflow() 59BEGIN 60 61 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 62 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 63 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 64 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 65 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 66 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 67 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 68 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 69 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 70 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 71 72 select 1; 73 select 2; 74 select 3; 75 76 END; END; END; END; END; END; END; END; END; END; END; END; 77 END; END; END; END; END; END; END; END; END; END; END; END; 78 END; END; END; END; END; END; END; END; END; END; END; END; 79 END; END; END; END; END; END; END; END; END; END; END; END; 80 END; END; END; END; END; END; END; END; END; END; END; END; 81 END; END; END; END; END; END; END; END; END; END; END; END; 82 END; END; END; END; END; END; END; END; END; END; END; END; 83 END; END; END; END; END; END; END; END; END; END; END; END; 84 END; END; END; END; END; END; END; END; END; END; END; END; 85 END; END; END; END; END; END; END; END; END; END; END; END; 86 87END $$ 88 89delimiter ;$$ 90 91call proc_overflow(); 92 93drop procedure proc_overflow; 94 95--disable_warnings 96drop function if exists func_overflow; 97--enable_warnings 98 99delimiter $$; 100 101create function func_overflow() returns int 102BEGIN 103 DECLARE x int default 0; 104 105 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 106 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 107 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 108 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 109 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 110 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 111 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 112 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 113 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 114 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 115 116 SET x=x+1; 117 SET x=x+2; 118 SET x=x+3; 119 120 END; END; END; END; END; END; END; END; END; END; END; END; 121 END; END; END; END; END; END; END; END; END; END; END; END; 122 END; END; END; END; END; END; END; END; END; END; END; END; 123 END; END; END; END; END; END; END; END; END; END; END; END; 124 END; END; END; END; END; END; END; END; END; END; END; END; 125 END; END; END; END; END; END; END; END; END; END; END; END; 126 END; END; END; END; END; END; END; END; END; END; END; END; 127 END; END; END; END; END; END; END; END; END; END; END; END; 128 END; END; END; END; END; END; END; END; END; END; END; END; 129 END; END; END; END; END; END; END; END; END; END; END; END; 130 131 return x; 132END $$ 133 134delimiter ;$$ 135 136select func_overflow(); 137 138drop function func_overflow; 139 140--disable_warnings 141drop table if exists table_overflow; 142--enable_warnings 143 144create table table_overflow(a int, b int); 145 146delimiter $$; 147 148create trigger trigger_overflow before insert on table_overflow 149for each row 150BEGIN 151 152 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 153 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 154 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 155 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 156 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 157 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 158 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 159 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 160 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 161 BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN 162 163 SET NEW.b := NEW.a; 164 SET NEW.b := NEW.b + 1; 165 SET NEW.b := NEW.b + 2; 166 SET NEW.b := NEW.b + 3; 167 168 END; END; END; END; END; END; END; END; END; END; END; END; 169 END; END; END; END; END; END; END; END; END; END; END; END; 170 END; END; END; END; END; END; END; END; END; END; END; END; 171 END; END; END; END; END; END; END; END; END; END; END; END; 172 END; END; END; END; END; END; END; END; END; END; END; END; 173 END; END; END; END; END; END; END; END; END; END; END; END; 174 END; END; END; END; END; END; END; END; END; END; END; END; 175 END; END; END; END; END; END; END; END; END; END; END; END; 176 END; END; END; END; END; END; END; END; END; END; END; END; 177 END; END; END; END; END; END; END; END; END; END; END; END; 178 179END $$ 180 181delimiter ;$$ 182 183insert into table_overflow set a=10; 184insert into table_overflow set a=20; 185select * from table_overflow; 186 187drop table table_overflow; 188 189--disable_warnings 190drop procedure if exists proc_35577; 191--enable_warnings 192 193delimiter $$; 194 195CREATE PROCEDURE proc_35577() 196BEGIN 197 DECLARE z_done INT DEFAULT 0; 198 DECLARE t_done VARCHAR(5000); 199 outer_loop: LOOP 200 IF t_done=1 THEN 201 LEAVE outer_loop; 202 END IF; 203 204 inner_block:BEGIN 205 DECLARE z_done INT DEFAULT 0; 206 SET z_done = 0; 207 inner_loop: LOOP 208 IF z_done=1 THEN 209 LEAVE inner_loop; 210 END IF; 211 IF (t_done = 'a') THEN 212 IF (t_done <> 0) THEN 213 IF ( t_done > 0) THEN 214 IF (t_done = 'a') THEN 215 SET t_done = 'a'; 216 ELSEIF (t_done = 'a') THEN 217 SET t_done = 'a'; 218 ELSEIF(t_done = 'a') THEN 219 SET t_done = 'a'; 220 ELSEIF(t_done = 'a') THEN 221 SET t_done = 'a'; 222 ELSEIF(t_done = 'a') THEN 223 SET t_done = 'a'; 224 ELSEIF(t_done = 'a') THEN 225 SET t_done = 'a'; 226 ELSEIF(t_done = 'a') THEN 227 SET t_done = 'a'; 228 ELSEIF(t_done = 'a') THEN 229 SET t_done = 'a'; 230 END IF; 231 END IF; 232 END IF; 233 END IF; 234 END LOOP inner_loop; 235 END inner_block; 236 END LOOP outer_loop; 237END $$ 238 239delimiter ;$$ 240 241drop procedure proc_35577; 242 243# 244# Bug#37269 (parser crash when creating stored procedure) 245# 246 247--disable_warnings 248drop procedure if exists p_37269; 249--enable_warnings 250 251delimiter $$; 252 253create procedure p_37269() 254begin 255 declare done int default 0; 256 declare varb int default 0; 257 declare vara int default 0; 258 259 repeat 260 select now(); 261 until done end repeat; 262 while varb do 263 select now(); 264 begin 265 select now(); 266 repeat 267 select now(); 268 until done end repeat; 269 if vara then 270 select now(); 271 repeat 272 select now(); 273 loop 274 select now(); 275 end loop; 276 repeat 277 select now(); 278 label1: while varb do 279 select now(); 280 end while label1; 281 if vara then 282 select now(); 283 repeat 284 select now(); 285 until done end repeat; 286 begin 287 select now(); 288 while varb do 289 select now(); 290 label1: while varb do 291 select now(); 292 end while label1; 293 if vara then 294 select now(); 295 while varb do 296 select now(); 297 loop 298 select now(); 299 end loop; 300 repeat 301 select now(); 302 loop 303 select now(); 304 while varb do 305 select now(); 306 end while; 307 repeat 308 select now(); 309 label1: loop 310 select now(); 311 if vara then 312 select now(); 313 end if; 314 end loop label1; 315 until done end repeat; 316 end loop; 317 until done end repeat; 318 end while; 319 end if; 320 end while; 321 end; 322 end if; 323 until done end repeat; 324 until done end repeat; 325 end if; 326 end; 327 end while; 328end $$ 329 330delimiter ;$$ 331 332drop procedure p_37269; 333 334# 335# Bug#37228 (Sever crashes when creating stored procedure with more than 336# 10 IF/ELSEIF) 337# 338 339--disable_warnings 340drop procedure if exists p_37228; 341--enable_warnings 342 343delimiter $$; 344 345create procedure p_37228 () 346BEGIN 347 DECLARE v INT DEFAULT 123; 348 349 IF (v > 1) THEN SET v = 1; 350 ELSEIF (v < 10) THEN SET v = 10; 351 ELSEIF (v < 11) THEN SET v = 11; 352 ELSEIF (v < 12) THEN SET v = 12; 353 ELSEIF (v < 13) THEN SET v = 13; 354 ELSEIF (v < 14) THEN SET v = 14; 355 ELSEIF (v < 15) THEN SET v = 15; 356 ELSEIF (v < 16) THEN SET v = 16; 357 ELSEIF (v < 17) THEN SET v = 17; 358 ELSEIF (v < 18) THEN SET v = 18; 359 ELSEIF (v < 19) THEN SET v = 19; 360 ELSEIF (v < 20) THEN SET v = 20; 361 ELSEIF (v < 21) THEN SET v = 21; 362 ELSEIF (v < 22) THEN SET v = 22; 363 ELSEIF (v < 23) THEN SET v = 23; 364 ELSEIF (v < 24) THEN SET v = 24; 365 ELSEIF (v < 25) THEN SET v = 25; 366 ELSEIF (v < 26) THEN SET v = 26; 367 ELSEIF (v < 27) THEN SET v = 27; 368 ELSEIF (v < 28) THEN SET v = 28; 369 ELSEIF (v < 29) THEN SET v = 29; 370 ELSEIF (v < 30) THEN SET v = 30; 371 ELSEIF (v < 31) THEN SET v = 31; 372 ELSEIF (v < 32) THEN SET v = 32; 373 ELSEIF (v < 33) THEN SET v = 33; 374 ELSEIF (v < 34) THEN SET v = 34; 375 ELSEIF (v < 35) THEN SET v = 35; 376 ELSEIF (v < 36) THEN SET v = 36; 377 ELSEIF (v < 37) THEN SET v = 37; 378 ELSEIF (v < 38) THEN SET v = 38; 379 ELSEIF (v < 39) THEN SET v = 39; 380 END IF; 381END $$ 382 383delimiter ;$$ 384 385drop procedure p_37228; 386 387# 388# Bug#27863 (excessive memory usage for many small queries in a multiquery 389# packet). 390# 391 392let $i=`select repeat("set @a=1;", 65535)`; 393--disable_query_log 394eval $i; 395--enable_query_log 396