1231 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			1231 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								DROP PROCEDURE IF EXISTS sp_vars_check_dflt;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS sp_vars_check_assignment;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS sp_vars_check_ret1;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS sp_vars_check_ret2;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS sp_vars_check_ret3;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS sp_vars_check_ret4;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS sp_vars_div_zero;
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'ansi';
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE sp_vars_check_dflt()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v1 TINYINT DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v2 TINYINT DEFAULT -1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v3 TINYINT DEFAULT 300;
							 | 
						||
| 
								 | 
							
								DECLARE v3u TINYINT UNSIGNED DEFAULT 300;
							 | 
						||
| 
								 | 
							
								DECLARE v4 TINYINT DEFAULT -300;
							 | 
						||
| 
								 | 
							
								DECLARE v4u TINYINT UNSIGNED DEFAULT -300;
							 | 
						||
| 
								 | 
							
								DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v7 TINYINT DEFAULT '10';
							 | 
						||
| 
								 | 
							
								DECLARE v8 TINYINT DEFAULT '10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v9 TINYINT DEFAULT ' 10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v10 TINYINT DEFAULT 'String 10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v11 TINYINT DEFAULT 'String10';
							 | 
						||
| 
								 | 
							
								DECLARE v12 TINYINT DEFAULT '10 String';
							 | 
						||
| 
								 | 
							
								DECLARE v13 TINYINT DEFAULT '10String';
							 | 
						||
| 
								 | 
							
								DECLARE v14 TINYINT DEFAULT concat('10', ' ');
							 | 
						||
| 
								 | 
							
								DECLARE v15 TINYINT DEFAULT concat(' ', '10');
							 | 
						||
| 
								 | 
							
								DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');
							 | 
						||
| 
								 | 
							
								DECLARE v17 DECIMAL(64, 2) DEFAULT 12;
							 | 
						||
| 
								 | 
							
								DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;
							 | 
						||
| 
								 | 
							
								DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;
							 | 
						||
| 
								 | 
							
								DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;
							 | 
						||
| 
								 | 
							
								SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;
							 | 
						||
| 
								 | 
							
								SELECT v5, v5u, v6, v6u;
							 | 
						||
| 
								 | 
							
								SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;
							 | 
						||
| 
								 | 
							
								SELECT v17, v18, v19, v20;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE sp_vars_check_assignment()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE i1, i2, i3, i4 TINYINT;
							 | 
						||
| 
								 | 
							
								DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;
							 | 
						||
| 
								 | 
							
								DECLARE d1, d2, d3 DECIMAL(64, 2);
							 | 
						||
| 
								 | 
							
								SET i1 = 1e200;
							 | 
						||
| 
								 | 
							
								SET i2 = -1e200;
							 | 
						||
| 
								 | 
							
								SET i3 = 300;
							 | 
						||
| 
								 | 
							
								SET i4 = -300;
							 | 
						||
| 
								 | 
							
								SELECT i1, i2, i3, i4;
							 | 
						||
| 
								 | 
							
								SET i1 = 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET i2 = -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET i3 = sign(10 * 10) * 10 * 20;
							 | 
						||
| 
								 | 
							
								SET i4 = sign(-10 * 10) * -10 * 20;
							 | 
						||
| 
								 | 
							
								SELECT i1, i2, i3, i4;
							 | 
						||
| 
								 | 
							
								SET u1 = 1e200;
							 | 
						||
| 
								 | 
							
								SET u2 = -1e200;
							 | 
						||
| 
								 | 
							
								SET u3 = 300;
							 | 
						||
| 
								 | 
							
								SET u4 = -300;
							 | 
						||
| 
								 | 
							
								SELECT u1, u2, u3, u4;
							 | 
						||
| 
								 | 
							
								SET u1 = 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET u2 = -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET u3 = sign(10 * 10) * 10 * 20;
							 | 
						||
| 
								 | 
							
								SET u4 = sign(-10 * 10) * -10 * 20;
							 | 
						||
| 
								 | 
							
								SELECT u1, u2, u3, u4;
							 | 
						||
| 
								 | 
							
								SET d1 = 1234;
							 | 
						||
| 
								 | 
							
								SET d2 = 1234.12;
							 | 
						||
| 
								 | 
							
								SET d3 = 1234.1234;
							 | 
						||
| 
								 | 
							
								SELECT d1, d2, d3;
							 | 
						||
| 
								 | 
							
								SET d1 = 12 * 100 + 34;
							 | 
						||
| 
								 | 
							
								SET d2 = 12 * 100 + 34 + 0.12;
							 | 
						||
| 
								 | 
							
								SET d3 = 12 * 100 + 34 + 0.1234;
							 | 
						||
| 
								 | 
							
								SELECT d1, d2, d3;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 1e200;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 'Hello, world';
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 12 * 10 + 34 + 0.1234;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE div_zero INTEGER;
							 | 
						||
| 
								 | 
							
								SELECT 1/0 INTO div_zero;
							 | 
						||
| 
								 | 
							
								RETURN div_zero;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								Calling the routines, created in ANSI mode.
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_dflt();
							 | 
						||
| 
								 | 
							
								v1	v1u	v2	v2u	v3	v3u	v4	v4u
							 | 
						||
| 
								 | 
							
								127	255	-128	0	127	255	-128	0
							 | 
						||
| 
								 | 
							
								v5	v5u	v6	v6u
							 | 
						||
| 
								 | 
							
								127	255	-128	0
							 | 
						||
| 
								 | 
							
								v7	v8	v9	v10	v11	v12	v13	v14	v15	v16
							 | 
						||
| 
								 | 
							
								10	10	10	0	0	10	10	10	10	0
							 | 
						||
