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 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
############# mysql-test\t\sql_safe_updates_func.test #####################
# #
# Variable Name: sql_safe_updates #
# Scope: SESSION #
# Access Type: Dynamic #
# Data Type: BOOLEAN #
# Default Value: 1 TRUE #
# Values: 1 TRUE, 0 FALSE #
# #
# #
# Creation Date: 2008-02-25 #
# Author: Sharique Abdullah #
# #
# Description: Test Cases of Dynamic System Variable "sql_safe_updates" #
# 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/set-option.html #
# #
###########################################################################
--echo ** Setup **
--echo
#
# Setup
#
SET @default_sql_safe_updates = @@sql_safe_updates;
#
# Creating tables
#
CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20));
INSERT INTO t1 VALUES(1, 'val1');
INSERT INTO t1 VALUES(2, 'val2');
INSERT INTO t1 VALUES(3, 'val3');
INSERT INTO t1 VALUES(4, 'val4');
INSERT INTO t1 VALUES(5, 'val5');
INSERT INTO t1 VALUES(6, 'val6');
INSERT INTO t1 VALUES(7, 'val7');
INSERT INTO t1 VALUES(8, 'val8');
INSERT INTO t1 VALUES(9, 'val9');
--echo '#-----------------------------FN_DYNVARS_164_01------------------------------------#'
--echo
--echo Value ON
--echo
#
# Value ON
#
SET SESSION sql_safe_updates = ON;
--echo '#-----------------------------FN_DYNVARS_164_02------------------------------------#'
#
# Without WHERE Clause
#
--echo Expected error : Update without key in safe mode
--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
DELETE FROM t1;
SELECT * FROM t1;
PREPARE stmt FROM 'DELETE FROM t1;';
--echo Expected error : Update without key in safe mode
--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
--echo '#-----------------------------FN_DYNVARS_164_03------------------------------------#'
#
# With a LIMIT Clause
#
--echo Expected error : Update without key in safe mode
--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
DELETE FROM t1 LIMIT 2;
SELECT * FROM t1;
--echo '#-----------------------------FN_DYNVARS_164_04------------------------------------#'
#
# With a no key WHERE Clause
#
--echo Expected error : Update without key in safe mode
--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
DELETE FROM t1 WHERE b='val1';
SELECT * FROM t1;
--echo '#-----------------------------FN_DYNVARS_164_05------------------------------------#'
#
# With a key WHERE Clause
#
--echo This one should work
DELETE FROM t1 WHERE a=1;
SELECT * FROM t1;
--echo
--echo Value OFF
--echo
#
# Value OFF
#
SET SESSION sql_safe_updates = OFF;
--echo '#-----------------------------FN_DYNVARS_164_06------------------------------------#'
#
# With a no key WHERE Clause
#
--echo This one should work
DELETE FROM t1 WHERE b='val1';
SELECT * FROM t1;
--echo '#-----------------------------FN_DYNVARS_164_07------------------------------------#'
#
# With a key WHERE Clause
#
--echo This one should work
DELETE FROM t1 WHERE a=1;
SELECT * FROM t1;
--echo '#-----------------------------FN_DYNVARS_164_08------------------------------------#'
#
# With a LIMIT Clause
#
--echo This one should work
DELETE FROM t1 LIMIT 2;
SELECT * FROM t1;
--echo '#-----------------------------FN_DYNVARS_164_09------------------------------------#'
#
# Without WHERE Clause
#
--echo This one should work
--echo DELETE FROM t1;
--error ER_MIXING_NOT_ALLOWED
#DELETE FROM t1;
--echo Bug#35392 Unexpected error occurs in this statement Can't change size of the file
--echo statement is remarked because the error is uncatchable by testing framework
SELECT * FROM t1;
PREPARE stmt FROM 'DELETE FROM t1;';
--echo Expected error : Update without key in safe mode
--error ER_MIXING_NOT_ALLOWED
#EXECUTE stmt;
--echo Bug#35392 Unexpected error occurs in this statement Can't change size of the file
--echo statement is remarked because the error is uncatchable by testing framework
DEALLOCATE PREPARE stmt;
--echo '#----------------------------FN_DYNVARS_164_10--------------------------------------#'
#
# Session data integrity check
#
connect (con_int1,localhost,root,,);
connection con_int1;
SELECT @@SESSION.sql_safe_updates;
--echo 0 / FALSE Expected
SET SESSION sql_safe_updates = FALSE;
connect (con_int2,localhost,root,,);
connection con_int2;
SELECT @@SESSION.sql_safe_updates;
--echo 0 / FALSE Expected
SET SESSION sql_safe_updates = TRUE;
connection con_int2;
SELECT @@SESSION.sql_safe_updates;
--echo 1 / TRUE Expected
connection con_int1;
SELECT @@SESSION.sql_safe_updates;
--echo 0 / FALSE Expected
connection default;
disconnect con_int1;
disconnect con_int2;
#
# Cleanup
#
SET SESSION sql_safe_updates = @default_sql_safe_updates;
DROP TABLE t1;
|