1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
############# mysql-test\t\max_sp_recursion_depth_func.test ###################
# #
# Variable Name: max_sp_recursion_depth #
# Scope: SESSION #
# Access Type: Dynamic #
# Data Type: NUMERIC #
# Default Value: 0 #
# Max Value: 25 #
# #
# #
# Creation Date: 2008-03-02 #
# Author: Sharique Abdullah #
# #
# Description: Test Cases of Dynamic System Variable "max_sp_recursion_depth #
# that checks behavior of this variable in the following ways #
# * Functionality based on different values #
# #
#Reference:http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#
# option_mysqld_max_sp_recursion_depth #
# #
###############################################################################
#
# Setup
#
SET @session_max_recursion_depth = @@SESSION.max_sp_recursion_depth;
--echo '#--------------------FN_DYNVARS_099_01-------------------------#'
##########################################################
# Test behavior of variable on new connection # 01 #
##########################################################
CONNECT (test_con1,localhost,root,,);
CONNECTION test_con1;
# Setting session value of variable
SET @@session.max_sp_recursion_depth = 10;
SELECT @@session.max_sp_recursion_depth;
# create procedure to add rows
--disable_warnings
DROP PROCEDURE IF EXISTS sp_addRecords;
--enable_warnings
DELIMITER //;
CREATE PROCEDURE sp_addRecords (IN var1 INT,IN var2 INT)
BEGIN
SELECT var1,var2;
IF var1 < var2 THEN
CALL sp_addRecords(var1+1,var2);
SELECT var1,var2;
END IF;
END //
DELIMITER ;//
CALL sp_addRecords(0,8);
--echo '#--------------------FN_DYNVARS_099_02-------------------------#'
##########################################################
# Test behavior of variable on new connection # 02 #
##########################################################
CONNECT (test_con2,localhost,root,,);
connection test_con2;
# Setting session value of variable and inserting data in table
SET @@session.max_sp_recursion_depth = 4;
SELECT @@session.max_sp_recursion_depth;
# create procedure to add rows
--disable_warnings
DROP PROCEDURE IF EXISTS sp_addRecords1;
--enable_warnings
DELIMITER //;
CREATE PROCEDURE sp_addRecords1 (IN var1 INT,IN var2 INT)
BEGIN
SELECT var1,var2;
IF var1 < var2 THEN
CALL sp_addRecords1(var1+1,var2);
SELECT var1,var2;
END IF;
END //
DELIMITER ;//
CALL sp_addRecords1(0,4);
--echo '#---------------------FN_DYNVARS_99_03----------------------#'
####################################################################
# Check if max_sp_recursion_depth value is set to 10 #
####################################################################
SET @@max_sp_recursion_depth = 10;
# create procedure to add rows
--disable_warnings
DROP PROCEDURE IF EXISTS sp_addRecords2;
--enable_warnings
DELIMITER //;
CREATE PROCEDURE sp_addRecords2(IN var1 INT,IN var2 INT)
BEGIN
SELECT var1,var2;
IF var1 < var2 THEN
CALL sp_addRecords2(var1+1,var2);
SELECT var1,var2;
END IF;
END //
DELIMITER ;//
CALL sp_addRecords2(0,8);
--echo '#---------------------FN_DYNVARS_99_04----------------------#'
###############################################################################
#Check if max_sp_recursion_depth value is set lower then called recursion value
###############################################################################
SET @@max_sp_recursion_depth = 4;
# create procedure to add rows
#DROP PROCEDURE IF EXISTS sp_addRecords1;
--disable_warnings
DROP PROCEDURE IF EXISTS sp_addRecords3;
--enable_warnings
DELIMITER //;
CREATE PROCEDURE sp_addRecords3 (IN var1 INT,IN var2 INT)
BEGIN
SELECT var1,var2;
IF var1 < var2 THEN
CALL sp_addRecords3(var1+1,var2);
SELECT var1,var2;
END IF;
END //
DELIMITER ;//
--echo Expected error 'SP Recursion limit'
--ERROR ER_SP_RECURSION_LIMIT
CALL sp_addRecords3(0,8);
#
# Cleanup
#
connection default;
disconnect test_con1;
disconnect test_con2;
--disable_warnings
DROP PROCEDURE IF EXISTS sp_addRecords;
DROP PROCEDURE IF EXISTS sp_addRecords1;
DROP PROCEDURE IF EXISTS sp_addRecords2;
DROP PROCEDURE IF EXISTS sp_addRecords3;
--enable_warnings
SET @@SESSION.max_sp_recursion_depth = @session_max_recursion_depth;
|