| 
								 | 
							
								v17	v18	v19	v20
							 | 
						||
| 
								 | 
							
								12.00	12.12	12.00	12.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v1u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v2u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v3u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v4u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v5' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v5u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v6' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v6u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'String 10 ' for column 'v10' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'String10' for column 'v11' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'v12' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'v13' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'Hello, world' for column 'v16' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'v18' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'v20' at row 1
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_assignment();
							 | 
						||
| 
								 | 
							
								i1	i2	i3	i4
							 | 
						||
| 
								 | 
							
								127	-128	127	-128
							 | 
						||
| 
								 | 
							
								i1	i2	i3	i4
							 | 
						||
| 
								 | 
							
								127	-128	127	127
							 | 
						||
| 
								 | 
							
								u1	u2	u3	u4
							 | 
						||
| 
								 | 
							
								255	0	255	0
							 | 
						||
| 
								 | 
							
								u1	u2	u3	u4
							 | 
						||
| 
								 | 
							
								255	0	200	200
							 | 
						||
| 
								 | 
							
								d1	d2	d3
							 | 
						||
| 
								 | 
							
								1234.00	1234.12	1234.12
							 | 
						||
| 
								 | 
							
								d1	d2	d3
							 | 
						||
| 
								 | 
							
								1234.00	1234.12	1234.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u2' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'd3' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'd3' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret1();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret1()
							 | 
						||
| 
								 | 
							
								127
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'sp_vars_check_ret1()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret2();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret2()
							 | 
						||
| 
								 | 
							
								127
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'sp_vars_check_ret2()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret3();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret3()
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret4();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret4()
							 | 
						||
| 
								 | 
							
								154.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'sp_vars_check_ret4()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_div_zero();
							 | 
						||
| 
								 | 
							
								sp_vars_div_zero()
							 | 
						||
| 
								 | 
							
								NULL
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'traditional';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								Calling in TRADITIONAL mode the routines, created in ANSI mode.
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_dflt();
							 | 
						||
| 
								 | 
							
								v1	v1u	v2	v2u	v3	v3u	v4	v4u
							 | 
						||
| 
								 | 
							
								127	255	-128	0	127	255	-128	0
							 | 
						||
| 
								 | 
							
								v5	v5u	v6	v6u
							 | 
						||
| 
								 | 
							
								127	255	-128	0
							 | 
						||
| 
								 | 
							
								v7	v8	v9	v10	v11	v12	v13	v14	v15	v16
							 | 
						||
| 
								 | 
							
								10	10	10	0	0	10	10	10	10	0
							 | 
						||
| 
								 | 
							
								v17	v18	v19	v20
							 | 
						||
| 
								 | 
							
								12.00	12.12	12.00	12.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v1u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v2u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v3u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v4u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v5' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v5u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v6' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v6u' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'String 10 ' for column 'v10' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'String10' for column 'v11' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'v12' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'v13' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'Hello, world' for column 'v16' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'v18' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'v20' at row 1
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_assignment();
							 | 
						||
| 
								 | 
							
								i1	i2	i3	i4
							 | 
						||
| 
								 | 
							
								127	-128	127	-128
							 | 
						||
| 
								 | 
							
								i1	i2	i3	i4
							 | 
						||
| 
								 | 
							
								127	-128	127	127
							 | 
						||
| 
								 | 
							
								u1	u2	u3	u4
							 | 
						||
| 
								 | 
							
								255	0	255	0
							 | 
						||
| 
								 | 
							
								u1	u2	u3	u4
							 | 
						||
| 
								 | 
							
								255	0	200	200
							 | 
						||
| 
								 | 
							
								d1	d2	d3
							 | 
						||
| 
								 | 
							
								1234.00	1234.12	1234.12
							 | 
						||
| 
								 | 
							
								d1	d2	d3
							 | 
						||
| 
								 | 
							
								1234.00	1234.12	1234.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'i4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u2' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u3' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u4' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'u2' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'd3' at row 1
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'd3' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret1();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret1()
							 | 
						||
| 
								 | 
							
								127
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'sp_vars_check_ret1()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret2();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret2()
							 | 
						||
| 
								 | 
							
								127
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'sp_vars_check_ret2()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret3();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret3()
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret4();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret4()
							 | 
						||
| 
								 | 
							
								154.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'sp_vars_check_ret4()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_div_zero();
							 | 
						||
| 
								 | 
							
								sp_vars_div_zero()
							 | 
						||
| 
								 | 
							
								NULL
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE sp_vars_check_dflt;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE sp_vars_check_assignment;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret1;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret2;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret3;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret4;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_div_zero;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE sp_vars_check_dflt()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v1 TINYINT DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v2 TINYINT DEFAULT -1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;
							 | 
						||
| 
								 | 
							
								DECLARE v3 TINYINT DEFAULT 300;
							 | 
						||
| 
								 | 
							
								DECLARE v3u TINYINT UNSIGNED DEFAULT 300;
							 | 
						||
| 
								 | 
							
								DECLARE v4 TINYINT DEFAULT -300;
							 | 
						||
| 
								 | 
							
								DECLARE v4u TINYINT UNSIGNED DEFAULT -300;
							 | 
						||
| 
								 | 
							
								DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								DECLARE v7 TINYINT DEFAULT '10';
							 | 
						||
| 
								 | 
							
								DECLARE v8 TINYINT DEFAULT '10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v9 TINYINT DEFAULT ' 10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v10 TINYINT DEFAULT 'String 10 ';
							 | 
						||
| 
								 | 
							
								DECLARE v11 TINYINT DEFAULT 'String10';
							 | 
						||
