366
--echo # Test for Bug#12601974 - STORED PROCEDURE SQL_MODE=NO_BACKSLASH_ESCAPES
367
--echo # IGNORED AND BREAKS REPLICATION
371
DROP TABLE IF EXISTS test_table;
372
DROP FUNCTION IF EXISTS test_function;
375
CREATE TABLE test_table (c1 CHAR(50));
377
SET @org_mode=@@sql_mode;
381
PREPARE insert_stmt FROM 'INSERT INTO test_table VALUES (?)';
382
PREPARE update_stmt FROM 'UPDATE test_table SET c1= ? WHERE c1= ?';
384
CREATE FUNCTION test_function(var CHAR(50)) RETURNS CHAR(50)
386
DECLARE char_val CHAR(50);
387
SELECT c1 INTO char_val FROM test_table WHERE c1=var;
393
SET @var1='abcd\'ef';
394
SET @var2='abcd\"ef';
395
SET @var3='abcd\bef';
396
SET @var4='abcd\nef';
397
SET @var5='abcd\ref';
398
SET @var6='abcd\tef';
399
SET @var7='abcd\\ef';
400
SET @var8='abcd\%ef';
401
SET @var9='abcd\_ef';
403
SET @to_var1='wxyz\'ef';
404
SET @to_var2='wxyz\"ef';
405
SET @to_var3='wxyz\bef';
406
SET @to_var4='wxyz\nef';
407
SET @to_var5='wxyz\ref';
408
SET @to_var6='wxyz\tef';
409
SET @to_var7='wxyz\\ef';
410
SET @to_var8='wxyz\%ef';
411
SET @to_var9='wxyz\_ef';
413
--echo # STRING LILTERAL WITH BACKSLASH IN PREPARE STATEMENT
414
EXECUTE insert_stmt USING @var1;
415
EXECUTE insert_stmt USING @var2;
416
EXECUTE insert_stmt USING @var3;
417
EXECUTE insert_stmt USING @var4;
418
EXECUTE insert_stmt USING @var5;
419
EXECUTE insert_stmt USING @var6;
420
EXECUTE insert_stmt USING @var7;
421
EXECUTE insert_stmt USING @var8;
422
EXECUTE insert_stmt USING @var9;
424
SELECT * FROM test_table;
426
EXECUTE update_stmt USING @to_var1, @var1;
427
EXECUTE update_stmt USING @to_var2, @var2;
428
EXECUTE update_stmt USING @to_var3, @var3;
429
EXECUTE update_stmt USING @to_var4, @var4;
430
EXECUTE update_stmt USING @to_var5, @var5;
431
EXECUTE update_stmt USING @to_var6, @var6;
432
EXECUTE update_stmt USING @to_var7, @var7;
433
EXECUTE update_stmt USING @to_var8, @var8;
434
EXECUTE update_stmt USING @to_var9, @var9;
436
SELECT * FROM test_table;
439
--echo # END OF CASE - STRING LILTERAL WITH BACKSLASH IN PREPARE STATEMENT
441
--echo # STRING LILTERAL WITH BACKSLASH IN FUNCTION RETURNING STRING
442
select test_function(@to_var1);
443
SELECT test_function(@to_var2);
444
SELECT test_function(@to_var3);
445
SELECT test_function(@to_var4);
446
SELECT test_function(@to_var5);
447
SELECT test_function(@to_var6);
448
SELECT test_function(@to_var7);
449
SELECT test_function(@to_var8);
450
SELECT test_function(@to_var9);
453
--echo # END OF CASE - STRING LILTERAL WITH BACKSLASH IN FUNCTION RETURNING STRING
454
DELETE FROM test_table;
455
DROP FUNCTION test_function;
457
SET @@sql_mode='NO_BACKSLASH_ESCAPES';
459
CREATE FUNCTION test_function(var CHAR(50)) RETURNS CHAR(50)
461
DECLARE char_val CHAR(50);
462
SELECT c1 INTO char_val FROM test_table WHERE c1=var;
468
--echo # STRING LILTERAL WITH BACKSLASH IN PREPARE STATEMENT
469
EXECUTE insert_stmt USING @var1;
470
EXECUTE insert_stmt USING @var2;
471
EXECUTE insert_stmt USING @var3;
472
EXECUTE insert_stmt USING @var4;
473
EXECUTE insert_stmt USING @var5;
474
EXECUTE insert_stmt USING @var6;
475
EXECUTE insert_stmt USING @var7;
476
EXECUTE insert_stmt USING @var8;
477
EXECUTE insert_stmt USING @var9;
479
SELECT * FROM test_table;
481
EXECUTE update_stmt USING @to_var1, @var1;
482
EXECUTE update_stmt USING @to_var2, @var2;
483
EXECUTE update_stmt USING @to_var3, @var3;
484
EXECUTE update_stmt USING @to_var4, @var4;
485
EXECUTE update_stmt USING @to_var5, @var5;
486
EXECUTE update_stmt USING @to_var6, @var6;
487
EXECUTE update_stmt USING @to_var7, @var7;
488
EXECUTE update_stmt USING @to_var8, @var8;
489
EXECUTE update_stmt USING @to_var9, @var9;
491
SELECT * FROM test_table;
494
--echo # END OF CASE - STRING LILTERAL WITH BACKSLASH IN PREPARE STATEMENT
496
--echo # STRING LILTERAL WITH BACKSLASH IN FUNCTION RETURNING STRING
497
select test_function(@to_var1);
498
SELECT test_function(@to_var2);
499
SELECT test_function(@to_var3);
500
SELECT test_function(@to_var4);
501
SELECT test_function(@to_var5);
502
SELECT test_function(@to_var6);
503
SELECT test_function(@to_var7);
504
SELECT test_function(@to_var8);
505
SELECT test_function(@to_var9);
508
--echo # END OF CASE - STRING LILTERAL WITH BACKSLASH IN FUNCTION RETURNING STRING
510
DROP TABLE test_table;
511
DROP FUNCTION test_function;
512
SET @@sql_mode= @org_mode;
515
--echo #End of Test for Bug#12601974