| 
								 | 
							
								DECLARE v12 TINYINT DEFAULT '10 String';
							 | 
						||
| 
								 | 
							
								DECLARE v13 TINYINT DEFAULT '10String';
							 | 
						||
| 
								 | 
							
								DECLARE v14 TINYINT DEFAULT concat('10', ' ');
							 | 
						||
| 
								 | 
							
								DECLARE v15 TINYINT DEFAULT concat(' ', '10');
							 | 
						||
| 
								 | 
							
								DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');
							 | 
						||
| 
								 | 
							
								DECLARE v17 DECIMAL(64, 2) DEFAULT 12;
							 | 
						||
| 
								 | 
							
								DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;
							 | 
						||
| 
								 | 
							
								DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;
							 | 
						||
| 
								 | 
							
								DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;
							 | 
						||
| 
								 | 
							
								SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;
							 | 
						||
| 
								 | 
							
								SELECT v5, v5u, v6, v6u;
							 | 
						||
| 
								 | 
							
								SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;
							 | 
						||
| 
								 | 
							
								SELECT v17, v18, v19, v20;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE sp_vars_check_assignment()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE i1, i2, i3, i4 TINYINT;
							 | 
						||
| 
								 | 
							
								DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;
							 | 
						||
| 
								 | 
							
								DECLARE d1, d2, d3 DECIMAL(64, 2);
							 | 
						||
| 
								 | 
							
								SET i1 = 1e200;
							 | 
						||
| 
								 | 
							
								SET i2 = -1e200;
							 | 
						||
| 
								 | 
							
								SET i3 = 300;
							 | 
						||
| 
								 | 
							
								SET i4 = -300;
							 | 
						||
| 
								 | 
							
								SELECT i1, i2, i3, i4;
							 | 
						||
| 
								 | 
							
								SET i1 = 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET i2 = -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET i3 = sign(10 * 10) * 10 * 20;
							 | 
						||
| 
								 | 
							
								SET i4 = sign(-10 * 10) * -10 * 20;
							 | 
						||
| 
								 | 
							
								SELECT i1, i2, i3, i4;
							 | 
						||
| 
								 | 
							
								SET u1 = 1e200;
							 | 
						||
| 
								 | 
							
								SET u2 = -1e200;
							 | 
						||
| 
								 | 
							
								SET u3 = 300;
							 | 
						||
| 
								 | 
							
								SET u4 = -300;
							 | 
						||
| 
								 | 
							
								SELECT u1, u2, u3, u4;
							 | 
						||
| 
								 | 
							
								SET u1 = 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET u2 = -10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								SET u3 = sign(10 * 10) * 10 * 20;
							 | 
						||
| 
								 | 
							
								SET u4 = sign(-10 * 10) * -10 * 20;
							 | 
						||
| 
								 | 
							
								SELECT u1, u2, u3, u4;
							 | 
						||
| 
								 | 
							
								SET d1 = 1234;
							 | 
						||
| 
								 | 
							
								SET d2 = 1234.12;
							 | 
						||
| 
								 | 
							
								SET d3 = 1234.1234;
							 | 
						||
| 
								 | 
							
								SELECT d1, d2, d3;
							 | 
						||
| 
								 | 
							
								SET d1 = 12 * 100 + 34;
							 | 
						||
| 
								 | 
							
								SET d2 = 12 * 100 + 34 + 0.12;
							 | 
						||
| 
								 | 
							
								SET d3 = 12 * 100 + 34 + 0.1234;
							 | 
						||
| 
								 | 
							
								SELECT d1, d2, d3;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 1e200;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 10 * 10 * 10;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 'Hello, world';
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN 12 * 10 + 34 + 0.1234;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE div_zero INTEGER;
							 | 
						||
| 
								 | 
							
								SELECT 1/0 INTO div_zero;
							 | 
						||
| 
								 | 
							
								RETURN div_zero;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								Calling the routines, created in TRADITIONAL mode.
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_dflt();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'v1' at row 1
							 | 
						||
| 
								 | 
							
								CALL sp_vars_check_assignment();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'i1' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret1();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'sp_vars_check_ret1()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret2();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'sp_vars_check_ret2()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret3();
							 | 
						||
| 
								 | 
							
								ERROR HY000: Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_check_ret4();
							 | 
						||
| 
								 | 
							
								sp_vars_check_ret4()
							 | 
						||
| 
								 | 
							
								154.12
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'sp_vars_check_ret4()' at row 1
							 | 
						||
| 
								 | 
							
								SELECT sp_vars_div_zero();
							 | 
						||
| 
								 | 
							
								ERROR 22012: Division by 0
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'ansi';
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE sp_vars_check_dflt;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE sp_vars_check_assignment;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret1;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret2;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret3;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_check_ret4;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION sp_vars_div_zero;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BIT data type tests
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v1 BIT;
							 | 
						||
| 
								 | 
							
								DECLARE v2 BIT(1);
							 | 
						||
| 
								 | 
							
								DECLARE v3 BIT(3) DEFAULT b'101';
							 | 
						||
| 
								 | 
							
								DECLARE v4 BIT(64) DEFAULT 0x5555555555555555;
							 | 
						||
| 
								 | 
							
								DECLARE v5 BIT(3);
							 | 
						||
| 
								 | 
							
								DECLARE v6 BIT(64);
							 | 
						||
| 
								 | 
							
								DECLARE v7 BIT(8) DEFAULT 128;
							 | 
						||
| 
								 | 
							
								DECLARE v8 BIT(8) DEFAULT '128';
							 | 
						||
| 
								 | 
							
								DECLARE v9 BIT(8) DEFAULT ' 128';
							 | 
						||
| 
								 | 
							
								DECLARE v10 BIT(8) DEFAULT 'x 128';
							 | 
						||
| 
								 | 
							
								SET v1 = v4;
							 | 
						||
| 
								 | 
							
								SET v2 = 0;
							 | 
						||
| 
								 | 
							
								SET v5 = v4; # check overflow
							 | 
						||
| 
								 | 
							
								SET v6 = v3; # check padding
							 | 
						||
| 
								 | 
							
								SELECT HEX(v1);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v2);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v3);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v4);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v5);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v6);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v7);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v8);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v9);
							 | 
						||
| 
								 | 
							
								SELECT HEX(v10);
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								HEX(v1)
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								HEX(v2)
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								HEX(v3)
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								HEX(v4)
							 | 
						||
| 
								 | 
							
								5555555555555555
							 | 
						||
| 
								 | 
							
								HEX(v5)
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								HEX(v6)
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								HEX(v7)
							 | 
						||
| 
								 | 
							
								80
							 | 
						||
| 
								 | 
							
								HEX(v8)
							 | 
						||
| 
								 | 
							
								FF
							 | 
						||
| 
								 | 
							
								HEX(v9)
							 | 
						||
| 
								 | 
							
								FF
							 | 
						||
| 
								 | 
							
								HEX(v10)
							 | 
						||
| 
								 | 
							
								FF
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v8' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v9' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v10' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v1' at row 1
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'v5' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								CASE expression tests.
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1305	PROCEDURE p1 does not exist
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p2;
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1305	PROCEDURE p2 does not exist
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1051	Unknown table 't1'
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(log_msg VARCHAR(1024));
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(arg VARCHAR(255))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: step1');
							 | 
						||
| 
								 | 
							
								CASE arg * 10
							 | 
						||
| 
								 | 
							
								WHEN 10 * 10 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: on 10');
							 | 
						||
| 
								 | 
							
								WHEN 10 * 10 + 10 * 10 THEN
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								CASE arg / 10
							 | 
						||
| 
								 | 
							
								WHEN 1 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case2: on 1');
							 | 
						||
| 
								 | 
							
								WHEN 2 THEN
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE i TINYINT DEFAULT 10;
							 | 
						||
| 
								 | 
							
								WHILE i > 0 DO
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(CONCAT('p1: case1: case2: loop: i: ', i));
							 | 
						||
| 
								 | 
							
								CASE MOD(i, 2)
							 | 
						||
| 
								 | 
							
								WHEN 0 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case2: loop: i is even');
							 | 
						||
| 
								 | 
							
								WHEN 1 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case2: loop: i is odd');
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case2: loop: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								SET i = i - 1;
							 | 
						||
| 
								 | 
							
								END WHILE;
							 | 
						||
| 
								 | 
							
								END;
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case2: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								CASE arg
							 | 
						||
| 
								 | 
							
								WHEN 10 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case3: on 10');
							 | 
						||
| 
								 | 
							
								WHEN 20 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case3: on 20');
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: case3: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								END;
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case1: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								CASE arg * 10
							 | 
						||
| 
								 | 
							
								WHEN 10 * 10 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: on 10');
							 | 
						||
| 
								 | 
							
								WHEN 10 * 10 + 10 * 10 THEN
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								CASE arg / 10
							 | 
						||
| 
								 | 
							
								WHEN 1 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case5: on 1');
							 | 
						||
| 
								 | 
							
								WHEN 2 THEN
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE i TINYINT DEFAULT 10;
							 | 
						||
| 
								 | 
							
								WHILE i > 0 DO
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(CONCAT('p1: case4: case5: loop: i: ', i));
							 | 
						||
| 
								 | 
							
								CASE MOD(i, 2)
							 | 
						||
| 
								 | 
							
								WHEN 0 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case5: loop: i is even');
							 | 
						||
| 
								 | 
							
								WHEN 1 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case5: loop: i is odd');
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case5: loop: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								SET i = i - 1;
							 | 
						||
| 
								 | 
							
								END WHILE;
							 | 
						||
| 
								 | 
							
								END;
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case5: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								CASE arg
							 | 
						||
| 
								 | 
							
								WHEN 10 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case6: on 10');
							 | 
						||
| 
								 | 
							
								WHEN 20 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case6: on 20');
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: case6: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								END;
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p1: case4: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p2()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE i TINYINT DEFAULT 3;
							 | 
						||
| 
								 | 
							
								WHILE i > 0 DO
							 | 
						||
| 
								 | 
							
								IF MOD(i, 2) = 0 THEN
							 | 
						||
| 
								 | 
							
								SET @_test_session_var = 10;
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								SET @_test_session_var = 'test';
							 | 
						||
| 
								 | 
							
								END IF;
							 | 
						||
| 
								 | 
							
								CASE @_test_session_var
							 | 
						||
| 
								 | 
							
								WHEN 10 THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p2: case: numerical type');
							 | 
						||
| 
								 | 
							
								WHEN 'test' THEN
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p2: case: string type');
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('p2: case: ERROR');
							 | 
						||
| 
								 | 
							
								END CASE;
							 | 
						||
| 
								 | 
							
								SET i = i - 1;
							 | 
						||
| 
								 | 
							
								END WHILE;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1(10);
							 | 
						||
| 
								 | 
							
								CALL p1(20);
							 | 
						||
| 
								 | 
							
								CALL p2();
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								log_msg
							 | 
						||
| 
								 | 
							
								p1: step1
							 | 
						||
| 
								 | 
							
								p1: case1: on 10
							 | 
						||
| 
								 | 
							
								p1: case4: on 10
							 | 
						||
| 
								 | 
							
								p1: step1
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 10
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 9
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 8
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 7
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 6
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 5
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 4
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 3
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 2
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i: 1
							 | 
						||
| 
								 | 
							
								p1: case1: case2: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case1: case3: on 20
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 10
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 9
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 8
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 7
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 6
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 5
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 4
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 3
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 2
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is even
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i: 1
							 | 
						||
| 
								 | 
							
								p1: case4: case5: loop: i is odd
							 | 
						||
| 
								 | 
							
								p1: case4: case6: on 20
							 | 
						||
| 
								 | 
							
								p2: case: string type
							 | 
						||
| 
								 | 
							
								p2: case: numerical type
							 | 
						||
| 
								 | 
							
								p2: case: string type
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p2;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#14161
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(col BIGINT UNSIGNED);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUE(18446744073709551614);
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(IN arg BIGINT UNSIGNED)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT arg;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE col = arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1(18446744073709551614);
							 | 
						||
| 
								 | 
							
								arg
							 | 
						||
| 
								 | 
							
								18446744073709551614
							 | 
						||
| 
								 | 
							
								col
							 | 
						||
| 
								 | 
							
								18446744073709551614
							 | 
						||
| 
								 | 
							
								col
							 | 
						||
| 
								 | 
							
								18446744073709551614
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13705
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(x VARCHAR(10), y CHAR(3)) READS SQL DATA
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT x, y;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1('alpha', 'abc');
							 | 
						||
| 
								 | 
							
								x	y
							 | 
						||
| 
								 | 
							
								alpha	abc
							 | 
						||
| 
								 | 
							
								CALL p1('alpha', 'abcdef');
							 | 
						||
| 
								 | 
							
								x	y
							 | 
						||
| 
								 | 
							
								alpha	abc
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'y' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13675
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(x DATETIME)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 SELECT x;
							 | 
						||
| 
								 | 
							
								SHOW CREATE TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1(NOW());
							 | 
						||
| 
								 | 
							
								Table	Create Table
							 | 
						||
| 
								 | 
							
								t1	CREATE TABLE "t1" (
							 | 
						||
| 
								 | 
							
								  "x" datetime DEFAULT NULL
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								CALL p1('test');
							 | 
						||
| 
								 | 
							
								Table	Create Table
							 | 
						||
| 
								 | 
							
								t1	CREATE TABLE "t1" (
							 | 
						||
| 
								 | 
							
								  "x" datetime DEFAULT NULL
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'x' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#12976
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p2;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(b BIT(1));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1(b) VALUES(b'0'), (b'1');
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT HEX(b),
							 | 
						||
| 
								 | 
							
								b = 0,
							 | 
						||
| 
								 | 
							
								b = FALSE,
							 | 
						||
| 
								 | 
							
								b IS FALSE,
							 | 
						||
| 
								 | 
							
								b = 1,
							 | 
						||
| 
								 | 
							
								b = TRUE,
							 | 
						||
| 
								 | 
							
								b IS TRUE
							 | 
						||
| 
								 | 
							
								FROM t1;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p2()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE vb BIT(1);
							 | 
						||
| 
								 | 
							
								SELECT b INTO vb FROM t1 WHERE b = 0;
							 | 
						||
| 
								 | 
							
								SELECT HEX(vb),
							 | 
						||
| 
								 | 
							
								vb = 0,
							 | 
						||
| 
								 | 
							
								vb = FALSE,
							 | 
						||
| 
								 | 
							
								vb IS FALSE,
							 | 
						||
| 
								 | 
							
								vb = 1,
							 | 
						||
| 
								 | 
							
								vb = TRUE,
							 | 
						||
| 
								 | 
							
								vb IS TRUE;
							 | 
						||
| 
								 | 
							
								SELECT b INTO vb FROM t1 WHERE b = 1;
							 | 
						||
| 
								 | 
							
								SELECT HEX(vb),
							 | 
						||
| 
								 | 
							
								vb = 0,
							 | 
						||
| 
								 | 
							
								vb = FALSE,
							 | 
						||
| 
								 | 
							
								vb IS FALSE,
							 | 
						||
| 
								 | 
							
								vb = 1,
							 | 
						||
| 
								 | 
							
								vb = TRUE,
							 | 
						||
| 
								 | 
							
								vb IS TRUE;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								call p1();
							 | 
						||
| 
								 | 
							
								HEX(b)	b = 0	b = FALSE	b IS FALSE	b = 1	b = TRUE	b IS TRUE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								0	1	1	1	0	0	0
							 | 
						||
| 
								 | 
							
								1	0	0	0	1	1	1
							 | 
						||
| 
								 | 
							
								call p2();
							 | 
						||
| 
								 | 
							
								HEX(vb)	vb = 0	vb = FALSE	vb IS FALSE	vb = 1	vb = TRUE	vb IS TRUE
							 | 
						||
| 
								 | 
							
								0	1	1	1	0	0	0
							 | 
						||
| 
								 | 
							
								HEX(vb)	vb = 0	vb = FALSE	vb IS FALSE	vb = 1	vb = TRUE	vb IS TRUE
							 | 
						||
| 
								 | 
							
								1	0	0	0	1	1	1
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p2;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS table_12976_a;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS table_12976_b;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS proc_12976_a;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS proc_12976_b;
							 | 
						||
| 
								 | 
							
								CREATE TABLE table_12976_a (val bit(1));
							 | 
						||
| 
								 | 
							
								CREATE TABLE table_12976_b(
							 | 
						||
| 
								 | 
							
								appname varchar(15),
							 | 
						||
| 
								 | 
							
								emailperm bit not null default 1,
							 | 
						||
| 
								 | 
							
								phoneperm bit not null default 0);
							 | 
						||
| 
								 | 
							
								insert into table_12976_b values ('A', b'1', b'1'), ('B', b'0', b'0');
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE proc_12976_a()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								declare localvar bit(1);
							 | 
						||
| 
								 | 
							
								SELECT val INTO localvar FROM table_12976_a;
							 | 
						||
| 
								 | 
							
								SELECT coalesce(localvar, 1)+1, coalesce(val, 1)+1 FROM table_12976_a;
							 | 
						||
| 
								 | 
							
								END||
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE proc_12976_b(
							 | 
						||
| 
								 | 
							
								name varchar(15),
							 | 
						||
| 
								 | 
							
								out ep bit,
							 | 
						||
| 
								 | 
							
								out msg varchar(10))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT emailperm into ep FROM table_12976_b where (appname = name);
							 | 
						||
| 
								 | 
							
								IF ep is true THEN
							 | 
						||
| 
								 | 
							
								SET msg = 'True';
							 | 
						||
| 
								 | 
							
								ELSE
							 | 
						||
| 
								 | 
							
								SET msg = 'False';
							 | 
						||
| 
								 | 
							
								END IF;
							 | 
						||
| 
								 | 
							
								END||
							 | 
						||
| 
								 | 
							
								INSERT table_12976_a VALUES (0);
							 | 
						||
| 
								 | 
							
								call proc_12976_a();
							 | 
						||
| 
								 | 
							
								coalesce(localvar, 1)+1	coalesce(val, 1)+1
							 | 
						||
| 
								 | 
							
								1	1
							 | 
						||
| 
								 | 
							
								UPDATE table_12976_a set val=1;
							 | 
						||
| 
								 | 
							
								call proc_12976_a();
							 | 
						||
| 
								 | 
							
								coalesce(localvar, 1)+1	coalesce(val, 1)+1
							 | 
						||
| 
								 | 
							
								2	2
							 | 
						||
| 
								 | 
							
								call proc_12976_b('A', @ep, @msg);
							 | 
						||
| 
								 | 
							
								select @ep, @msg;
							 | 
						||
| 
								 | 
							
								@ep	@msg
							 | 
						||
| 
								 | 
							
								1	True
							 | 
						||
| 
								 | 
							
								call proc_12976_b('B', @ep, @msg);
							 | 
						||
| 
								 | 
							
								select @ep, @msg;
							 | 
						||
| 
								 | 
							
								@ep	@msg
							 | 
						||
| 
								 | 
							
								0	False
							 | 
						||
| 
								 | 
							
								DROP TABLE table_12976_a;
							 | 
						||
| 
								 | 
							
								DROP TABLE table_12976_b;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE proc_12976_a;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE proc_12976_b;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#9572
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p2;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p3;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p4;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p5;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p6;
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'traditional';
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v TINYINT DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								SELECT v;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p2()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v DECIMAL(5) DEFAULT 1e200;
							 | 
						||
| 
								 | 
							
								SELECT v;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p3()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v CHAR(5) DEFAULT 'abcdef';
							 | 
						||
| 
								 | 
							
								SELECT v LIKE 'abc___';
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p4(arg VARCHAR(2))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var VARCHAR(1);
							 | 
						||
| 
								 | 
							
								SET var := arg;
							 | 
						||
| 
								 | 
							
								SELECT arg, var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p5(arg CHAR(2))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var CHAR(1);
							 | 
						||
| 
								 | 
							
								SET var := arg;
							 | 
						||
| 
								 | 
							
								SELECT arg, var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p6(arg DECIMAL(2))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var DECIMAL(1);
							 | 
						||
| 
								 | 
							
								SET var := arg;
							 | 
						||
| 
								 | 
							
								SELECT arg, var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'v' at row 1
							 | 
						||
| 
								 | 
							
								CALL p2();
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'v' at row 1
							 | 
						||
| 
								 | 
							
								CALL p3();
							 | 
						||
| 
								 | 
							
								ERROR 22001: Data too long for column 'v' at row 1
							 | 
						||
| 
								 | 
							
								CALL p4('aaa');
							 | 
						||
| 
								 | 
							
								ERROR 22001: Data too long for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								CALL p5('aa');
							 | 
						||
| 
								 | 
							
								ERROR 22001: Data too long for column 'var' at row 1
							 | 
						||
| 
								 | 
							
								CALL p6(10);
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'var' at row 1
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'ansi';
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p2;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p3;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p4;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p5;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p6;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#9078
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1 (arg DECIMAL(64,2))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var DECIMAL(64,2);
							 | 
						||
| 
								 | 
							
								SET var = arg;
							 | 
						||
| 
								 | 
							
								SELECT var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1(1929);
							 | 
						||
| 
								 | 
							
								var
							 | 
						||
| 
								 | 
							
								1929.00
							 | 
						||
| 
								 | 
							
								CALL p1(1929.00);
							 | 
						||
| 
								 | 
							
								var
							 | 
						||
| 
								 | 
							
								1929.00
							 | 
						||
| 
								 | 
							
								CALL p1(1929.003);
							 | 
						||
| 
								 | 
							
								var
							 | 
						||
| 
								 | 
							
								1929.00
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Note	1265	Data truncated for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#8768
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1(-2500);
							 | 
						||
| 
								 | 
							
								f1(-2500)
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'traditional';
							 | 
						||
| 
								 | 
							
								SELECT f1(-2500);
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1(-2500);
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'ansi';
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#8769
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg MEDIUMINT) RETURNS MEDIUMINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1(8388699);
							 | 
						||
| 
								 | 
							
								f1(8388699)
							 | 
						||
| 
								 | 
							
								8388607
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1264	Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'traditional';
							 | 
						||
| 
								 | 
							
								SELECT f1(8388699);
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg MEDIUMINT) RETURNS MEDIUMINT
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1(8388699);
							 | 
						||
| 
								 | 
							
								ERROR 22003: Out of range value for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								SET @@sql_mode = 'ansi';
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#8702
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(col VARCHAR(255));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1(col) VALUES('Hello, world!');
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE sp_var INTEGER;
							 | 
						||
| 
								 | 
							
								SELECT col INTO sp_var FROM t1 LIMIT 1;
							 | 
						||
| 
								 | 
							
								SET @user_var = sp_var;
							 | 
						||
| 
								 | 
							
								SELECT sp_var;
							 | 
						||
| 
								 | 
							
								SELECT @user_var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								sp_var
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								@user_var
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1366	Incorrect integer value: 'Hello, world!' for column 'sp_var' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#12903
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(txt VARCHAR(255));
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg VARCHAR(255)) RETURNS VARCHAR(255)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v1 VARCHAR(255);
							 | 
						||
| 
								 | 
							
								DECLARE v2 VARCHAR(255);
							 | 
						||
| 
								 | 
							
								SET v1 = CONCAT(LOWER(arg), UPPER(arg));
							 | 
						||
| 
								 | 
							
								SET v2 = CONCAT(LOWER(v1), UPPER(v1));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(v1), (v2);
							 | 
						||
| 
								 | 
							
								RETURN CONCAT(LOWER(arg), UPPER(arg));
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1('_aBcDe_');
							 | 
						||
| 
								 | 
							
								f1('_aBcDe_')
							 | 
						||
| 
								 | 
							
								_abcde__ABCDE_
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								txt
							 | 
						||
| 
								 | 
							
								_abcde__ABCDE_
							 | 
						||
| 
								 | 
							
								_abcde__abcde__ABCDE__ABCDE_
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13808
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p2;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(arg ENUM('a', 'b'))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p2(arg ENUM('a', 'b'))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var ENUM('c', 'd') DEFAULT arg;
							 | 
						||
| 
								 | 
							
								SELECT arg, var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(arg ENUM('a', 'b')) RETURNS ENUM('c', 'd')
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1('c');
							 | 
						||
| 
								 | 
							
								arg
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'arg' at row 1
							 | 
						||
| 
								 | 
							
								CALL p2('a');
							 | 
						||
| 
								 | 
							
								arg	var
							 | 
						||
| 
								 | 
							
								a	
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'var' at row 1
							 | 
						||
| 
								 | 
							
								SELECT f1('a');
							 | 
						||
| 
								 | 
							
								f1('a')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1265	Data truncated for column 'f1('a')' at row 1
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p2;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13909
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p2;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(arg VARCHAR(255))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT CHARSET(arg);
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p2(arg VARCHAR(255) CHARACTER SET UTF8)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT CHARSET(arg);
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1('t');
							 | 
						||
| 
								 | 
							
								CHARSET(arg)
							 | 
						||
| 
								 | 
							
								latin1
							 | 
						||
| 
								 | 
							
								CALL p1(_UTF8 't');
							 | 
						||
| 
								 | 
							
								CHARSET(arg)
							 | 
						||
| 
								 | 
							
								latin1
							 | 
						||
| 
								 | 
							
								CALL p2('t');
							 | 
						||
| 
								 | 
							
								CHARSET(arg)
							 | 
						||
| 
								 | 
							
								utf8
							 | 
						||
| 
								 | 
							
								CALL p2(_LATIN1 't');
							 | 
						||
| 
								 | 
							
								CHARSET(arg)
							 | 
						||
| 
								 | 
							
								utf8
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#14188
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(arg1 BINARY(2), arg2 VARBINARY(2))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var1 BINARY(2) DEFAULT 0x41;
							 | 
						||
| 
								 | 
							
								DECLARE var2 VARBINARY(2) DEFAULT 0x42;
							 | 
						||
| 
								 | 
							
								SELECT HEX(arg1), HEX(arg2);
							 | 
						||
| 
								 | 
							
								SELECT HEX(var1), HEX(var2);
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1(0x41, 0x42);
							 | 
						||
| 
								 | 
							
								HEX(arg1)	HEX(arg2)
							 | 
						||
| 
								 | 
							
								4100	42
							 | 
						||
| 
								 | 
							
								HEX(var1)	HEX(var2)
							 | 
						||
| 
								 | 
							
								4100	42
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#15148
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(col1 TINYINT, col2 TINYINT);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(1, 2), (11, 12);
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(arg TINYINT)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SELECT arg;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1((1, 2));
							 | 
						||
| 
								 | 
							
								ERROR 21000: Operand should contain 1 column(s)
							 | 
						||
| 
								 | 
							
								CALL p1((SELECT * FROM t1 LIMIT 1));
							 | 
						||
| 
								 | 
							
								ERROR 21000: Operand should contain 1 column(s)
							 | 
						||
| 
								 | 
							
								CALL p1((SELECT col1, col2 FROM t1 LIMIT 1));
							 | 
						||
| 
								 | 
							
								ERROR 21000: Operand should contain 1 column(s)
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13613
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(x VARCHAR(50))
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								SET x = SUBSTRING(x, 1, 3);
							 | 
						||
| 
								 | 
							
								SELECT x;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1(x VARCHAR(50)) RETURNS VARCHAR(50)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								RETURN SUBSTRING(x, 1, 3);
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1('abcdef');
							 | 
						||
| 
								 | 
							
								x
							 | 
						||
| 
								 | 
							
								abc
							 | 
						||
| 
								 | 
							
								SELECT f1('ABCDEF');
							 | 
						||
| 
								 | 
							
								f1('ABCDEF')
							 | 
						||
| 
								 | 
							
								ABC
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								BUG#13665
							 | 
						||
| 
								 | 
							
								---------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP FUNCTION IF EXISTS f1;
							 | 
						||
| 
								 | 
							
								CREATE FUNCTION f1() RETURNS VARCHAR(20000)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE var VARCHAR(2000);
							 | 
						||
| 
								 | 
							
								SET var = '';
							 | 
						||
| 
								 | 
							
								SET var = CONCAT(var, 'abc');
							 | 
						||
| 
								 | 
							
								SET var = CONCAT(var, '');
							 | 
						||
| 
								 | 
							
								RETURN var;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								SELECT f1();
							 | 
						||
| 
								 | 
							
								f1()
							 | 
						||
| 
								 | 
							
								abc
							 | 
						||
| 
								 | 
							
								DROP FUNCTION f1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v_char VARCHAR(255);
							 | 
						||
| 
								 | 
							
								DECLARE v_text TEXT DEFAULT '';
							 | 
						||
| 
								 | 
							
								SET v_char = 'abc';
							 | 
						||
| 
								 | 
							
								SET v_text = v_char;
							 | 
						||
| 
								 | 
							
								SET v_char = 'def';
							 | 
						||
| 
								 | 
							
								SET v_text = concat(v_text, '|', v_char);
							 | 
						||
| 
								 | 
							
								SELECT v_text;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								v_text
							 | 
						||
| 
								 | 
							
								abc|def
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS bug27415_text_test|
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS bug27415_text_test2|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE bug27415_text_test(entity_id_str_in text)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE str_remainder text;
							 | 
						||
| 
								 | 
							
								SET str_remainder = entity_id_str_in;
							 | 
						||
| 
								 | 
							
								select 'before substr', str_remainder;
							 | 
						||
| 
								 | 
							
								SET str_remainder = SUBSTRING(str_remainder, 3);
							 | 
						||
| 
								 | 
							
								select 'after substr', str_remainder;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE bug27415_text_test2(entity_id_str_in text)
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE str_remainder text;
							 | 
						||
| 
								 | 
							
								DECLARE str_remainder2 text;
							 | 
						||
| 
								 | 
							
								SET str_remainder2 = entity_id_str_in;
							 | 
						||
| 
								 | 
							
								select 'before substr', str_remainder2;
							 | 
						||
| 
								 | 
							
								SET str_remainder = SUBSTRING(str_remainder2, 3);
							 | 
						||
| 
								 | 
							
								select 'after substr', str_remainder;
							 | 
						||
| 
								 | 
							
								END|
							 | 
						||
| 
								 | 
							
								CALL bug27415_text_test('a,b,c')|
							 | 
						||
| 
								 | 
							
								before substr	str_remainder
							 | 
						||
| 
								 | 
							
								before substr	a,b,c
							 | 
						||
| 
								 | 
							
								after substr	str_remainder
							 | 
						||
| 
								 | 
							
								after substr	b,c
							 | 
						||
| 
								 | 
							
								CALL bug27415_text_test('a,b,c')|
							 | 
						||
| 
								 | 
							
								before substr	str_remainder
							 | 
						||
| 
								 | 
							
								before substr	a,b,c
							 | 
						||
| 
								 | 
							
								after substr	str_remainder
							 | 
						||
| 
								 | 
							
								after substr	b,c
							 | 
						||
| 
								 | 
							
								CALL bug27415_text_test2('a,b,c')|
							 | 
						||
| 
								 | 
							
								before substr	str_remainder2
							 | 
						||
| 
								 | 
							
								before substr	a,b,c
							 | 
						||
| 
								 | 
							
								after substr	str_remainder
							 | 
						||
| 
								 | 
							
								after substr	b,c
							 | 
						||
| 
								 | 
							
								CALL bug27415_text_test('a,b,c')|
							 | 
						||
| 
								 | 
							
								before substr	str_remainder
							 | 
						||
| 
								 | 
							
								before substr	a,b,c
							 | 
						||
| 
								 | 
							
								after substr	str_remainder
							 | 
						||
| 
								 | 
							
								after substr	b,c
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE bug27415_text_test|
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE bug27415_text_test2|
							 | 
						||
| 
								 | 
							
								drop function if exists f1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								create function f1() returns int 
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								if @a=1 then set @b='abc';
							 | 
						||
| 
								 | 
							
								else set @b=1;
							 | 
						||
| 
								 | 
							
								end if;
							 | 
						||
| 
								 | 
							
								set @a=1;
							 | 
						||
| 
								 | 
							
								return 0;
							 | 
						||
| 
								 | 
							
								end|
							 | 
						||
| 
								 | 
							
								create table t1 (a int)|
							 | 
						||
| 
								 | 
							
								insert into t1 (a) values (1), (2)|
							 | 
						||
| 
								 | 
							
								set @b=1|
							 | 
						||
| 
								 | 
							
								set @a=0|
							 | 
						||
| 
								 | 
							
								select f1(), @b from t1|
							 | 
						||
| 
								 | 
							
								f1()	@b
							 | 
						||
| 
								 | 
							
								0	1
							 | 
						||
| 
								 | 
							
								0	0
							 | 
						||
| 
								 | 
							
								set @b:='test'|
							 | 
						||
| 
								 | 
							
								set @a=0|
							 | 
						||
| 
								 | 
							
								select f1(), @b from t1|
							 | 
						||
| 
								 | 
							
								f1()	@b
							 | 
						||
| 
								 | 
							
								0	1
							 | 
						||
| 
								 | 
							
								0	abc
							 | 
						||
| 
								 | 
							
								drop function f1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 |