1SET @max_row = 20; 2SET @@session.default_storage_engine = 'InnoDB'; 3 4#------------------------------------------------------------------------ 5# 0. Setting of auxiliary variables + Creation of an auxiliary tables 6# needed in many testcases 7#------------------------------------------------------------------------ 8SELECT @max_row DIV 2 INTO @max_row_div2; 9SELECT @max_row DIV 3 INTO @max_row_div3; 10SELECT @max_row DIV 4 INTO @max_row_div4; 11SET @max_int_4 = 2147483647; 12DROP TABLE IF EXISTS t0_template; 13CREATE TABLE t0_template ( 14f_int1 INTEGER, 15f_int2 INTEGER, 16f_char1 CHAR(20), 17f_char2 CHAR(20), 18f_charbig VARCHAR(1000) , 19PRIMARY KEY(f_int1)) 20ENGINE = MEMORY; 21# Logging of <max_row> INSERTs into t0_template suppressed 22DROP TABLE IF EXISTS t0_definition; 23CREATE TABLE t0_definition ( 24state CHAR(3), 25create_command VARBINARY(5000), 26file_list VARBINARY(10000), 27PRIMARY KEY (state) 28) ENGINE = MEMORY; 29DROP TABLE IF EXISTS t0_aux; 30CREATE TABLE t0_aux ( f_int1 INTEGER, 31f_int2 INTEGER, 32f_char1 CHAR(20), 33f_char2 CHAR(20), 34f_charbig VARCHAR(1000) ) 35ENGINE = MEMORY; 36SET AUTOCOMMIT= 1; 37SET @@session.sql_mode= ''; 38Warnings: 39Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 40# End of basic preparations needed for all tests 41#----------------------------------------------- 42 43#======================================================================== 44# Check partitioning methods on just created tables 45# The tables should be defined without/with PRIMARY KEY and 46# UNIQUE INDEXes. 47# Every test round has to check 48# PARTITION BY HASH/KEY/LIST/RANGE 49# PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ... 50#======================================================================== 51#------------------------------------------------------------------------ 52# 1 Tables without PRIMARY KEY or UNIQUE INDEXes 53#------------------------------------------------------------------------ 54# 1.1 The partitioning function contains one column. 55DROP TABLE IF EXISTS t1; 56CREATE TABLE t1 ( 57f_int1 INTEGER, 58f_int2 INTEGER, 59f_char1 CHAR(20), 60f_char2 CHAR(20), 61f_charbig VARCHAR(1000) 62 63) 64PARTITION BY HASH(f_int1) PARTITIONS 2; 65INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 66SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 67# Start usability test (inc/partition_check.inc) 68create_command 69SHOW CREATE TABLE t1; 70Table Create Table 71t1 CREATE TABLE `t1` ( 72 `f_int1` int(11) DEFAULT NULL, 73 `f_int2` int(11) DEFAULT NULL, 74 `f_char1` char(20) DEFAULT NULL, 75 `f_char2` char(20) DEFAULT NULL, 76 `f_charbig` varchar(1000) DEFAULT NULL 77) ENGINE=InnoDB DEFAULT CHARSET=latin1 78/*!50100 PARTITION BY HASH (f_int1) 79PARTITIONS 2 */ 80 81unified filelist 82t1#P#p0.ibd 83t1#P#p1.ibd 84t1.frm 85 86# check prerequisites-1 success: 1 87# check COUNT(*) success: 1 88# check MIN/MAX(f_int1) success: 1 89# check MIN/MAX(f_int2) success: 1 90INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 91SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 92CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 93WHERE f_int1 IN (2,3); 94# check prerequisites-3 success: 1 95DELETE FROM t1 WHERE f_charbig = 'delete me'; 96# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 97# check read via f_int1 success: 1 98# check read via f_int2 success: 1 99 100# check multiple-1 success: 1 101DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 102 103# check multiple-2 success: 1 104INSERT INTO t1 SELECT * FROM t0_template 105WHERE MOD(f_int1,3) = 0; 106 107# check multiple-3 success: 1 108UPDATE t1 SET f_int1 = f_int1 + @max_row 109WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 110AND @max_row_div2 + @max_row_div4; 111 112# check multiple-4 success: 1 113DELETE FROM t1 114WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 115AND @max_row_div2 + @max_row_div4 + @max_row; 116 117# check multiple-5 success: 1 118SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 119INSERT INTO t1 120SET f_int1 = @cur_value , f_int2 = @cur_value, 121f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 122f_charbig = '#SINGLE#'; 123 124# check single-1 success: 1 125SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 126INSERT INTO t1 127SET f_int1 = @cur_value , f_int2 = @cur_value, 128f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 129f_charbig = '#SINGLE#'; 130 131# check single-2 success: 1 132SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 133SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 134UPDATE t1 SET f_int1 = @cur_value2 135WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 136 137# check single-3 success: 1 138SET @cur_value1= -1; 139SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 140UPDATE t1 SET f_int1 = @cur_value1 141WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 142 143# check single-4 success: 1 144SELECT MAX(f_int1) INTO @cur_value FROM t1; 145DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 146 147# check single-5 success: 1 148DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 149 150# check single-6 success: 1 151INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 152 153# check single-7 success: 1 154DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 155DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 156INSERT t1 SET f_int1 = 0 , f_int2 = 0, 157f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 158f_charbig = '#NULL#'; 159INSERT INTO t1 160SET f_int1 = NULL , f_int2 = -@max_row, 161f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 162f_charbig = '#NULL#'; 163# check null success: 1 164 165# check null-1 success: 1 166UPDATE t1 SET f_int1 = -@max_row 167WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 168AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 169 170# check null-2 success: 1 171UPDATE t1 SET f_int1 = NULL 172WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 173AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 174 175# check null-3 success: 1 176DELETE FROM t1 177WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 178AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 179 180# check null-4 success: 1 181DELETE FROM t1 182WHERE f_int1 = 0 AND f_int2 = 0 183AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 184AND f_charbig = '#NULL#'; 185SET AUTOCOMMIT= 0; 186INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 187SELECT f_int1, f_int1, '', '', 'was inserted' 188FROM t0_template source_tab 189WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 190 191# check transactions-1 success: 1 192COMMIT WORK; 193 194# check transactions-2 success: 1 195ROLLBACK WORK; 196 197# check transactions-3 success: 1 198DELETE FROM t1 WHERE f_charbig = 'was inserted'; 199COMMIT WORK; 200ROLLBACK WORK; 201 202# check transactions-4 success: 1 203INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 204SELECT f_int1, f_int1, '', '', 'was inserted' 205FROM t0_template source_tab 206WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 207 208# check transactions-5 success: 1 209ROLLBACK WORK; 210 211# check transactions-6 success: 1 212# INFO: Storage engine used for t1 seems to be transactional. 213COMMIT; 214 215# check transactions-7 success: 1 216DELETE FROM t1 WHERE f_charbig = 'was inserted'; 217COMMIT WORK; 218SET @@session.sql_mode = 'traditional'; 219Warnings: 220Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 221SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 222INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 223SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 224'', '', 'was inserted' FROM t0_template 225WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 226ERROR 22012: Division by 0 227COMMIT; 228 229# check transactions-8 success: 1 230# INFO: Storage engine used for t1 seems to be able to revert 231# changes made by the failing statement. 232SET @@session.sql_mode = ''; 233Warnings: 234Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 235SET AUTOCOMMIT= 1; 236DELETE FROM t1 WHERE f_charbig = 'was inserted'; 237COMMIT WORK; 238UPDATE t1 SET f_charbig = REPEAT('b', 1000); 239 240# check special-1 success: 1 241UPDATE t1 SET f_charbig = ''; 242 243# check special-2 success: 1 244UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 245INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 246SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 247WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 248INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 249SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 250'just inserted' FROM t0_template 251WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 252CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 253BEGIN 254UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 255f_charbig = 'updated by trigger' 256 WHERE f_int1 = new.f_int1; 257END| 258INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 259SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 261 262# check trigger-1 success: 1 263DROP TRIGGER trg_1; 264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 265f_int2 = CAST(f_char1 AS SIGNED INT), 266f_charbig = 'just inserted' 267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 268DELETE FROM t0_aux 269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 270INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 271SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 272'just inserted' FROM t0_template 273WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 274CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 275BEGIN 276UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 277f_charbig = 'updated by trigger' 278 WHERE f_int1 = new.f_int1; 279END| 280INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 281SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 282WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 283 284# check trigger-2 success: 1 285DROP TRIGGER trg_1; 286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 287f_int2 = CAST(f_char1 AS SIGNED INT), 288f_charbig = 'just inserted' 289 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 290DELETE FROM t0_aux 291WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 292INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 293SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 294'just inserted' FROM t0_template 295WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 296CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 297BEGIN 298UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 299f_charbig = 'updated by trigger' 300 WHERE f_int1 = new.f_int1; 301END| 302UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 303WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 304 305# check trigger-3 success: 1 306DROP TRIGGER trg_1; 307UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 308f_int2 = CAST(f_char1 AS SIGNED INT), 309f_charbig = 'just inserted' 310 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 311DELETE FROM t0_aux 312WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 313INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 314SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 315'just inserted' FROM t0_template 316WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 317CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 318BEGIN 319UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 320f_charbig = 'updated by trigger' 321 WHERE f_int1 = - old.f_int1; 322END| 323UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 324WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 325 326# check trigger-4 success: 1 327DROP TRIGGER trg_1; 328UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 329f_int2 = CAST(f_char1 AS SIGNED INT), 330f_charbig = 'just inserted' 331 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 332DELETE FROM t0_aux 333WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 334INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 335SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 336'just inserted' FROM t0_template 337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 338CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 339BEGIN 340UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 341f_charbig = 'updated by trigger' 342 WHERE f_int1 = new.f_int1; 343END| 344UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 345WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 346 347# check trigger-5 success: 1 348DROP TRIGGER trg_1; 349UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 350f_int2 = CAST(f_char1 AS SIGNED INT), 351f_charbig = 'just inserted' 352 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 353DELETE FROM t0_aux 354WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 355INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 356SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 357'just inserted' FROM t0_template 358WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 359CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 360BEGIN 361UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 362f_charbig = 'updated by trigger' 363 WHERE f_int1 = - old.f_int1; 364END| 365UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 366WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 367 368# check trigger-6 success: 1 369DROP TRIGGER trg_1; 370UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 371f_int2 = CAST(f_char1 AS SIGNED INT), 372f_charbig = 'just inserted' 373 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 374DELETE FROM t0_aux 375WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 376INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 377SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 378'just inserted' FROM t0_template 379WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 380CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 381BEGIN 382UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 383f_charbig = 'updated by trigger' 384 WHERE f_int1 = - old.f_int1; 385END| 386DELETE FROM t0_aux 387WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 388 389# check trigger-7 success: 1 390DROP TRIGGER trg_1; 391UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 392f_int2 = CAST(f_char1 AS SIGNED INT), 393f_charbig = 'just inserted' 394 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 395DELETE FROM t0_aux 396WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 397INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 398SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 399'just inserted' FROM t0_template 400WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 401CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 402BEGIN 403UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 404f_charbig = 'updated by trigger' 405 WHERE f_int1 = - old.f_int1; 406END| 407DELETE FROM t0_aux 408WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 409 410# check trigger-8 success: 1 411DROP TRIGGER trg_1; 412UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 413f_int2 = CAST(f_char1 AS SIGNED INT), 414f_charbig = 'just inserted' 415 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 416DELETE FROM t0_aux 417WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 418DELETE FROM t1 419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 420CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 421BEGIN 422SET new.f_int1 = old.f_int1 + @max_row, 423new.f_int2 = old.f_int2 - @max_row, 424new.f_charbig = '####updated per update trigger####'; 425END| 426UPDATE t1 427SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 428f_charbig = '####updated per update statement itself####'; 429 430# check trigger-9 success: 1 431DROP TRIGGER trg_2; 432UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 433f_int2 = CAST(f_char1 AS SIGNED INT), 434f_charbig = CONCAT('===',f_char1,'==='); 435CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 436BEGIN 437SET new.f_int1 = new.f_int1 + @max_row, 438new.f_int2 = new.f_int2 - @max_row, 439new.f_charbig = '####updated per update trigger####'; 440END| 441UPDATE t1 442SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 443f_charbig = '####updated per update statement itself####'; 444 445# check trigger-10 success: 1 446DROP TRIGGER trg_2; 447UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 448f_int2 = CAST(f_char1 AS SIGNED INT), 449f_charbig = CONCAT('===',f_char1,'==='); 450CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 451BEGIN 452SET new.f_int1 = @my_max1 + @counter, 453new.f_int2 = @my_min2 - @counter, 454new.f_charbig = '####updated per insert trigger####'; 455SET @counter = @counter + 1; 456END| 457SET @counter = 1; 458SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 459INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 460SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 461CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 462WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 463ORDER BY f_int1; 464DROP TRIGGER trg_3; 465 466# check trigger-11 success: 1 467DELETE FROM t1 468WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 469AND f_int2 <> CAST(f_char1 AS SIGNED INT) 470AND f_charbig = '####updated per insert trigger####'; 471CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 472BEGIN 473SET new.f_int1 = @my_max1 + @counter, 474new.f_int2 = @my_min2 - @counter, 475new.f_charbig = '####updated per insert trigger####'; 476SET @counter = @counter + 1; 477END| 478SET @counter = 1; 479SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 480INSERT INTO t1 (f_char1, f_char2, f_charbig) 481SELECT CAST(f_int1 AS CHAR), 482CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 483WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 484ORDER BY f_int1; 485DROP TRIGGER trg_3; 486 487# check trigger-12 success: 1 488DELETE FROM t1 489WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 490AND f_int2 <> CAST(f_char1 AS SIGNED INT) 491AND f_charbig = '####updated per insert trigger####'; 492ANALYZE TABLE t1; 493Table Op Msg_type Msg_text 494test.t1 analyze status OK 495CHECK TABLE t1 EXTENDED; 496Table Op Msg_type Msg_text 497test.t1 check status OK 498CHECKSUM TABLE t1 EXTENDED; 499Table Checksum 500test.t1 <some_value> 501OPTIMIZE TABLE t1; 502Table Op Msg_type Msg_text 503test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 504test.t1 optimize status OK 505# check layout success: 1 506REPAIR TABLE t1 EXTENDED; 507Table Op Msg_type Msg_text 508test.t1 repair status OK 509# check layout success: 1 510TRUNCATE t1; 511 512# check TRUNCATE success: 1 513# check layout success: 1 514# End usability test (inc/partition_check.inc) 515DROP TABLE t1; 516CREATE TABLE t1 ( 517f_int1 INTEGER, 518f_int2 INTEGER, 519f_char1 CHAR(20), 520f_char2 CHAR(20), 521f_charbig VARCHAR(1000) 522 523) 524PARTITION BY KEY(f_int1) PARTITIONS 5; 525INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 526SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 527# Start usability test (inc/partition_check.inc) 528create_command 529SHOW CREATE TABLE t1; 530Table Create Table 531t1 CREATE TABLE `t1` ( 532 `f_int1` int(11) DEFAULT NULL, 533 `f_int2` int(11) DEFAULT NULL, 534 `f_char1` char(20) DEFAULT NULL, 535 `f_char2` char(20) DEFAULT NULL, 536 `f_charbig` varchar(1000) DEFAULT NULL 537) ENGINE=InnoDB DEFAULT CHARSET=latin1 538/*!50100 PARTITION BY KEY (f_int1) 539PARTITIONS 5 */ 540 541unified filelist 542t1#P#p0.ibd 543t1#P#p1.ibd 544t1#P#p2.ibd 545t1#P#p3.ibd 546t1#P#p4.ibd 547t1.frm 548 549# check prerequisites-1 success: 1 550# check COUNT(*) success: 1 551# check MIN/MAX(f_int1) success: 1 552# check MIN/MAX(f_int2) success: 1 553INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 554SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 555CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 556WHERE f_int1 IN (2,3); 557# check prerequisites-3 success: 1 558DELETE FROM t1 WHERE f_charbig = 'delete me'; 559# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 560# check read via f_int1 success: 1 561# check read via f_int2 success: 1 562 563# check multiple-1 success: 1 564DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 565 566# check multiple-2 success: 1 567INSERT INTO t1 SELECT * FROM t0_template 568WHERE MOD(f_int1,3) = 0; 569 570# check multiple-3 success: 1 571UPDATE t1 SET f_int1 = f_int1 + @max_row 572WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 573AND @max_row_div2 + @max_row_div4; 574 575# check multiple-4 success: 1 576DELETE FROM t1 577WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 578AND @max_row_div2 + @max_row_div4 + @max_row; 579 580# check multiple-5 success: 1 581SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 582INSERT INTO t1 583SET f_int1 = @cur_value , f_int2 = @cur_value, 584f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 585f_charbig = '#SINGLE#'; 586 587# check single-1 success: 1 588SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 589INSERT INTO t1 590SET f_int1 = @cur_value , f_int2 = @cur_value, 591f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 592f_charbig = '#SINGLE#'; 593 594# check single-2 success: 1 595SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 596SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 597UPDATE t1 SET f_int1 = @cur_value2 598WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 599 600# check single-3 success: 1 601SET @cur_value1= -1; 602SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 603UPDATE t1 SET f_int1 = @cur_value1 604WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 605 606# check single-4 success: 1 607SELECT MAX(f_int1) INTO @cur_value FROM t1; 608DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 609 610# check single-5 success: 1 611DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 612 613# check single-6 success: 1 614INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 615 616# check single-7 success: 1 617DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 618DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 619INSERT t1 SET f_int1 = 0 , f_int2 = 0, 620f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 621f_charbig = '#NULL#'; 622INSERT INTO t1 623SET f_int1 = NULL , f_int2 = -@max_row, 624f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 625f_charbig = '#NULL#'; 626# check null success: 1 627 628# check null-1 success: 1 629UPDATE t1 SET f_int1 = -@max_row 630WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 631AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 632 633# check null-2 success: 1 634UPDATE t1 SET f_int1 = NULL 635WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 636AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 637 638# check null-3 success: 1 639DELETE FROM t1 640WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 641AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 642 643# check null-4 success: 1 644DELETE FROM t1 645WHERE f_int1 = 0 AND f_int2 = 0 646AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 647AND f_charbig = '#NULL#'; 648SET AUTOCOMMIT= 0; 649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 650SELECT f_int1, f_int1, '', '', 'was inserted' 651FROM t0_template source_tab 652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 653 654# check transactions-1 success: 1 655COMMIT WORK; 656 657# check transactions-2 success: 1 658ROLLBACK WORK; 659 660# check transactions-3 success: 1 661DELETE FROM t1 WHERE f_charbig = 'was inserted'; 662COMMIT WORK; 663ROLLBACK WORK; 664 665# check transactions-4 success: 1 666INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 667SELECT f_int1, f_int1, '', '', 'was inserted' 668FROM t0_template source_tab 669WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 670 671# check transactions-5 success: 1 672ROLLBACK WORK; 673 674# check transactions-6 success: 1 675# INFO: Storage engine used for t1 seems to be transactional. 676COMMIT; 677 678# check transactions-7 success: 1 679DELETE FROM t1 WHERE f_charbig = 'was inserted'; 680COMMIT WORK; 681SET @@session.sql_mode = 'traditional'; 682Warnings: 683Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 684SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 685INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 686SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 687'', '', 'was inserted' FROM t0_template 688WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 689ERROR 22012: Division by 0 690COMMIT; 691 692# check transactions-8 success: 1 693# INFO: Storage engine used for t1 seems to be able to revert 694# changes made by the failing statement. 695SET @@session.sql_mode = ''; 696Warnings: 697Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 698SET AUTOCOMMIT= 1; 699DELETE FROM t1 WHERE f_charbig = 'was inserted'; 700COMMIT WORK; 701UPDATE t1 SET f_charbig = REPEAT('b', 1000); 702 703# check special-1 success: 1 704UPDATE t1 SET f_charbig = ''; 705 706# check special-2 success: 1 707UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 708INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 709SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 710WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 711INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 712SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 713'just inserted' FROM t0_template 714WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 715CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 716BEGIN 717UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 718f_charbig = 'updated by trigger' 719 WHERE f_int1 = new.f_int1; 720END| 721INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 722SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 723WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 724 725# check trigger-1 success: 1 726DROP TRIGGER trg_1; 727UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 728f_int2 = CAST(f_char1 AS SIGNED INT), 729f_charbig = 'just inserted' 730 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 731DELETE FROM t0_aux 732WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 733INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 734SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 735'just inserted' FROM t0_template 736WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 737CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 738BEGIN 739UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 740f_charbig = 'updated by trigger' 741 WHERE f_int1 = new.f_int1; 742END| 743INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 744SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 746 747# check trigger-2 success: 1 748DROP TRIGGER trg_1; 749UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 750f_int2 = CAST(f_char1 AS SIGNED INT), 751f_charbig = 'just inserted' 752 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 753DELETE FROM t0_aux 754WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 755INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 756SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 757'just inserted' FROM t0_template 758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 759CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 760BEGIN 761UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 762f_charbig = 'updated by trigger' 763 WHERE f_int1 = new.f_int1; 764END| 765UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 766WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 767 768# check trigger-3 success: 1 769DROP TRIGGER trg_1; 770UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 771f_int2 = CAST(f_char1 AS SIGNED INT), 772f_charbig = 'just inserted' 773 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 774DELETE FROM t0_aux 775WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 776INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 777SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 778'just inserted' FROM t0_template 779WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 780CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 781BEGIN 782UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 783f_charbig = 'updated by trigger' 784 WHERE f_int1 = - old.f_int1; 785END| 786UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 787WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 788 789# check trigger-4 success: 1 790DROP TRIGGER trg_1; 791UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 792f_int2 = CAST(f_char1 AS SIGNED INT), 793f_charbig = 'just inserted' 794 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 795DELETE FROM t0_aux 796WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 797INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 798SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 799'just inserted' FROM t0_template 800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 801CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 802BEGIN 803UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 804f_charbig = 'updated by trigger' 805 WHERE f_int1 = new.f_int1; 806END| 807UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 808WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 809 810# check trigger-5 success: 1 811DROP TRIGGER trg_1; 812UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 813f_int2 = CAST(f_char1 AS SIGNED INT), 814f_charbig = 'just inserted' 815 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 816DELETE FROM t0_aux 817WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 818INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 819SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 820'just inserted' FROM t0_template 821WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 822CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 823BEGIN 824UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 825f_charbig = 'updated by trigger' 826 WHERE f_int1 = - old.f_int1; 827END| 828UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 829WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 830 831# check trigger-6 success: 1 832DROP TRIGGER trg_1; 833UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 834f_int2 = CAST(f_char1 AS SIGNED INT), 835f_charbig = 'just inserted' 836 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 837DELETE FROM t0_aux 838WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 839INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 840SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 841'just inserted' FROM t0_template 842WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 843CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 844BEGIN 845UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 846f_charbig = 'updated by trigger' 847 WHERE f_int1 = - old.f_int1; 848END| 849DELETE FROM t0_aux 850WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 851 852# check trigger-7 success: 1 853DROP TRIGGER trg_1; 854UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 855f_int2 = CAST(f_char1 AS SIGNED INT), 856f_charbig = 'just inserted' 857 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 858DELETE FROM t0_aux 859WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 860INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 861SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 862'just inserted' FROM t0_template 863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 864CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 865BEGIN 866UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 867f_charbig = 'updated by trigger' 868 WHERE f_int1 = - old.f_int1; 869END| 870DELETE FROM t0_aux 871WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 872 873# check trigger-8 success: 1 874DROP TRIGGER trg_1; 875UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 876f_int2 = CAST(f_char1 AS SIGNED INT), 877f_charbig = 'just inserted' 878 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 879DELETE FROM t0_aux 880WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 881DELETE FROM t1 882WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 883CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 884BEGIN 885SET new.f_int1 = old.f_int1 + @max_row, 886new.f_int2 = old.f_int2 - @max_row, 887new.f_charbig = '####updated per update trigger####'; 888END| 889UPDATE t1 890SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 891f_charbig = '####updated per update statement itself####'; 892 893# check trigger-9 success: 1 894DROP TRIGGER trg_2; 895UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 896f_int2 = CAST(f_char1 AS SIGNED INT), 897f_charbig = CONCAT('===',f_char1,'==='); 898CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 899BEGIN 900SET new.f_int1 = new.f_int1 + @max_row, 901new.f_int2 = new.f_int2 - @max_row, 902new.f_charbig = '####updated per update trigger####'; 903END| 904UPDATE t1 905SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 906f_charbig = '####updated per update statement itself####'; 907 908# check trigger-10 success: 1 909DROP TRIGGER trg_2; 910UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 911f_int2 = CAST(f_char1 AS SIGNED INT), 912f_charbig = CONCAT('===',f_char1,'==='); 913CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 914BEGIN 915SET new.f_int1 = @my_max1 + @counter, 916new.f_int2 = @my_min2 - @counter, 917new.f_charbig = '####updated per insert trigger####'; 918SET @counter = @counter + 1; 919END| 920SET @counter = 1; 921SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 922INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 923SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 924CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 925WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 926ORDER BY f_int1; 927DROP TRIGGER trg_3; 928 929# check trigger-11 success: 1 930DELETE FROM t1 931WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 932AND f_int2 <> CAST(f_char1 AS SIGNED INT) 933AND f_charbig = '####updated per insert trigger####'; 934CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 935BEGIN 936SET new.f_int1 = @my_max1 + @counter, 937new.f_int2 = @my_min2 - @counter, 938new.f_charbig = '####updated per insert trigger####'; 939SET @counter = @counter + 1; 940END| 941SET @counter = 1; 942SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 943INSERT INTO t1 (f_char1, f_char2, f_charbig) 944SELECT CAST(f_int1 AS CHAR), 945CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 946WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 947ORDER BY f_int1; 948DROP TRIGGER trg_3; 949 950# check trigger-12 success: 1 951DELETE FROM t1 952WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 953AND f_int2 <> CAST(f_char1 AS SIGNED INT) 954AND f_charbig = '####updated per insert trigger####'; 955ANALYZE TABLE t1; 956Table Op Msg_type Msg_text 957test.t1 analyze status OK 958CHECK TABLE t1 EXTENDED; 959Table Op Msg_type Msg_text 960test.t1 check status OK 961CHECKSUM TABLE t1 EXTENDED; 962Table Checksum 963test.t1 <some_value> 964OPTIMIZE TABLE t1; 965Table Op Msg_type Msg_text 966test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 967test.t1 optimize status OK 968# check layout success: 1 969REPAIR TABLE t1 EXTENDED; 970Table Op Msg_type Msg_text 971test.t1 repair status OK 972# check layout success: 1 973TRUNCATE t1; 974 975# check TRUNCATE success: 1 976# check layout success: 1 977# End usability test (inc/partition_check.inc) 978DROP TABLE t1; 979CREATE TABLE t1 ( 980f_int1 INTEGER, 981f_int2 INTEGER, 982f_char1 CHAR(20), 983f_char2 CHAR(20), 984f_charbig VARCHAR(1000) 985 986) 987PARTITION BY LIST(MOD(f_int1,4)) 988(PARTITION part_3 VALUES IN (-3), 989PARTITION part_2 VALUES IN (-2), 990PARTITION part_1 VALUES IN (-1), 991PARTITION part_N VALUES IN (NULL), 992PARTITION part0 VALUES IN (0), 993PARTITION part1 VALUES IN (1), 994PARTITION part2 VALUES IN (2), 995PARTITION part3 VALUES IN (3)); 996INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 997SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 998# Start usability test (inc/partition_check.inc) 999create_command 1000SHOW CREATE TABLE t1; 1001Table Create Table 1002t1 CREATE TABLE `t1` ( 1003 `f_int1` int(11) DEFAULT NULL, 1004 `f_int2` int(11) DEFAULT NULL, 1005 `f_char1` char(20) DEFAULT NULL, 1006 `f_char2` char(20) DEFAULT NULL, 1007 `f_charbig` varchar(1000) DEFAULT NULL 1008) ENGINE=InnoDB DEFAULT CHARSET=latin1 1009/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 1010(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 1011 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 1012 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 1013 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 1014 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 1015 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 1016 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 1017 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 1018 1019unified filelist 1020t1#P#part0.ibd 1021t1#P#part1.ibd 1022t1#P#part2.ibd 1023t1#P#part3.ibd 1024t1#P#part_1.ibd 1025t1#P#part_2.ibd 1026t1#P#part_3.ibd 1027t1#P#part_N.ibd 1028t1.frm 1029 1030# check prerequisites-1 success: 1 1031# check COUNT(*) success: 1 1032# check MIN/MAX(f_int1) success: 1 1033# check MIN/MAX(f_int2) success: 1 1034INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1035SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1036CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1037WHERE f_int1 IN (2,3); 1038# check prerequisites-3 success: 1 1039DELETE FROM t1 WHERE f_charbig = 'delete me'; 1040# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1041# check read via f_int1 success: 1 1042# check read via f_int2 success: 1 1043 1044# check multiple-1 success: 1 1045DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1046 1047# check multiple-2 success: 1 1048INSERT INTO t1 SELECT * FROM t0_template 1049WHERE MOD(f_int1,3) = 0; 1050 1051# check multiple-3 success: 1 1052UPDATE t1 SET f_int1 = f_int1 + @max_row 1053WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1054AND @max_row_div2 + @max_row_div4; 1055 1056# check multiple-4 success: 1 1057DELETE FROM t1 1058WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1059AND @max_row_div2 + @max_row_div4 + @max_row; 1060 1061# check multiple-5 success: 1 1062SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1063INSERT INTO t1 1064SET f_int1 = @cur_value , f_int2 = @cur_value, 1065f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1066f_charbig = '#SINGLE#'; 1067 1068# check single-1 success: 1 1069SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1070INSERT INTO t1 1071SET f_int1 = @cur_value , f_int2 = @cur_value, 1072f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1073f_charbig = '#SINGLE#'; 1074 1075# check single-2 success: 1 1076SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1077SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1078UPDATE t1 SET f_int1 = @cur_value2 1079WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1080 1081# check single-3 success: 1 1082SET @cur_value1= -1; 1083SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1084UPDATE t1 SET f_int1 = @cur_value1 1085WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1086 1087# check single-4 success: 1 1088SELECT MAX(f_int1) INTO @cur_value FROM t1; 1089DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1090 1091# check single-5 success: 1 1092DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1093 1094# check single-6 success: 1 1095INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1096 1097# check single-7 success: 1 1098DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 1099DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1100INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1101f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1102f_charbig = '#NULL#'; 1103INSERT INTO t1 1104SET f_int1 = NULL , f_int2 = -@max_row, 1105f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1106f_charbig = '#NULL#'; 1107# check null success: 1 1108 1109# check null-1 success: 1 1110UPDATE t1 SET f_int1 = -@max_row 1111WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1112AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1113 1114# check null-2 success: 1 1115UPDATE t1 SET f_int1 = NULL 1116WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1117AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1118 1119# check null-3 success: 1 1120DELETE FROM t1 1121WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1122AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1123 1124# check null-4 success: 1 1125DELETE FROM t1 1126WHERE f_int1 = 0 AND f_int2 = 0 1127AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1128AND f_charbig = '#NULL#'; 1129SET AUTOCOMMIT= 0; 1130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1131SELECT f_int1, f_int1, '', '', 'was inserted' 1132FROM t0_template source_tab 1133WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1134 1135# check transactions-1 success: 1 1136COMMIT WORK; 1137 1138# check transactions-2 success: 1 1139ROLLBACK WORK; 1140 1141# check transactions-3 success: 1 1142DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1143COMMIT WORK; 1144ROLLBACK WORK; 1145 1146# check transactions-4 success: 1 1147INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1148SELECT f_int1, f_int1, '', '', 'was inserted' 1149FROM t0_template source_tab 1150WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1151 1152# check transactions-5 success: 1 1153ROLLBACK WORK; 1154 1155# check transactions-6 success: 1 1156# INFO: Storage engine used for t1 seems to be transactional. 1157COMMIT; 1158 1159# check transactions-7 success: 1 1160DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1161COMMIT WORK; 1162SET @@session.sql_mode = 'traditional'; 1163Warnings: 1164Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1165SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1166INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1167SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1168'', '', 'was inserted' FROM t0_template 1169WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1170ERROR 22012: Division by 0 1171COMMIT; 1172 1173# check transactions-8 success: 1 1174# INFO: Storage engine used for t1 seems to be able to revert 1175# changes made by the failing statement. 1176SET @@session.sql_mode = ''; 1177Warnings: 1178Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1179SET AUTOCOMMIT= 1; 1180DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1181COMMIT WORK; 1182UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1183 1184# check special-1 success: 1 1185UPDATE t1 SET f_charbig = ''; 1186 1187# check special-2 success: 1 1188UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1189INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1190SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1191WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1192INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1193SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1194'just inserted' FROM t0_template 1195WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1196CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1197BEGIN 1198UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1199f_charbig = 'updated by trigger' 1200 WHERE f_int1 = new.f_int1; 1201END| 1202INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1203SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1205 1206# check trigger-1 success: 1 1207DROP TRIGGER trg_1; 1208UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1209f_int2 = CAST(f_char1 AS SIGNED INT), 1210f_charbig = 'just inserted' 1211 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1212DELETE FROM t0_aux 1213WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1214INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1215SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1216'just inserted' FROM t0_template 1217WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1218CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1219BEGIN 1220UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1221f_charbig = 'updated by trigger' 1222 WHERE f_int1 = new.f_int1; 1223END| 1224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1225SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1226WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1227 1228# check trigger-2 success: 1 1229DROP TRIGGER trg_1; 1230UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1231f_int2 = CAST(f_char1 AS SIGNED INT), 1232f_charbig = 'just inserted' 1233 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1234DELETE FROM t0_aux 1235WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1236INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1237SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1238'just inserted' FROM t0_template 1239WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1240CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1241BEGIN 1242UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1243f_charbig = 'updated by trigger' 1244 WHERE f_int1 = new.f_int1; 1245END| 1246UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1247WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1248 1249# check trigger-3 success: 1 1250DROP TRIGGER trg_1; 1251UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1252f_int2 = CAST(f_char1 AS SIGNED INT), 1253f_charbig = 'just inserted' 1254 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1255DELETE FROM t0_aux 1256WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1257INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1258SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1259'just inserted' FROM t0_template 1260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1261CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1262BEGIN 1263UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1264f_charbig = 'updated by trigger' 1265 WHERE f_int1 = - old.f_int1; 1266END| 1267UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1268WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1269 1270# check trigger-4 success: 1 1271DROP TRIGGER trg_1; 1272UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1273f_int2 = CAST(f_char1 AS SIGNED INT), 1274f_charbig = 'just inserted' 1275 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1276DELETE FROM t0_aux 1277WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1278INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1279SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1280'just inserted' FROM t0_template 1281WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1282CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1283BEGIN 1284UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1285f_charbig = 'updated by trigger' 1286 WHERE f_int1 = new.f_int1; 1287END| 1288UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1289WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1290 1291# check trigger-5 success: 1 1292DROP TRIGGER trg_1; 1293UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1294f_int2 = CAST(f_char1 AS SIGNED INT), 1295f_charbig = 'just inserted' 1296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1297DELETE FROM t0_aux 1298WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1301'just inserted' FROM t0_template 1302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1303CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1304BEGIN 1305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1306f_charbig = 'updated by trigger' 1307 WHERE f_int1 = - old.f_int1; 1308END| 1309UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1310WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1311 1312# check trigger-6 success: 1 1313DROP TRIGGER trg_1; 1314UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1315f_int2 = CAST(f_char1 AS SIGNED INT), 1316f_charbig = 'just inserted' 1317 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1318DELETE FROM t0_aux 1319WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1320INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1321SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1322'just inserted' FROM t0_template 1323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1324CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1325BEGIN 1326UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1327f_charbig = 'updated by trigger' 1328 WHERE f_int1 = - old.f_int1; 1329END| 1330DELETE FROM t0_aux 1331WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1332 1333# check trigger-7 success: 1 1334DROP TRIGGER trg_1; 1335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1336f_int2 = CAST(f_char1 AS SIGNED INT), 1337f_charbig = 'just inserted' 1338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1339DELETE FROM t0_aux 1340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1343'just inserted' FROM t0_template 1344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1345CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1346BEGIN 1347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1348f_charbig = 'updated by trigger' 1349 WHERE f_int1 = - old.f_int1; 1350END| 1351DELETE FROM t0_aux 1352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1353 1354# check trigger-8 success: 1 1355DROP TRIGGER trg_1; 1356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1357f_int2 = CAST(f_char1 AS SIGNED INT), 1358f_charbig = 'just inserted' 1359 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1360DELETE FROM t0_aux 1361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1362DELETE FROM t1 1363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1364CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1365BEGIN 1366SET new.f_int1 = old.f_int1 + @max_row, 1367new.f_int2 = old.f_int2 - @max_row, 1368new.f_charbig = '####updated per update trigger####'; 1369END| 1370UPDATE t1 1371SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1372f_charbig = '####updated per update statement itself####'; 1373 1374# check trigger-9 success: 1 1375DROP TRIGGER trg_2; 1376UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1377f_int2 = CAST(f_char1 AS SIGNED INT), 1378f_charbig = CONCAT('===',f_char1,'==='); 1379CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1380BEGIN 1381SET new.f_int1 = new.f_int1 + @max_row, 1382new.f_int2 = new.f_int2 - @max_row, 1383new.f_charbig = '####updated per update trigger####'; 1384END| 1385UPDATE t1 1386SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1387f_charbig = '####updated per update statement itself####'; 1388 1389# check trigger-10 success: 1 1390DROP TRIGGER trg_2; 1391UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1392f_int2 = CAST(f_char1 AS SIGNED INT), 1393f_charbig = CONCAT('===',f_char1,'==='); 1394CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1395BEGIN 1396SET new.f_int1 = @my_max1 + @counter, 1397new.f_int2 = @my_min2 - @counter, 1398new.f_charbig = '####updated per insert trigger####'; 1399SET @counter = @counter + 1; 1400END| 1401SET @counter = 1; 1402SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1403INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1404SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1405CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1407ORDER BY f_int1; 1408DROP TRIGGER trg_3; 1409 1410# check trigger-11 success: 1 1411DELETE FROM t1 1412WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1413AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1414AND f_charbig = '####updated per insert trigger####'; 1415CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1416BEGIN 1417SET new.f_int1 = @my_max1 + @counter, 1418new.f_int2 = @my_min2 - @counter, 1419new.f_charbig = '####updated per insert trigger####'; 1420SET @counter = @counter + 1; 1421END| 1422SET @counter = 1; 1423SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1424INSERT INTO t1 (f_char1, f_char2, f_charbig) 1425SELECT CAST(f_int1 AS CHAR), 1426CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1427WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1428ORDER BY f_int1; 1429DROP TRIGGER trg_3; 1430 1431# check trigger-12 success: 1 1432DELETE FROM t1 1433WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1434AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1435AND f_charbig = '####updated per insert trigger####'; 1436ANALYZE TABLE t1; 1437Table Op Msg_type Msg_text 1438test.t1 analyze status OK 1439CHECK TABLE t1 EXTENDED; 1440Table Op Msg_type Msg_text 1441test.t1 check status OK 1442CHECKSUM TABLE t1 EXTENDED; 1443Table Checksum 1444test.t1 <some_value> 1445OPTIMIZE TABLE t1; 1446Table Op Msg_type Msg_text 1447test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 1448test.t1 optimize status OK 1449# check layout success: 1 1450REPAIR TABLE t1 EXTENDED; 1451Table Op Msg_type Msg_text 1452test.t1 repair status OK 1453# check layout success: 1 1454TRUNCATE t1; 1455 1456# check TRUNCATE success: 1 1457# check layout success: 1 1458# End usability test (inc/partition_check.inc) 1459DROP TABLE t1; 1460CREATE TABLE t1 ( 1461f_int1 INTEGER, 1462f_int2 INTEGER, 1463f_char1 CHAR(20), 1464f_char2 CHAR(20), 1465f_charbig VARCHAR(1000) 1466 1467) 1468PARTITION BY RANGE(f_int1) 1469(PARTITION parta VALUES LESS THAN (0), 1470PARTITION partb VALUES LESS THAN (5), 1471PARTITION partc VALUES LESS THAN (10), 1472PARTITION partd VALUES LESS THAN (10 + 5), 1473PARTITION parte VALUES LESS THAN (20), 1474PARTITION partf VALUES LESS THAN (2147483646)); 1475INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1476SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 1477# Start usability test (inc/partition_check.inc) 1478create_command 1479SHOW CREATE TABLE t1; 1480Table Create Table 1481t1 CREATE TABLE `t1` ( 1482 `f_int1` int(11) DEFAULT NULL, 1483 `f_int2` int(11) DEFAULT NULL, 1484 `f_char1` char(20) DEFAULT NULL, 1485 `f_char2` char(20) DEFAULT NULL, 1486 `f_charbig` varchar(1000) DEFAULT NULL 1487) ENGINE=InnoDB DEFAULT CHARSET=latin1 1488/*!50100 PARTITION BY RANGE (f_int1) 1489(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 1490 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 1491 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 1492 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 1493 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 1494 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 1495 1496unified filelist 1497t1#P#parta.ibd 1498t1#P#partb.ibd 1499t1#P#partc.ibd 1500t1#P#partd.ibd 1501t1#P#parte.ibd 1502t1#P#partf.ibd 1503t1.frm 1504 1505# check prerequisites-1 success: 1 1506# check COUNT(*) success: 1 1507# check MIN/MAX(f_int1) success: 1 1508# check MIN/MAX(f_int2) success: 1 1509INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1510SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1511CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1512WHERE f_int1 IN (2,3); 1513# check prerequisites-3 success: 1 1514DELETE FROM t1 WHERE f_charbig = 'delete me'; 1515# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1516# check read via f_int1 success: 1 1517# check read via f_int2 success: 1 1518 1519# check multiple-1 success: 1 1520DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1521 1522# check multiple-2 success: 1 1523INSERT INTO t1 SELECT * FROM t0_template 1524WHERE MOD(f_int1,3) = 0; 1525 1526# check multiple-3 success: 1 1527UPDATE t1 SET f_int1 = f_int1 + @max_row 1528WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1529AND @max_row_div2 + @max_row_div4; 1530 1531# check multiple-4 success: 1 1532DELETE FROM t1 1533WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1534AND @max_row_div2 + @max_row_div4 + @max_row; 1535 1536# check multiple-5 success: 1 1537SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1538INSERT INTO t1 1539SET f_int1 = @cur_value , f_int2 = @cur_value, 1540f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1541f_charbig = '#SINGLE#'; 1542 1543# check single-1 success: 1 1544SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1545INSERT INTO t1 1546SET f_int1 = @cur_value , f_int2 = @cur_value, 1547f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1548f_charbig = '#SINGLE#'; 1549 1550# check single-2 success: 1 1551SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1552SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1553UPDATE t1 SET f_int1 = @cur_value2 1554WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1555 1556# check single-3 success: 1 1557SET @cur_value1= -1; 1558SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1559UPDATE t1 SET f_int1 = @cur_value1 1560WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1561 1562# check single-4 success: 1 1563SELECT MAX(f_int1) INTO @cur_value FROM t1; 1564DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1565 1566# check single-5 success: 1 1567DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1568 1569# check single-6 success: 1 1570INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1571ERROR HY000: Table has no partition for value 2147483647 1572DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1573INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1574f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1575f_charbig = '#NULL#'; 1576INSERT INTO t1 1577SET f_int1 = NULL , f_int2 = -@max_row, 1578f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1579f_charbig = '#NULL#'; 1580# check null success: 1 1581 1582# check null-1 success: 1 1583UPDATE t1 SET f_int1 = -@max_row 1584WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1585AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1586 1587# check null-2 success: 1 1588UPDATE t1 SET f_int1 = NULL 1589WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1590AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1591 1592# check null-3 success: 1 1593DELETE FROM t1 1594WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1595AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1596 1597# check null-4 success: 1 1598DELETE FROM t1 1599WHERE f_int1 = 0 AND f_int2 = 0 1600AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1601AND f_charbig = '#NULL#'; 1602SET AUTOCOMMIT= 0; 1603INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1604SELECT f_int1, f_int1, '', '', 'was inserted' 1605FROM t0_template source_tab 1606WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1607 1608# check transactions-1 success: 1 1609COMMIT WORK; 1610 1611# check transactions-2 success: 1 1612ROLLBACK WORK; 1613 1614# check transactions-3 success: 1 1615DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1616COMMIT WORK; 1617ROLLBACK WORK; 1618 1619# check transactions-4 success: 1 1620INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1621SELECT f_int1, f_int1, '', '', 'was inserted' 1622FROM t0_template source_tab 1623WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1624 1625# check transactions-5 success: 1 1626ROLLBACK WORK; 1627 1628# check transactions-6 success: 1 1629# INFO: Storage engine used for t1 seems to be transactional. 1630COMMIT; 1631 1632# check transactions-7 success: 1 1633DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1634COMMIT WORK; 1635SET @@session.sql_mode = 'traditional'; 1636Warnings: 1637Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1638SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1639INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1640SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1641'', '', 'was inserted' FROM t0_template 1642WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1643ERROR 22012: Division by 0 1644COMMIT; 1645 1646# check transactions-8 success: 1 1647# INFO: Storage engine used for t1 seems to be able to revert 1648# changes made by the failing statement. 1649SET @@session.sql_mode = ''; 1650Warnings: 1651Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1652SET AUTOCOMMIT= 1; 1653DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1654COMMIT WORK; 1655UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1656 1657# check special-1 success: 1 1658UPDATE t1 SET f_charbig = ''; 1659 1660# check special-2 success: 1 1661UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1662INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1663SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1664WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1665INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1666SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1667'just inserted' FROM t0_template 1668WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1669CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1670BEGIN 1671UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1672f_charbig = 'updated by trigger' 1673 WHERE f_int1 = new.f_int1; 1674END| 1675INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1676SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1677WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1678 1679# check trigger-1 success: 1 1680DROP TRIGGER trg_1; 1681UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1682f_int2 = CAST(f_char1 AS SIGNED INT), 1683f_charbig = 'just inserted' 1684 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1685DELETE FROM t0_aux 1686WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1687INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1688SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1689'just inserted' FROM t0_template 1690WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1691CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1692BEGIN 1693UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1694f_charbig = 'updated by trigger' 1695 WHERE f_int1 = new.f_int1; 1696END| 1697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1698SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1699WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1700 1701# check trigger-2 success: 1 1702DROP TRIGGER trg_1; 1703UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1704f_int2 = CAST(f_char1 AS SIGNED INT), 1705f_charbig = 'just inserted' 1706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1707DELETE FROM t0_aux 1708WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1709INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1710SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1711'just inserted' FROM t0_template 1712WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1713CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1714BEGIN 1715UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1716f_charbig = 'updated by trigger' 1717 WHERE f_int1 = new.f_int1; 1718END| 1719UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1720WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1721 1722# check trigger-3 success: 1 1723DROP TRIGGER trg_1; 1724UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1725f_int2 = CAST(f_char1 AS SIGNED INT), 1726f_charbig = 'just inserted' 1727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1728DELETE FROM t0_aux 1729WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1730INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1731SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1732'just inserted' FROM t0_template 1733WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1734CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1735BEGIN 1736UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1737f_charbig = 'updated by trigger' 1738 WHERE f_int1 = - old.f_int1; 1739END| 1740UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1741WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1742 1743# check trigger-4 success: 1 1744DROP TRIGGER trg_1; 1745UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1746f_int2 = CAST(f_char1 AS SIGNED INT), 1747f_charbig = 'just inserted' 1748 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1749DELETE FROM t0_aux 1750WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1751INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1752SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1753'just inserted' FROM t0_template 1754WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1755CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1756BEGIN 1757UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1758f_charbig = 'updated by trigger' 1759 WHERE f_int1 = new.f_int1; 1760END| 1761UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1762WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1763 1764# check trigger-5 success: 1 1765DROP TRIGGER trg_1; 1766UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1767f_int2 = CAST(f_char1 AS SIGNED INT), 1768f_charbig = 'just inserted' 1769 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1770DELETE FROM t0_aux 1771WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1772INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1773SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1774'just inserted' FROM t0_template 1775WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1776CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1777BEGIN 1778UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1779f_charbig = 'updated by trigger' 1780 WHERE f_int1 = - old.f_int1; 1781END| 1782UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1783WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1784 1785# check trigger-6 success: 1 1786DROP TRIGGER trg_1; 1787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1788f_int2 = CAST(f_char1 AS SIGNED INT), 1789f_charbig = 'just inserted' 1790 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1791DELETE FROM t0_aux 1792WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1793INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1794SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1795'just inserted' FROM t0_template 1796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1797CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1798BEGIN 1799UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1800f_charbig = 'updated by trigger' 1801 WHERE f_int1 = - old.f_int1; 1802END| 1803DELETE FROM t0_aux 1804WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1805 1806# check trigger-7 success: 1 1807DROP TRIGGER trg_1; 1808UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1809f_int2 = CAST(f_char1 AS SIGNED INT), 1810f_charbig = 'just inserted' 1811 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1812DELETE FROM t0_aux 1813WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1814INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1815SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1816'just inserted' FROM t0_template 1817WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1818CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1819BEGIN 1820UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1821f_charbig = 'updated by trigger' 1822 WHERE f_int1 = - old.f_int1; 1823END| 1824DELETE FROM t0_aux 1825WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1826 1827# check trigger-8 success: 1 1828DROP TRIGGER trg_1; 1829UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1830f_int2 = CAST(f_char1 AS SIGNED INT), 1831f_charbig = 'just inserted' 1832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1833DELETE FROM t0_aux 1834WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1835DELETE FROM t1 1836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1837CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1838BEGIN 1839SET new.f_int1 = old.f_int1 + @max_row, 1840new.f_int2 = old.f_int2 - @max_row, 1841new.f_charbig = '####updated per update trigger####'; 1842END| 1843UPDATE t1 1844SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1845f_charbig = '####updated per update statement itself####'; 1846 1847# check trigger-9 success: 1 1848DROP TRIGGER trg_2; 1849UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1850f_int2 = CAST(f_char1 AS SIGNED INT), 1851f_charbig = CONCAT('===',f_char1,'==='); 1852CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1853BEGIN 1854SET new.f_int1 = new.f_int1 + @max_row, 1855new.f_int2 = new.f_int2 - @max_row, 1856new.f_charbig = '####updated per update trigger####'; 1857END| 1858UPDATE t1 1859SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1860f_charbig = '####updated per update statement itself####'; 1861 1862# check trigger-10 success: 1 1863DROP TRIGGER trg_2; 1864UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1865f_int2 = CAST(f_char1 AS SIGNED INT), 1866f_charbig = CONCAT('===',f_char1,'==='); 1867CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1868BEGIN 1869SET new.f_int1 = @my_max1 + @counter, 1870new.f_int2 = @my_min2 - @counter, 1871new.f_charbig = '####updated per insert trigger####'; 1872SET @counter = @counter + 1; 1873END| 1874SET @counter = 1; 1875SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1876INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1877SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1878CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1879WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1880ORDER BY f_int1; 1881DROP TRIGGER trg_3; 1882 1883# check trigger-11 success: 1 1884DELETE FROM t1 1885WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1886AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1887AND f_charbig = '####updated per insert trigger####'; 1888CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1889BEGIN 1890SET new.f_int1 = @my_max1 + @counter, 1891new.f_int2 = @my_min2 - @counter, 1892new.f_charbig = '####updated per insert trigger####'; 1893SET @counter = @counter + 1; 1894END| 1895SET @counter = 1; 1896SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1897INSERT INTO t1 (f_char1, f_char2, f_charbig) 1898SELECT CAST(f_int1 AS CHAR), 1899CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1901ORDER BY f_int1; 1902DROP TRIGGER trg_3; 1903 1904# check trigger-12 success: 1 1905DELETE FROM t1 1906WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1907AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1908AND f_charbig = '####updated per insert trigger####'; 1909ANALYZE TABLE t1; 1910Table Op Msg_type Msg_text 1911test.t1 analyze status OK 1912CHECK TABLE t1 EXTENDED; 1913Table Op Msg_type Msg_text 1914test.t1 check status OK 1915CHECKSUM TABLE t1 EXTENDED; 1916Table Checksum 1917test.t1 <some_value> 1918OPTIMIZE TABLE t1; 1919Table Op Msg_type Msg_text 1920test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 1921test.t1 optimize status OK 1922# check layout success: 1 1923REPAIR TABLE t1 EXTENDED; 1924Table Op Msg_type Msg_text 1925test.t1 repair status OK 1926# check layout success: 1 1927TRUNCATE t1; 1928 1929# check TRUNCATE success: 1 1930# check layout success: 1 1931# End usability test (inc/partition_check.inc) 1932DROP TABLE t1; 1933CREATE TABLE t1 ( 1934f_int1 INTEGER, 1935f_int2 INTEGER, 1936f_char1 CHAR(20), 1937f_char2 CHAR(20), 1938f_charbig VARCHAR(1000) 1939 1940) 1941PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 1942(PARTITION parta VALUES LESS THAN (0), 1943PARTITION partb VALUES LESS THAN (5), 1944PARTITION partc VALUES LESS THAN (10), 1945PARTITION partd VALUES LESS THAN (2147483646)); 1946INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1947SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 1948# Start usability test (inc/partition_check.inc) 1949create_command 1950SHOW CREATE TABLE t1; 1951Table Create Table 1952t1 CREATE TABLE `t1` ( 1953 `f_int1` int(11) DEFAULT NULL, 1954 `f_int2` int(11) DEFAULT NULL, 1955 `f_char1` char(20) DEFAULT NULL, 1956 `f_char2` char(20) DEFAULT NULL, 1957 `f_charbig` varchar(1000) DEFAULT NULL 1958) ENGINE=InnoDB DEFAULT CHARSET=latin1 1959/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 1960SUBPARTITION BY HASH (f_int1) 1961SUBPARTITIONS 2 1962(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 1963 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 1964 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 1965 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 1966 1967unified filelist 1968t1#P#parta#SP#partasp0.ibd 1969t1#P#parta#SP#partasp1.ibd 1970t1#P#partb#SP#partbsp0.ibd 1971t1#P#partb#SP#partbsp1.ibd 1972t1#P#partc#SP#partcsp0.ibd 1973t1#P#partc#SP#partcsp1.ibd 1974t1#P#partd#SP#partdsp0.ibd 1975t1#P#partd#SP#partdsp1.ibd 1976t1.frm 1977 1978# check prerequisites-1 success: 1 1979# check COUNT(*) success: 1 1980# check MIN/MAX(f_int1) success: 1 1981# check MIN/MAX(f_int2) success: 1 1982INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1983SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1984CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1985WHERE f_int1 IN (2,3); 1986# check prerequisites-3 success: 1 1987DELETE FROM t1 WHERE f_charbig = 'delete me'; 1988# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1989# check read via f_int1 success: 1 1990# check read via f_int2 success: 1 1991 1992# check multiple-1 success: 1 1993DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1994 1995# check multiple-2 success: 1 1996INSERT INTO t1 SELECT * FROM t0_template 1997WHERE MOD(f_int1,3) = 0; 1998 1999# check multiple-3 success: 1 2000UPDATE t1 SET f_int1 = f_int1 + @max_row 2001WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2002AND @max_row_div2 + @max_row_div4; 2003 2004# check multiple-4 success: 1 2005DELETE FROM t1 2006WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2007AND @max_row_div2 + @max_row_div4 + @max_row; 2008 2009# check multiple-5 success: 1 2010SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2011INSERT INTO t1 2012SET f_int1 = @cur_value , f_int2 = @cur_value, 2013f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2014f_charbig = '#SINGLE#'; 2015 2016# check single-1 success: 1 2017SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2018INSERT INTO t1 2019SET f_int1 = @cur_value , f_int2 = @cur_value, 2020f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2021f_charbig = '#SINGLE#'; 2022 2023# check single-2 success: 1 2024SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2025SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2026UPDATE t1 SET f_int1 = @cur_value2 2027WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2028 2029# check single-3 success: 1 2030SET @cur_value1= -1; 2031SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2032UPDATE t1 SET f_int1 = @cur_value1 2033WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2034 2035# check single-4 success: 1 2036SELECT MAX(f_int1) INTO @cur_value FROM t1; 2037DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2038 2039# check single-5 success: 1 2040DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2041 2042# check single-6 success: 1 2043INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2044 2045# check single-7 success: 1 2046DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 2047DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2048INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2049f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2050f_charbig = '#NULL#'; 2051INSERT INTO t1 2052SET f_int1 = NULL , f_int2 = -@max_row, 2053f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2054f_charbig = '#NULL#'; 2055# check null success: 1 2056 2057# check null-1 success: 1 2058UPDATE t1 SET f_int1 = -@max_row 2059WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2060AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2061 2062# check null-2 success: 1 2063UPDATE t1 SET f_int1 = NULL 2064WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2065AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2066 2067# check null-3 success: 1 2068DELETE FROM t1 2069WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2070AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2071 2072# check null-4 success: 1 2073DELETE FROM t1 2074WHERE f_int1 = 0 AND f_int2 = 0 2075AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2076AND f_charbig = '#NULL#'; 2077SET AUTOCOMMIT= 0; 2078INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2079SELECT f_int1, f_int1, '', '', 'was inserted' 2080FROM t0_template source_tab 2081WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2082 2083# check transactions-1 success: 1 2084COMMIT WORK; 2085 2086# check transactions-2 success: 1 2087ROLLBACK WORK; 2088 2089# check transactions-3 success: 1 2090DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2091COMMIT WORK; 2092ROLLBACK WORK; 2093 2094# check transactions-4 success: 1 2095INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2096SELECT f_int1, f_int1, '', '', 'was inserted' 2097FROM t0_template source_tab 2098WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2099 2100# check transactions-5 success: 1 2101ROLLBACK WORK; 2102 2103# check transactions-6 success: 1 2104# INFO: Storage engine used for t1 seems to be transactional. 2105COMMIT; 2106 2107# check transactions-7 success: 1 2108DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2109COMMIT WORK; 2110SET @@session.sql_mode = 'traditional'; 2111Warnings: 2112Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2113SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2114INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2115SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2116'', '', 'was inserted' FROM t0_template 2117WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2118ERROR 22012: Division by 0 2119COMMIT; 2120 2121# check transactions-8 success: 1 2122# INFO: Storage engine used for t1 seems to be able to revert 2123# changes made by the failing statement. 2124SET @@session.sql_mode = ''; 2125Warnings: 2126Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2127SET AUTOCOMMIT= 1; 2128DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2129COMMIT WORK; 2130UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2131 2132# check special-1 success: 1 2133UPDATE t1 SET f_charbig = ''; 2134 2135# check special-2 success: 1 2136UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2137INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2138SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2142'just inserted' FROM t0_template 2143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2144CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2145BEGIN 2146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2147f_charbig = 'updated by trigger' 2148 WHERE f_int1 = new.f_int1; 2149END| 2150INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2151SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2152WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2153 2154# check trigger-1 success: 1 2155DROP TRIGGER trg_1; 2156UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2157f_int2 = CAST(f_char1 AS SIGNED INT), 2158f_charbig = 'just inserted' 2159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2160DELETE FROM t0_aux 2161WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2162INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2163SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2164'just inserted' FROM t0_template 2165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2166CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2167BEGIN 2168UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2169f_charbig = 'updated by trigger' 2170 WHERE f_int1 = new.f_int1; 2171END| 2172INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2173SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2174WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2175 2176# check trigger-2 success: 1 2177DROP TRIGGER trg_1; 2178UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2179f_int2 = CAST(f_char1 AS SIGNED INT), 2180f_charbig = 'just inserted' 2181 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2182DELETE FROM t0_aux 2183WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2185SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2186'just inserted' FROM t0_template 2187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2188CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2189BEGIN 2190UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2191f_charbig = 'updated by trigger' 2192 WHERE f_int1 = new.f_int1; 2193END| 2194UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2195WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2196 2197# check trigger-3 success: 1 2198DROP TRIGGER trg_1; 2199UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2200f_int2 = CAST(f_char1 AS SIGNED INT), 2201f_charbig = 'just inserted' 2202 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2203DELETE FROM t0_aux 2204WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2205INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2206SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2207'just inserted' FROM t0_template 2208WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2209CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2210BEGIN 2211UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2212f_charbig = 'updated by trigger' 2213 WHERE f_int1 = - old.f_int1; 2214END| 2215UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2216WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2217 2218# check trigger-4 success: 1 2219DROP TRIGGER trg_1; 2220UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2221f_int2 = CAST(f_char1 AS SIGNED INT), 2222f_charbig = 'just inserted' 2223 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2224DELETE FROM t0_aux 2225WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2226INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2227SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2228'just inserted' FROM t0_template 2229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2230CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2231BEGIN 2232UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2233f_charbig = 'updated by trigger' 2234 WHERE f_int1 = new.f_int1; 2235END| 2236UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2237WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2238 2239# check trigger-5 success: 1 2240DROP TRIGGER trg_1; 2241UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2242f_int2 = CAST(f_char1 AS SIGNED INT), 2243f_charbig = 'just inserted' 2244 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2245DELETE FROM t0_aux 2246WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2247INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2248SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2249'just inserted' FROM t0_template 2250WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2251CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2252BEGIN 2253UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2254f_charbig = 'updated by trigger' 2255 WHERE f_int1 = - old.f_int1; 2256END| 2257UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2258WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2259 2260# check trigger-6 success: 1 2261DROP TRIGGER trg_1; 2262UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2263f_int2 = CAST(f_char1 AS SIGNED INT), 2264f_charbig = 'just inserted' 2265 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2266DELETE FROM t0_aux 2267WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2268INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2269SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2270'just inserted' FROM t0_template 2271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2272CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2273BEGIN 2274UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2275f_charbig = 'updated by trigger' 2276 WHERE f_int1 = - old.f_int1; 2277END| 2278DELETE FROM t0_aux 2279WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2280 2281# check trigger-7 success: 1 2282DROP TRIGGER trg_1; 2283UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2284f_int2 = CAST(f_char1 AS SIGNED INT), 2285f_charbig = 'just inserted' 2286 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2287DELETE FROM t0_aux 2288WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2289INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2290SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2291'just inserted' FROM t0_template 2292WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2293CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2294BEGIN 2295UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2296f_charbig = 'updated by trigger' 2297 WHERE f_int1 = - old.f_int1; 2298END| 2299DELETE FROM t0_aux 2300WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2301 2302# check trigger-8 success: 1 2303DROP TRIGGER trg_1; 2304UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2305f_int2 = CAST(f_char1 AS SIGNED INT), 2306f_charbig = 'just inserted' 2307 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2308DELETE FROM t0_aux 2309WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2310DELETE FROM t1 2311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2312CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2313BEGIN 2314SET new.f_int1 = old.f_int1 + @max_row, 2315new.f_int2 = old.f_int2 - @max_row, 2316new.f_charbig = '####updated per update trigger####'; 2317END| 2318UPDATE t1 2319SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2320f_charbig = '####updated per update statement itself####'; 2321 2322# check trigger-9 success: 1 2323DROP TRIGGER trg_2; 2324UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2325f_int2 = CAST(f_char1 AS SIGNED INT), 2326f_charbig = CONCAT('===',f_char1,'==='); 2327CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2328BEGIN 2329SET new.f_int1 = new.f_int1 + @max_row, 2330new.f_int2 = new.f_int2 - @max_row, 2331new.f_charbig = '####updated per update trigger####'; 2332END| 2333UPDATE t1 2334SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2335f_charbig = '####updated per update statement itself####'; 2336 2337# check trigger-10 success: 1 2338DROP TRIGGER trg_2; 2339UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2340f_int2 = CAST(f_char1 AS SIGNED INT), 2341f_charbig = CONCAT('===',f_char1,'==='); 2342CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2343BEGIN 2344SET new.f_int1 = @my_max1 + @counter, 2345new.f_int2 = @my_min2 - @counter, 2346new.f_charbig = '####updated per insert trigger####'; 2347SET @counter = @counter + 1; 2348END| 2349SET @counter = 1; 2350SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2351INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2352SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2353CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2354WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2355ORDER BY f_int1; 2356DROP TRIGGER trg_3; 2357 2358# check trigger-11 success: 1 2359DELETE FROM t1 2360WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2361AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2362AND f_charbig = '####updated per insert trigger####'; 2363CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2364BEGIN 2365SET new.f_int1 = @my_max1 + @counter, 2366new.f_int2 = @my_min2 - @counter, 2367new.f_charbig = '####updated per insert trigger####'; 2368SET @counter = @counter + 1; 2369END| 2370SET @counter = 1; 2371SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2372INSERT INTO t1 (f_char1, f_char2, f_charbig) 2373SELECT CAST(f_int1 AS CHAR), 2374CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2375WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2376ORDER BY f_int1; 2377DROP TRIGGER trg_3; 2378 2379# check trigger-12 success: 1 2380DELETE FROM t1 2381WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2382AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2383AND f_charbig = '####updated per insert trigger####'; 2384ANALYZE TABLE t1; 2385Table Op Msg_type Msg_text 2386test.t1 analyze status OK 2387CHECK TABLE t1 EXTENDED; 2388Table Op Msg_type Msg_text 2389test.t1 check status OK 2390CHECKSUM TABLE t1 EXTENDED; 2391Table Checksum 2392test.t1 <some_value> 2393OPTIMIZE TABLE t1; 2394Table Op Msg_type Msg_text 2395test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 2396test.t1 optimize status OK 2397# check layout success: 1 2398REPAIR TABLE t1 EXTENDED; 2399Table Op Msg_type Msg_text 2400test.t1 repair status OK 2401# check layout success: 1 2402TRUNCATE t1; 2403 2404# check TRUNCATE success: 1 2405# check layout success: 1 2406# End usability test (inc/partition_check.inc) 2407DROP TABLE t1; 2408CREATE TABLE t1 ( 2409f_int1 INTEGER, 2410f_int2 INTEGER, 2411f_char1 CHAR(20), 2412f_char2 CHAR(20), 2413f_charbig VARCHAR(1000) 2414 2415) 2416PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 2417(PARTITION part1 VALUES LESS THAN (0) 2418(SUBPARTITION subpart11, SUBPARTITION subpart12), 2419PARTITION part2 VALUES LESS THAN (5) 2420(SUBPARTITION subpart21, SUBPARTITION subpart22), 2421PARTITION part3 VALUES LESS THAN (10) 2422(SUBPARTITION subpart31, SUBPARTITION subpart32), 2423PARTITION part4 VALUES LESS THAN (2147483646) 2424(SUBPARTITION subpart41, SUBPARTITION subpart42)); 2425INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2426SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 2427# Start usability test (inc/partition_check.inc) 2428create_command 2429SHOW CREATE TABLE t1; 2430Table Create Table 2431t1 CREATE TABLE `t1` ( 2432 `f_int1` int(11) DEFAULT NULL, 2433 `f_int2` int(11) DEFAULT NULL, 2434 `f_char1` char(20) DEFAULT NULL, 2435 `f_char2` char(20) DEFAULT NULL, 2436 `f_charbig` varchar(1000) DEFAULT NULL 2437) ENGINE=InnoDB DEFAULT CHARSET=latin1 2438/*!50100 PARTITION BY RANGE (f_int1) 2439SUBPARTITION BY KEY (f_int1) 2440(PARTITION part1 VALUES LESS THAN (0) 2441 (SUBPARTITION subpart11 ENGINE = InnoDB, 2442 SUBPARTITION subpart12 ENGINE = InnoDB), 2443 PARTITION part2 VALUES LESS THAN (5) 2444 (SUBPARTITION subpart21 ENGINE = InnoDB, 2445 SUBPARTITION subpart22 ENGINE = InnoDB), 2446 PARTITION part3 VALUES LESS THAN (10) 2447 (SUBPARTITION subpart31 ENGINE = InnoDB, 2448 SUBPARTITION subpart32 ENGINE = InnoDB), 2449 PARTITION part4 VALUES LESS THAN (2147483646) 2450 (SUBPARTITION subpart41 ENGINE = InnoDB, 2451 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 2452 2453unified filelist 2454t1#P#part1#SP#subpart11.ibd 2455t1#P#part1#SP#subpart12.ibd 2456t1#P#part2#SP#subpart21.ibd 2457t1#P#part2#SP#subpart22.ibd 2458t1#P#part3#SP#subpart31.ibd 2459t1#P#part3#SP#subpart32.ibd 2460t1#P#part4#SP#subpart41.ibd 2461t1#P#part4#SP#subpart42.ibd 2462t1.frm 2463 2464# check prerequisites-1 success: 1 2465# check COUNT(*) success: 1 2466# check MIN/MAX(f_int1) success: 1 2467# check MIN/MAX(f_int2) success: 1 2468INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2469SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2470CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2471WHERE f_int1 IN (2,3); 2472# check prerequisites-3 success: 1 2473DELETE FROM t1 WHERE f_charbig = 'delete me'; 2474# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2475# check read via f_int1 success: 1 2476# check read via f_int2 success: 1 2477 2478# check multiple-1 success: 1 2479DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2480 2481# check multiple-2 success: 1 2482INSERT INTO t1 SELECT * FROM t0_template 2483WHERE MOD(f_int1,3) = 0; 2484 2485# check multiple-3 success: 1 2486UPDATE t1 SET f_int1 = f_int1 + @max_row 2487WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2488AND @max_row_div2 + @max_row_div4; 2489 2490# check multiple-4 success: 1 2491DELETE FROM t1 2492WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2493AND @max_row_div2 + @max_row_div4 + @max_row; 2494 2495# check multiple-5 success: 1 2496SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2497INSERT INTO t1 2498SET f_int1 = @cur_value , f_int2 = @cur_value, 2499f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2500f_charbig = '#SINGLE#'; 2501 2502# check single-1 success: 1 2503SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2504INSERT INTO t1 2505SET f_int1 = @cur_value , f_int2 = @cur_value, 2506f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2507f_charbig = '#SINGLE#'; 2508 2509# check single-2 success: 1 2510SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2511SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2512UPDATE t1 SET f_int1 = @cur_value2 2513WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2514 2515# check single-3 success: 1 2516SET @cur_value1= -1; 2517SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2518UPDATE t1 SET f_int1 = @cur_value1 2519WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2520 2521# check single-4 success: 1 2522SELECT MAX(f_int1) INTO @cur_value FROM t1; 2523DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2524 2525# check single-5 success: 1 2526DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2527 2528# check single-6 success: 1 2529INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2530ERROR HY000: Table has no partition for value 2147483647 2531DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2532INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2533f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2534f_charbig = '#NULL#'; 2535INSERT INTO t1 2536SET f_int1 = NULL , f_int2 = -@max_row, 2537f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2538f_charbig = '#NULL#'; 2539# check null success: 1 2540 2541# check null-1 success: 1 2542UPDATE t1 SET f_int1 = -@max_row 2543WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2544AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2545 2546# check null-2 success: 1 2547UPDATE t1 SET f_int1 = NULL 2548WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2549AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2550 2551# check null-3 success: 1 2552DELETE FROM t1 2553WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2554AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2555 2556# check null-4 success: 1 2557DELETE FROM t1 2558WHERE f_int1 = 0 AND f_int2 = 0 2559AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2560AND f_charbig = '#NULL#'; 2561SET AUTOCOMMIT= 0; 2562INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2563SELECT f_int1, f_int1, '', '', 'was inserted' 2564FROM t0_template source_tab 2565WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2566 2567# check transactions-1 success: 1 2568COMMIT WORK; 2569 2570# check transactions-2 success: 1 2571ROLLBACK WORK; 2572 2573# check transactions-3 success: 1 2574DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2575COMMIT WORK; 2576ROLLBACK WORK; 2577 2578# check transactions-4 success: 1 2579INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2580SELECT f_int1, f_int1, '', '', 'was inserted' 2581FROM t0_template source_tab 2582WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2583 2584# check transactions-5 success: 1 2585ROLLBACK WORK; 2586 2587# check transactions-6 success: 1 2588# INFO: Storage engine used for t1 seems to be transactional. 2589COMMIT; 2590 2591# check transactions-7 success: 1 2592DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2593COMMIT WORK; 2594SET @@session.sql_mode = 'traditional'; 2595Warnings: 2596Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2597SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2598INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2599SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2600'', '', 'was inserted' FROM t0_template 2601WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2602ERROR 22012: Division by 0 2603COMMIT; 2604 2605# check transactions-8 success: 1 2606# INFO: Storage engine used for t1 seems to be able to revert 2607# changes made by the failing statement. 2608SET @@session.sql_mode = ''; 2609Warnings: 2610Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2611SET AUTOCOMMIT= 1; 2612DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2613COMMIT WORK; 2614UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2615 2616# check special-1 success: 1 2617UPDATE t1 SET f_charbig = ''; 2618 2619# check special-2 success: 1 2620UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2621INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2622SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2624INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2625SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2626'just inserted' FROM t0_template 2627WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2628CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2629BEGIN 2630UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2631f_charbig = 'updated by trigger' 2632 WHERE f_int1 = new.f_int1; 2633END| 2634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2635SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2636WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2637 2638# check trigger-1 success: 1 2639DROP TRIGGER trg_1; 2640UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2641f_int2 = CAST(f_char1 AS SIGNED INT), 2642f_charbig = 'just inserted' 2643 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2644DELETE FROM t0_aux 2645WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2646INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2647SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2648'just inserted' FROM t0_template 2649WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2650CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2651BEGIN 2652UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2653f_charbig = 'updated by trigger' 2654 WHERE f_int1 = new.f_int1; 2655END| 2656INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2657SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2659 2660# check trigger-2 success: 1 2661DROP TRIGGER trg_1; 2662UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2663f_int2 = CAST(f_char1 AS SIGNED INT), 2664f_charbig = 'just inserted' 2665 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2666DELETE FROM t0_aux 2667WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2668INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2669SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2670'just inserted' FROM t0_template 2671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2672CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2673BEGIN 2674UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2675f_charbig = 'updated by trigger' 2676 WHERE f_int1 = new.f_int1; 2677END| 2678UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2679WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2680 2681# check trigger-3 success: 1 2682DROP TRIGGER trg_1; 2683UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2684f_int2 = CAST(f_char1 AS SIGNED INT), 2685f_charbig = 'just inserted' 2686 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2687DELETE FROM t0_aux 2688WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2689INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2690SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2691'just inserted' FROM t0_template 2692WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2693CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2694BEGIN 2695UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2696f_charbig = 'updated by trigger' 2697 WHERE f_int1 = - old.f_int1; 2698END| 2699UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2700WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2701 2702# check trigger-4 success: 1 2703DROP TRIGGER trg_1; 2704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2705f_int2 = CAST(f_char1 AS SIGNED INT), 2706f_charbig = 'just inserted' 2707 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2708DELETE FROM t0_aux 2709WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2710INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2711SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2712'just inserted' FROM t0_template 2713WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2714CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2715BEGIN 2716UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2717f_charbig = 'updated by trigger' 2718 WHERE f_int1 = new.f_int1; 2719END| 2720UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2721WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2722 2723# check trigger-5 success: 1 2724DROP TRIGGER trg_1; 2725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2726f_int2 = CAST(f_char1 AS SIGNED INT), 2727f_charbig = 'just inserted' 2728 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2729DELETE FROM t0_aux 2730WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2733'just inserted' FROM t0_template 2734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2735CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2736BEGIN 2737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2738f_charbig = 'updated by trigger' 2739 WHERE f_int1 = - old.f_int1; 2740END| 2741UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2742WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2743 2744# check trigger-6 success: 1 2745DROP TRIGGER trg_1; 2746UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2747f_int2 = CAST(f_char1 AS SIGNED INT), 2748f_charbig = 'just inserted' 2749 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2750DELETE FROM t0_aux 2751WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2752INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2753SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2754'just inserted' FROM t0_template 2755WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2756CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2757BEGIN 2758UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2759f_charbig = 'updated by trigger' 2760 WHERE f_int1 = - old.f_int1; 2761END| 2762DELETE FROM t0_aux 2763WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2764 2765# check trigger-7 success: 1 2766DROP TRIGGER trg_1; 2767UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2768f_int2 = CAST(f_char1 AS SIGNED INT), 2769f_charbig = 'just inserted' 2770 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2771DELETE FROM t0_aux 2772WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2773INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2774SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2775'just inserted' FROM t0_template 2776WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2777CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2778BEGIN 2779UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2780f_charbig = 'updated by trigger' 2781 WHERE f_int1 = - old.f_int1; 2782END| 2783DELETE FROM t0_aux 2784WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2785 2786# check trigger-8 success: 1 2787DROP TRIGGER trg_1; 2788UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2789f_int2 = CAST(f_char1 AS SIGNED INT), 2790f_charbig = 'just inserted' 2791 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2792DELETE FROM t0_aux 2793WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2794DELETE FROM t1 2795WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2796CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2797BEGIN 2798SET new.f_int1 = old.f_int1 + @max_row, 2799new.f_int2 = old.f_int2 - @max_row, 2800new.f_charbig = '####updated per update trigger####'; 2801END| 2802UPDATE t1 2803SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2804f_charbig = '####updated per update statement itself####'; 2805 2806# check trigger-9 success: 1 2807DROP TRIGGER trg_2; 2808UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2809f_int2 = CAST(f_char1 AS SIGNED INT), 2810f_charbig = CONCAT('===',f_char1,'==='); 2811CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2812BEGIN 2813SET new.f_int1 = new.f_int1 + @max_row, 2814new.f_int2 = new.f_int2 - @max_row, 2815new.f_charbig = '####updated per update trigger####'; 2816END| 2817UPDATE t1 2818SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2819f_charbig = '####updated per update statement itself####'; 2820 2821# check trigger-10 success: 1 2822DROP TRIGGER trg_2; 2823UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2824f_int2 = CAST(f_char1 AS SIGNED INT), 2825f_charbig = CONCAT('===',f_char1,'==='); 2826CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2827BEGIN 2828SET new.f_int1 = @my_max1 + @counter, 2829new.f_int2 = @my_min2 - @counter, 2830new.f_charbig = '####updated per insert trigger####'; 2831SET @counter = @counter + 1; 2832END| 2833SET @counter = 1; 2834SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2835INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2836SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2837CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2839ORDER BY f_int1; 2840DROP TRIGGER trg_3; 2841 2842# check trigger-11 success: 1 2843DELETE FROM t1 2844WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2845AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2846AND f_charbig = '####updated per insert trigger####'; 2847CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2848BEGIN 2849SET new.f_int1 = @my_max1 + @counter, 2850new.f_int2 = @my_min2 - @counter, 2851new.f_charbig = '####updated per insert trigger####'; 2852SET @counter = @counter + 1; 2853END| 2854SET @counter = 1; 2855SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2856INSERT INTO t1 (f_char1, f_char2, f_charbig) 2857SELECT CAST(f_int1 AS CHAR), 2858CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2859WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2860ORDER BY f_int1; 2861DROP TRIGGER trg_3; 2862 2863# check trigger-12 success: 1 2864DELETE FROM t1 2865WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2866AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2867AND f_charbig = '####updated per insert trigger####'; 2868ANALYZE TABLE t1; 2869Table Op Msg_type Msg_text 2870test.t1 analyze status OK 2871CHECK TABLE t1 EXTENDED; 2872Table Op Msg_type Msg_text 2873test.t1 check status OK 2874CHECKSUM TABLE t1 EXTENDED; 2875Table Checksum 2876test.t1 <some_value> 2877OPTIMIZE TABLE t1; 2878Table Op Msg_type Msg_text 2879test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 2880test.t1 optimize status OK 2881# check layout success: 1 2882REPAIR TABLE t1 EXTENDED; 2883Table Op Msg_type Msg_text 2884test.t1 repair status OK 2885# check layout success: 1 2886TRUNCATE t1; 2887 2888# check TRUNCATE success: 1 2889# check layout success: 1 2890# End usability test (inc/partition_check.inc) 2891DROP TABLE t1; 2892CREATE TABLE t1 ( 2893f_int1 INTEGER, 2894f_int2 INTEGER, 2895f_char1 CHAR(20), 2896f_char2 CHAR(20), 2897f_charbig VARCHAR(1000) 2898 2899) 2900PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 2901(PARTITION part1 VALUES IN (0) 2902(SUBPARTITION sp11, 2903SUBPARTITION sp12), 2904PARTITION part2 VALUES IN (1) 2905(SUBPARTITION sp21, 2906SUBPARTITION sp22), 2907PARTITION part3 VALUES IN (2) 2908(SUBPARTITION sp31, 2909SUBPARTITION sp32), 2910PARTITION part4 VALUES IN (NULL) 2911(SUBPARTITION sp41, 2912SUBPARTITION sp42)); 2913INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2914SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 2915# Start usability test (inc/partition_check.inc) 2916create_command 2917SHOW CREATE TABLE t1; 2918Table Create Table 2919t1 CREATE TABLE `t1` ( 2920 `f_int1` int(11) DEFAULT NULL, 2921 `f_int2` int(11) DEFAULT NULL, 2922 `f_char1` char(20) DEFAULT NULL, 2923 `f_char2` char(20) DEFAULT NULL, 2924 `f_charbig` varchar(1000) DEFAULT NULL 2925) ENGINE=InnoDB DEFAULT CHARSET=latin1 2926/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 2927SUBPARTITION BY HASH (f_int1 + 1) 2928(PARTITION part1 VALUES IN (0) 2929 (SUBPARTITION sp11 ENGINE = InnoDB, 2930 SUBPARTITION sp12 ENGINE = InnoDB), 2931 PARTITION part2 VALUES IN (1) 2932 (SUBPARTITION sp21 ENGINE = InnoDB, 2933 SUBPARTITION sp22 ENGINE = InnoDB), 2934 PARTITION part3 VALUES IN (2) 2935 (SUBPARTITION sp31 ENGINE = InnoDB, 2936 SUBPARTITION sp32 ENGINE = InnoDB), 2937 PARTITION part4 VALUES IN (NULL) 2938 (SUBPARTITION sp41 ENGINE = InnoDB, 2939 SUBPARTITION sp42 ENGINE = InnoDB)) */ 2940 2941unified filelist 2942t1#P#part1#SP#sp11.ibd 2943t1#P#part1#SP#sp12.ibd 2944t1#P#part2#SP#sp21.ibd 2945t1#P#part2#SP#sp22.ibd 2946t1#P#part3#SP#sp31.ibd 2947t1#P#part3#SP#sp32.ibd 2948t1#P#part4#SP#sp41.ibd 2949t1#P#part4#SP#sp42.ibd 2950t1.frm 2951 2952# check prerequisites-1 success: 1 2953# check COUNT(*) success: 1 2954# check MIN/MAX(f_int1) success: 1 2955# check MIN/MAX(f_int2) success: 1 2956INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2957SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2958CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2959WHERE f_int1 IN (2,3); 2960# check prerequisites-3 success: 1 2961DELETE FROM t1 WHERE f_charbig = 'delete me'; 2962# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2963# check read via f_int1 success: 1 2964# check read via f_int2 success: 1 2965 2966# check multiple-1 success: 1 2967DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2968 2969# check multiple-2 success: 1 2970INSERT INTO t1 SELECT * FROM t0_template 2971WHERE MOD(f_int1,3) = 0; 2972 2973# check multiple-3 success: 1 2974UPDATE t1 SET f_int1 = f_int1 + @max_row 2975WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2976AND @max_row_div2 + @max_row_div4; 2977 2978# check multiple-4 success: 1 2979DELETE FROM t1 2980WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2981AND @max_row_div2 + @max_row_div4 + @max_row; 2982 2983# check multiple-5 success: 1 2984SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2985INSERT INTO t1 2986SET f_int1 = @cur_value , f_int2 = @cur_value, 2987f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2988f_charbig = '#SINGLE#'; 2989 2990# check single-1 success: 1 2991SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2992INSERT INTO t1 2993SET f_int1 = @cur_value , f_int2 = @cur_value, 2994f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2995f_charbig = '#SINGLE#'; 2996 2997# check single-2 success: 1 2998SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2999SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3000UPDATE t1 SET f_int1 = @cur_value2 3001WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3002 3003# check single-3 success: 1 3004SET @cur_value1= -1; 3005SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3006UPDATE t1 SET f_int1 = @cur_value1 3007WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3008 3009# check single-4 success: 1 3010SELECT MAX(f_int1) INTO @cur_value FROM t1; 3011DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3012 3013# check single-5 success: 1 3014DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3015 3016# check single-6 success: 1 3017INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3018 3019# check single-7 success: 1 3020DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3021DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3022INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3023f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3024f_charbig = '#NULL#'; 3025INSERT INTO t1 3026SET f_int1 = NULL , f_int2 = -@max_row, 3027f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3028f_charbig = '#NULL#'; 3029# check null success: 1 3030 3031# check null-1 success: 1 3032UPDATE t1 SET f_int1 = -@max_row 3033WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3034AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3035 3036# check null-2 success: 1 3037UPDATE t1 SET f_int1 = NULL 3038WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3039AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3040 3041# check null-3 success: 1 3042DELETE FROM t1 3043WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3044AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3045 3046# check null-4 success: 1 3047DELETE FROM t1 3048WHERE f_int1 = 0 AND f_int2 = 0 3049AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3050AND f_charbig = '#NULL#'; 3051SET AUTOCOMMIT= 0; 3052INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3053SELECT f_int1, f_int1, '', '', 'was inserted' 3054FROM t0_template source_tab 3055WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3056 3057# check transactions-1 success: 1 3058COMMIT WORK; 3059 3060# check transactions-2 success: 1 3061ROLLBACK WORK; 3062 3063# check transactions-3 success: 1 3064DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3065COMMIT WORK; 3066ROLLBACK WORK; 3067 3068# check transactions-4 success: 1 3069INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3070SELECT f_int1, f_int1, '', '', 'was inserted' 3071FROM t0_template source_tab 3072WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3073 3074# check transactions-5 success: 1 3075ROLLBACK WORK; 3076 3077# check transactions-6 success: 1 3078# INFO: Storage engine used for t1 seems to be transactional. 3079COMMIT; 3080 3081# check transactions-7 success: 1 3082DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3083COMMIT WORK; 3084SET @@session.sql_mode = 'traditional'; 3085Warnings: 3086Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3087SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3088INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3089SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3090'', '', 'was inserted' FROM t0_template 3091WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3092ERROR 22012: Division by 0 3093COMMIT; 3094 3095# check transactions-8 success: 1 3096# INFO: Storage engine used for t1 seems to be able to revert 3097# changes made by the failing statement. 3098SET @@session.sql_mode = ''; 3099Warnings: 3100Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3101SET AUTOCOMMIT= 1; 3102DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3103COMMIT WORK; 3104UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3105 3106# check special-1 success: 1 3107UPDATE t1 SET f_charbig = ''; 3108 3109# check special-2 success: 1 3110UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3111INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3112SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3115SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3116'just inserted' FROM t0_template 3117WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3118CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3119BEGIN 3120UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3121f_charbig = 'updated by trigger' 3122 WHERE f_int1 = new.f_int1; 3123END| 3124INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3125SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3127 3128# check trigger-1 success: 1 3129DROP TRIGGER trg_1; 3130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3131f_int2 = CAST(f_char1 AS SIGNED INT), 3132f_charbig = 'just inserted' 3133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3134DELETE FROM t0_aux 3135WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3136INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3137SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3138'just inserted' FROM t0_template 3139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3140CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3141BEGIN 3142UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3143f_charbig = 'updated by trigger' 3144 WHERE f_int1 = new.f_int1; 3145END| 3146INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3147SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3149 3150# check trigger-2 success: 1 3151DROP TRIGGER trg_1; 3152UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3153f_int2 = CAST(f_char1 AS SIGNED INT), 3154f_charbig = 'just inserted' 3155 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3156DELETE FROM t0_aux 3157WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3158INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3159SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3160'just inserted' FROM t0_template 3161WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3162CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3163BEGIN 3164UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3165f_charbig = 'updated by trigger' 3166 WHERE f_int1 = new.f_int1; 3167END| 3168UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3169WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3170 3171# check trigger-3 success: 1 3172DROP TRIGGER trg_1; 3173UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3174f_int2 = CAST(f_char1 AS SIGNED INT), 3175f_charbig = 'just inserted' 3176 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3177DELETE FROM t0_aux 3178WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3179INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3180SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3181'just inserted' FROM t0_template 3182WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3183CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3184BEGIN 3185UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3186f_charbig = 'updated by trigger' 3187 WHERE f_int1 = - old.f_int1; 3188END| 3189UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3190WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3191 3192# check trigger-4 success: 1 3193DROP TRIGGER trg_1; 3194UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3195f_int2 = CAST(f_char1 AS SIGNED INT), 3196f_charbig = 'just inserted' 3197 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3198DELETE FROM t0_aux 3199WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3200INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3201SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3202'just inserted' FROM t0_template 3203WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3204CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3205BEGIN 3206UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3207f_charbig = 'updated by trigger' 3208 WHERE f_int1 = new.f_int1; 3209END| 3210UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3211WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3212 3213# check trigger-5 success: 1 3214DROP TRIGGER trg_1; 3215UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3216f_int2 = CAST(f_char1 AS SIGNED INT), 3217f_charbig = 'just inserted' 3218 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3219DELETE FROM t0_aux 3220WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3221INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3222SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3223'just inserted' FROM t0_template 3224WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3225CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3226BEGIN 3227UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3228f_charbig = 'updated by trigger' 3229 WHERE f_int1 = - old.f_int1; 3230END| 3231UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3232WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3233 3234# check trigger-6 success: 1 3235DROP TRIGGER trg_1; 3236UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3237f_int2 = CAST(f_char1 AS SIGNED INT), 3238f_charbig = 'just inserted' 3239 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3240DELETE FROM t0_aux 3241WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3242INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3243SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3244'just inserted' FROM t0_template 3245WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3246CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3247BEGIN 3248UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3249f_charbig = 'updated by trigger' 3250 WHERE f_int1 = - old.f_int1; 3251END| 3252DELETE FROM t0_aux 3253WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3254 3255# check trigger-7 success: 1 3256DROP TRIGGER trg_1; 3257UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3258f_int2 = CAST(f_char1 AS SIGNED INT), 3259f_charbig = 'just inserted' 3260 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3261DELETE FROM t0_aux 3262WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3263INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3264SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3265'just inserted' FROM t0_template 3266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3267CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3268BEGIN 3269UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3270f_charbig = 'updated by trigger' 3271 WHERE f_int1 = - old.f_int1; 3272END| 3273DELETE FROM t0_aux 3274WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3275 3276# check trigger-8 success: 1 3277DROP TRIGGER trg_1; 3278UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3279f_int2 = CAST(f_char1 AS SIGNED INT), 3280f_charbig = 'just inserted' 3281 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3282DELETE FROM t0_aux 3283WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3284DELETE FROM t1 3285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3286CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3287BEGIN 3288SET new.f_int1 = old.f_int1 + @max_row, 3289new.f_int2 = old.f_int2 - @max_row, 3290new.f_charbig = '####updated per update trigger####'; 3291END| 3292UPDATE t1 3293SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3294f_charbig = '####updated per update statement itself####'; 3295 3296# check trigger-9 success: 1 3297DROP TRIGGER trg_2; 3298UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3299f_int2 = CAST(f_char1 AS SIGNED INT), 3300f_charbig = CONCAT('===',f_char1,'==='); 3301CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3302BEGIN 3303SET new.f_int1 = new.f_int1 + @max_row, 3304new.f_int2 = new.f_int2 - @max_row, 3305new.f_charbig = '####updated per update trigger####'; 3306END| 3307UPDATE t1 3308SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3309f_charbig = '####updated per update statement itself####'; 3310 3311# check trigger-10 success: 1 3312DROP TRIGGER trg_2; 3313UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3314f_int2 = CAST(f_char1 AS SIGNED INT), 3315f_charbig = CONCAT('===',f_char1,'==='); 3316CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3317BEGIN 3318SET new.f_int1 = @my_max1 + @counter, 3319new.f_int2 = @my_min2 - @counter, 3320new.f_charbig = '####updated per insert trigger####'; 3321SET @counter = @counter + 1; 3322END| 3323SET @counter = 1; 3324SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3325INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3326SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3327CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3328WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3329ORDER BY f_int1; 3330DROP TRIGGER trg_3; 3331 3332# check trigger-11 success: 1 3333DELETE FROM t1 3334WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3335AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3336AND f_charbig = '####updated per insert trigger####'; 3337CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3338BEGIN 3339SET new.f_int1 = @my_max1 + @counter, 3340new.f_int2 = @my_min2 - @counter, 3341new.f_charbig = '####updated per insert trigger####'; 3342SET @counter = @counter + 1; 3343END| 3344SET @counter = 1; 3345SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3346INSERT INTO t1 (f_char1, f_char2, f_charbig) 3347SELECT CAST(f_int1 AS CHAR), 3348CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3350ORDER BY f_int1; 3351DROP TRIGGER trg_3; 3352 3353# check trigger-12 success: 1 3354DELETE FROM t1 3355WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3356AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3357AND f_charbig = '####updated per insert trigger####'; 3358ANALYZE TABLE t1; 3359Table Op Msg_type Msg_text 3360test.t1 analyze status OK 3361CHECK TABLE t1 EXTENDED; 3362Table Op Msg_type Msg_text 3363test.t1 check status OK 3364CHECKSUM TABLE t1 EXTENDED; 3365Table Checksum 3366test.t1 <some_value> 3367OPTIMIZE TABLE t1; 3368Table Op Msg_type Msg_text 3369test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 3370test.t1 optimize status OK 3371# check layout success: 1 3372REPAIR TABLE t1 EXTENDED; 3373Table Op Msg_type Msg_text 3374test.t1 repair status OK 3375# check layout success: 1 3376TRUNCATE t1; 3377 3378# check TRUNCATE success: 1 3379# check layout success: 1 3380# End usability test (inc/partition_check.inc) 3381DROP TABLE t1; 3382CREATE TABLE t1 ( 3383f_int1 INTEGER, 3384f_int2 INTEGER, 3385f_char1 CHAR(20), 3386f_char2 CHAR(20), 3387f_charbig VARCHAR(1000) 3388 3389) 3390PARTITION BY LIST(ABS(MOD(f_int1,2))) 3391SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 3392(PARTITION part1 VALUES IN (0), 3393PARTITION part2 VALUES IN (1), 3394PARTITION part3 VALUES IN (NULL)); 3395INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3396SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 3397# Start usability test (inc/partition_check.inc) 3398create_command 3399SHOW CREATE TABLE t1; 3400Table Create Table 3401t1 CREATE TABLE `t1` ( 3402 `f_int1` int(11) DEFAULT NULL, 3403 `f_int2` int(11) DEFAULT NULL, 3404 `f_char1` char(20) DEFAULT NULL, 3405 `f_char2` char(20) DEFAULT NULL, 3406 `f_charbig` varchar(1000) DEFAULT NULL 3407) ENGINE=InnoDB DEFAULT CHARSET=latin1 3408/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 3409SUBPARTITION BY KEY (f_int1) 3410SUBPARTITIONS 3 3411(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 3412 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 3413 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 3414 3415unified filelist 3416t1#P#part1#SP#part1sp0.ibd 3417t1#P#part1#SP#part1sp1.ibd 3418t1#P#part1#SP#part1sp2.ibd 3419t1#P#part2#SP#part2sp0.ibd 3420t1#P#part2#SP#part2sp1.ibd 3421t1#P#part2#SP#part2sp2.ibd 3422t1#P#part3#SP#part3sp0.ibd 3423t1#P#part3#SP#part3sp1.ibd 3424t1#P#part3#SP#part3sp2.ibd 3425t1.frm 3426 3427# check prerequisites-1 success: 1 3428# check COUNT(*) success: 1 3429# check MIN/MAX(f_int1) success: 1 3430# check MIN/MAX(f_int2) success: 1 3431INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3432SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3433CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3434WHERE f_int1 IN (2,3); 3435# check prerequisites-3 success: 1 3436DELETE FROM t1 WHERE f_charbig = 'delete me'; 3437# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3438# check read via f_int1 success: 1 3439# check read via f_int2 success: 1 3440 3441# check multiple-1 success: 1 3442DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3443 3444# check multiple-2 success: 1 3445INSERT INTO t1 SELECT * FROM t0_template 3446WHERE MOD(f_int1,3) = 0; 3447 3448# check multiple-3 success: 1 3449UPDATE t1 SET f_int1 = f_int1 + @max_row 3450WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3451AND @max_row_div2 + @max_row_div4; 3452 3453# check multiple-4 success: 1 3454DELETE FROM t1 3455WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3456AND @max_row_div2 + @max_row_div4 + @max_row; 3457 3458# check multiple-5 success: 1 3459SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3460INSERT INTO t1 3461SET f_int1 = @cur_value , f_int2 = @cur_value, 3462f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3463f_charbig = '#SINGLE#'; 3464 3465# check single-1 success: 1 3466SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3467INSERT INTO t1 3468SET f_int1 = @cur_value , f_int2 = @cur_value, 3469f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3470f_charbig = '#SINGLE#'; 3471 3472# check single-2 success: 1 3473SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3474SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3475UPDATE t1 SET f_int1 = @cur_value2 3476WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3477 3478# check single-3 success: 1 3479SET @cur_value1= -1; 3480SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3481UPDATE t1 SET f_int1 = @cur_value1 3482WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3483 3484# check single-4 success: 1 3485SELECT MAX(f_int1) INTO @cur_value FROM t1; 3486DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3487 3488# check single-5 success: 1 3489DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3490 3491# check single-6 success: 1 3492INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3493 3494# check single-7 success: 1 3495DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3496DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3497INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3498f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3499f_charbig = '#NULL#'; 3500INSERT INTO t1 3501SET f_int1 = NULL , f_int2 = -@max_row, 3502f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3503f_charbig = '#NULL#'; 3504# check null success: 1 3505 3506# check null-1 success: 1 3507UPDATE t1 SET f_int1 = -@max_row 3508WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3509AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3510 3511# check null-2 success: 1 3512UPDATE t1 SET f_int1 = NULL 3513WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3514AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3515 3516# check null-3 success: 1 3517DELETE FROM t1 3518WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3519AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3520 3521# check null-4 success: 1 3522DELETE FROM t1 3523WHERE f_int1 = 0 AND f_int2 = 0 3524AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3525AND f_charbig = '#NULL#'; 3526SET AUTOCOMMIT= 0; 3527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3528SELECT f_int1, f_int1, '', '', 'was inserted' 3529FROM t0_template source_tab 3530WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3531 3532# check transactions-1 success: 1 3533COMMIT WORK; 3534 3535# check transactions-2 success: 1 3536ROLLBACK WORK; 3537 3538# check transactions-3 success: 1 3539DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3540COMMIT WORK; 3541ROLLBACK WORK; 3542 3543# check transactions-4 success: 1 3544INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3545SELECT f_int1, f_int1, '', '', 'was inserted' 3546FROM t0_template source_tab 3547WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3548 3549# check transactions-5 success: 1 3550ROLLBACK WORK; 3551 3552# check transactions-6 success: 1 3553# INFO: Storage engine used for t1 seems to be transactional. 3554COMMIT; 3555 3556# check transactions-7 success: 1 3557DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3558COMMIT WORK; 3559SET @@session.sql_mode = 'traditional'; 3560Warnings: 3561Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3562SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3563INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3564SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3565'', '', 'was inserted' FROM t0_template 3566WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3567ERROR 22012: Division by 0 3568COMMIT; 3569 3570# check transactions-8 success: 1 3571# INFO: Storage engine used for t1 seems to be able to revert 3572# changes made by the failing statement. 3573SET @@session.sql_mode = ''; 3574Warnings: 3575Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3576SET AUTOCOMMIT= 1; 3577DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3578COMMIT WORK; 3579UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3580 3581# check special-1 success: 1 3582UPDATE t1 SET f_charbig = ''; 3583 3584# check special-2 success: 1 3585UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3586INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3587SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3589INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3590SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3591'just inserted' FROM t0_template 3592WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3593CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3594BEGIN 3595UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3596f_charbig = 'updated by trigger' 3597 WHERE f_int1 = new.f_int1; 3598END| 3599INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3600SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3601WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3602 3603# check trigger-1 success: 1 3604DROP TRIGGER trg_1; 3605UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3606f_int2 = CAST(f_char1 AS SIGNED INT), 3607f_charbig = 'just inserted' 3608 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3609DELETE FROM t0_aux 3610WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3612SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3613'just inserted' FROM t0_template 3614WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3615CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3616BEGIN 3617UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3618f_charbig = 'updated by trigger' 3619 WHERE f_int1 = new.f_int1; 3620END| 3621INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3622SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3624 3625# check trigger-2 success: 1 3626DROP TRIGGER trg_1; 3627UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3628f_int2 = CAST(f_char1 AS SIGNED INT), 3629f_charbig = 'just inserted' 3630 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3631DELETE FROM t0_aux 3632WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3633INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3634SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3635'just inserted' FROM t0_template 3636WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3637CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3638BEGIN 3639UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3640f_charbig = 'updated by trigger' 3641 WHERE f_int1 = new.f_int1; 3642END| 3643UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3644WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3645 3646# check trigger-3 success: 1 3647DROP TRIGGER trg_1; 3648UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3649f_int2 = CAST(f_char1 AS SIGNED INT), 3650f_charbig = 'just inserted' 3651 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3652DELETE FROM t0_aux 3653WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3654INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3655SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3656'just inserted' FROM t0_template 3657WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3658CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3659BEGIN 3660UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3661f_charbig = 'updated by trigger' 3662 WHERE f_int1 = - old.f_int1; 3663END| 3664UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3665WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3666 3667# check trigger-4 success: 1 3668DROP TRIGGER trg_1; 3669UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3670f_int2 = CAST(f_char1 AS SIGNED INT), 3671f_charbig = 'just inserted' 3672 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3673DELETE FROM t0_aux 3674WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3675INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3676SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3677'just inserted' FROM t0_template 3678WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3679CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3680BEGIN 3681UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3682f_charbig = 'updated by trigger' 3683 WHERE f_int1 = new.f_int1; 3684END| 3685UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3686WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3687 3688# check trigger-5 success: 1 3689DROP TRIGGER trg_1; 3690UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3691f_int2 = CAST(f_char1 AS SIGNED INT), 3692f_charbig = 'just inserted' 3693 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3694DELETE FROM t0_aux 3695WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3696INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3697SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3698'just inserted' FROM t0_template 3699WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3700CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3701BEGIN 3702UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3703f_charbig = 'updated by trigger' 3704 WHERE f_int1 = - old.f_int1; 3705END| 3706UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3707WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3708 3709# check trigger-6 success: 1 3710DROP TRIGGER trg_1; 3711UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3712f_int2 = CAST(f_char1 AS SIGNED INT), 3713f_charbig = 'just inserted' 3714 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3715DELETE FROM t0_aux 3716WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3717INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3718SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3719'just inserted' FROM t0_template 3720WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3721CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3722BEGIN 3723UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3724f_charbig = 'updated by trigger' 3725 WHERE f_int1 = - old.f_int1; 3726END| 3727DELETE FROM t0_aux 3728WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3729 3730# check trigger-7 success: 1 3731DROP TRIGGER trg_1; 3732UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3733f_int2 = CAST(f_char1 AS SIGNED INT), 3734f_charbig = 'just inserted' 3735 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3736DELETE FROM t0_aux 3737WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3738INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3739SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3740'just inserted' FROM t0_template 3741WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3742CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3743BEGIN 3744UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3745f_charbig = 'updated by trigger' 3746 WHERE f_int1 = - old.f_int1; 3747END| 3748DELETE FROM t0_aux 3749WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3750 3751# check trigger-8 success: 1 3752DROP TRIGGER trg_1; 3753UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3754f_int2 = CAST(f_char1 AS SIGNED INT), 3755f_charbig = 'just inserted' 3756 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3757DELETE FROM t0_aux 3758WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3759DELETE FROM t1 3760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3761CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3762BEGIN 3763SET new.f_int1 = old.f_int1 + @max_row, 3764new.f_int2 = old.f_int2 - @max_row, 3765new.f_charbig = '####updated per update trigger####'; 3766END| 3767UPDATE t1 3768SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3769f_charbig = '####updated per update statement itself####'; 3770 3771# check trigger-9 success: 1 3772DROP TRIGGER trg_2; 3773UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3774f_int2 = CAST(f_char1 AS SIGNED INT), 3775f_charbig = CONCAT('===',f_char1,'==='); 3776CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3777BEGIN 3778SET new.f_int1 = new.f_int1 + @max_row, 3779new.f_int2 = new.f_int2 - @max_row, 3780new.f_charbig = '####updated per update trigger####'; 3781END| 3782UPDATE t1 3783SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3784f_charbig = '####updated per update statement itself####'; 3785 3786# check trigger-10 success: 1 3787DROP TRIGGER trg_2; 3788UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3789f_int2 = CAST(f_char1 AS SIGNED INT), 3790f_charbig = CONCAT('===',f_char1,'==='); 3791CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3792BEGIN 3793SET new.f_int1 = @my_max1 + @counter, 3794new.f_int2 = @my_min2 - @counter, 3795new.f_charbig = '####updated per insert trigger####'; 3796SET @counter = @counter + 1; 3797END| 3798SET @counter = 1; 3799SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3800INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3801SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3802CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3803WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3804ORDER BY f_int1; 3805DROP TRIGGER trg_3; 3806 3807# check trigger-11 success: 1 3808DELETE FROM t1 3809WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3810AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3811AND f_charbig = '####updated per insert trigger####'; 3812CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3813BEGIN 3814SET new.f_int1 = @my_max1 + @counter, 3815new.f_int2 = @my_min2 - @counter, 3816new.f_charbig = '####updated per insert trigger####'; 3817SET @counter = @counter + 1; 3818END| 3819SET @counter = 1; 3820SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3821INSERT INTO t1 (f_char1, f_char2, f_charbig) 3822SELECT CAST(f_int1 AS CHAR), 3823CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3824WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3825ORDER BY f_int1; 3826DROP TRIGGER trg_3; 3827 3828# check trigger-12 success: 1 3829DELETE FROM t1 3830WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3831AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3832AND f_charbig = '####updated per insert trigger####'; 3833ANALYZE TABLE t1; 3834Table Op Msg_type Msg_text 3835test.t1 analyze status OK 3836CHECK TABLE t1 EXTENDED; 3837Table Op Msg_type Msg_text 3838test.t1 check status OK 3839CHECKSUM TABLE t1 EXTENDED; 3840Table Checksum 3841test.t1 <some_value> 3842OPTIMIZE TABLE t1; 3843Table Op Msg_type Msg_text 3844test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 3845test.t1 optimize status OK 3846# check layout success: 1 3847REPAIR TABLE t1 EXTENDED; 3848Table Op Msg_type Msg_text 3849test.t1 repair status OK 3850# check layout success: 1 3851TRUNCATE t1; 3852 3853# check TRUNCATE success: 1 3854# check layout success: 1 3855# End usability test (inc/partition_check.inc) 3856DROP TABLE t1; 3857# 1.2 The partitioning function contains two columns. 3858DROP TABLE IF EXISTS t1; 3859CREATE TABLE t1 ( 3860f_int1 INTEGER, 3861f_int2 INTEGER, 3862f_char1 CHAR(20), 3863f_char2 CHAR(20), 3864f_charbig VARCHAR(1000) 3865 3866) 3867PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 3868INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3869SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 3870# Start usability test (inc/partition_check.inc) 3871create_command 3872SHOW CREATE TABLE t1; 3873Table Create Table 3874t1 CREATE TABLE `t1` ( 3875 `f_int1` int(11) DEFAULT NULL, 3876 `f_int2` int(11) DEFAULT NULL, 3877 `f_char1` char(20) DEFAULT NULL, 3878 `f_char2` char(20) DEFAULT NULL, 3879 `f_charbig` varchar(1000) DEFAULT NULL 3880) ENGINE=InnoDB DEFAULT CHARSET=latin1 3881/*!50100 PARTITION BY HASH (f_int1 + f_int2) 3882PARTITIONS 2 */ 3883 3884unified filelist 3885t1#P#p0.ibd 3886t1#P#p1.ibd 3887t1.frm 3888 3889# check prerequisites-1 success: 1 3890# check COUNT(*) success: 1 3891# check MIN/MAX(f_int1) success: 1 3892# check MIN/MAX(f_int2) success: 1 3893INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3894SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3895CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3896WHERE f_int1 IN (2,3); 3897# check prerequisites-3 success: 1 3898DELETE FROM t1 WHERE f_charbig = 'delete me'; 3899# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3900# check read via f_int1 success: 1 3901# check read via f_int2 success: 1 3902 3903# check multiple-1 success: 1 3904DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3905 3906# check multiple-2 success: 1 3907INSERT INTO t1 SELECT * FROM t0_template 3908WHERE MOD(f_int1,3) = 0; 3909 3910# check multiple-3 success: 1 3911UPDATE t1 SET f_int1 = f_int1 + @max_row 3912WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3913AND @max_row_div2 + @max_row_div4; 3914 3915# check multiple-4 success: 1 3916DELETE FROM t1 3917WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3918AND @max_row_div2 + @max_row_div4 + @max_row; 3919 3920# check multiple-5 success: 1 3921SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3922INSERT INTO t1 3923SET f_int1 = @cur_value , f_int2 = @cur_value, 3924f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3925f_charbig = '#SINGLE#'; 3926 3927# check single-1 success: 1 3928SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3929INSERT INTO t1 3930SET f_int1 = @cur_value , f_int2 = @cur_value, 3931f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3932f_charbig = '#SINGLE#'; 3933 3934# check single-2 success: 1 3935SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3936SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3937UPDATE t1 SET f_int1 = @cur_value2 3938WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3939 3940# check single-3 success: 1 3941SET @cur_value1= -1; 3942SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3943UPDATE t1 SET f_int1 = @cur_value1 3944WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3945 3946# check single-4 success: 1 3947SELECT MAX(f_int1) INTO @cur_value FROM t1; 3948DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3949 3950# check single-5 success: 1 3951DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3952 3953# check single-6 success: 1 3954INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3955 3956# check single-7 success: 1 3957DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3958DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3959INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3960f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3961f_charbig = '#NULL#'; 3962INSERT INTO t1 3963SET f_int1 = NULL , f_int2 = -@max_row, 3964f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3965f_charbig = '#NULL#'; 3966# check null success: 1 3967 3968# check null-1 success: 1 3969UPDATE t1 SET f_int1 = -@max_row 3970WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3971AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3972 3973# check null-2 success: 1 3974UPDATE t1 SET f_int1 = NULL 3975WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3976AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3977 3978# check null-3 success: 1 3979DELETE FROM t1 3980WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3981AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3982 3983# check null-4 success: 1 3984DELETE FROM t1 3985WHERE f_int1 = 0 AND f_int2 = 0 3986AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3987AND f_charbig = '#NULL#'; 3988SET AUTOCOMMIT= 0; 3989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3990SELECT f_int1, f_int1, '', '', 'was inserted' 3991FROM t0_template source_tab 3992WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3993 3994# check transactions-1 success: 1 3995COMMIT WORK; 3996 3997# check transactions-2 success: 1 3998ROLLBACK WORK; 3999 4000# check transactions-3 success: 1 4001DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4002COMMIT WORK; 4003ROLLBACK WORK; 4004 4005# check transactions-4 success: 1 4006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4007SELECT f_int1, f_int1, '', '', 'was inserted' 4008FROM t0_template source_tab 4009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4010 4011# check transactions-5 success: 1 4012ROLLBACK WORK; 4013 4014# check transactions-6 success: 1 4015# INFO: Storage engine used for t1 seems to be transactional. 4016COMMIT; 4017 4018# check transactions-7 success: 1 4019DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4020COMMIT WORK; 4021SET @@session.sql_mode = 'traditional'; 4022Warnings: 4023Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4024SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4025INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4026SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4027'', '', 'was inserted' FROM t0_template 4028WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4029ERROR 22012: Division by 0 4030COMMIT; 4031 4032# check transactions-8 success: 1 4033# INFO: Storage engine used for t1 seems to be able to revert 4034# changes made by the failing statement. 4035SET @@session.sql_mode = ''; 4036Warnings: 4037Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4038SET AUTOCOMMIT= 1; 4039DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4040COMMIT WORK; 4041UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4042 4043# check special-1 success: 1 4044UPDATE t1 SET f_charbig = ''; 4045 4046# check special-2 success: 1 4047UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4048INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4049SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4050WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4051INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4052SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4053'just inserted' FROM t0_template 4054WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4055CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4056BEGIN 4057UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4058f_charbig = 'updated by trigger' 4059 WHERE f_int1 = new.f_int1; 4060END| 4061INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4062SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4063WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4064 4065# check trigger-1 success: 1 4066DROP TRIGGER trg_1; 4067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4068f_int2 = CAST(f_char1 AS SIGNED INT), 4069f_charbig = 'just inserted' 4070 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4071DELETE FROM t0_aux 4072WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4073INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4074SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4075'just inserted' FROM t0_template 4076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4077CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4078BEGIN 4079UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4080f_charbig = 'updated by trigger' 4081 WHERE f_int1 = new.f_int1; 4082END| 4083INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4084SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4085WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4086 4087# check trigger-2 success: 1 4088DROP TRIGGER trg_1; 4089UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4090f_int2 = CAST(f_char1 AS SIGNED INT), 4091f_charbig = 'just inserted' 4092 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4093DELETE FROM t0_aux 4094WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4095INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4096SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4097'just inserted' FROM t0_template 4098WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4099CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4100BEGIN 4101UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4102f_charbig = 'updated by trigger' 4103 WHERE f_int1 = new.f_int1; 4104END| 4105UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4106WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4107 4108# check trigger-3 success: 1 4109DROP TRIGGER trg_1; 4110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4111f_int2 = CAST(f_char1 AS SIGNED INT), 4112f_charbig = 'just inserted' 4113 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4114DELETE FROM t0_aux 4115WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4116INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4117SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4118'just inserted' FROM t0_template 4119WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4120CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4121BEGIN 4122UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4123f_charbig = 'updated by trigger' 4124 WHERE f_int1 = - old.f_int1; 4125END| 4126UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4127WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4128 4129# check trigger-4 success: 1 4130DROP TRIGGER trg_1; 4131UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4132f_int2 = CAST(f_char1 AS SIGNED INT), 4133f_charbig = 'just inserted' 4134 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4135DELETE FROM t0_aux 4136WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4137INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4138SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4139'just inserted' FROM t0_template 4140WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4141CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4142BEGIN 4143UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4144f_charbig = 'updated by trigger' 4145 WHERE f_int1 = new.f_int1; 4146END| 4147UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4148WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4149 4150# check trigger-5 success: 1 4151DROP TRIGGER trg_1; 4152UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4153f_int2 = CAST(f_char1 AS SIGNED INT), 4154f_charbig = 'just inserted' 4155 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4156DELETE FROM t0_aux 4157WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4158INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4159SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4160'just inserted' FROM t0_template 4161WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4162CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4163BEGIN 4164UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4165f_charbig = 'updated by trigger' 4166 WHERE f_int1 = - old.f_int1; 4167END| 4168UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4169WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4170 4171# check trigger-6 success: 1 4172DROP TRIGGER trg_1; 4173UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4174f_int2 = CAST(f_char1 AS SIGNED INT), 4175f_charbig = 'just inserted' 4176 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4177DELETE FROM t0_aux 4178WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4179INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4180SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4181'just inserted' FROM t0_template 4182WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4183CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4184BEGIN 4185UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4186f_charbig = 'updated by trigger' 4187 WHERE f_int1 = - old.f_int1; 4188END| 4189DELETE FROM t0_aux 4190WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4191 4192# check trigger-7 success: 1 4193DROP TRIGGER trg_1; 4194UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4195f_int2 = CAST(f_char1 AS SIGNED INT), 4196f_charbig = 'just inserted' 4197 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4198DELETE FROM t0_aux 4199WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4200INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4201SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4202'just inserted' FROM t0_template 4203WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4204CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4205BEGIN 4206UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4207f_charbig = 'updated by trigger' 4208 WHERE f_int1 = - old.f_int1; 4209END| 4210DELETE FROM t0_aux 4211WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4212 4213# check trigger-8 success: 1 4214DROP TRIGGER trg_1; 4215UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4216f_int2 = CAST(f_char1 AS SIGNED INT), 4217f_charbig = 'just inserted' 4218 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4219DELETE FROM t0_aux 4220WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4221DELETE FROM t1 4222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4223CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4224BEGIN 4225SET new.f_int1 = old.f_int1 + @max_row, 4226new.f_int2 = old.f_int2 - @max_row, 4227new.f_charbig = '####updated per update trigger####'; 4228END| 4229UPDATE t1 4230SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4231f_charbig = '####updated per update statement itself####'; 4232 4233# check trigger-9 success: 1 4234DROP TRIGGER trg_2; 4235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4236f_int2 = CAST(f_char1 AS SIGNED INT), 4237f_charbig = CONCAT('===',f_char1,'==='); 4238CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4239BEGIN 4240SET new.f_int1 = new.f_int1 + @max_row, 4241new.f_int2 = new.f_int2 - @max_row, 4242new.f_charbig = '####updated per update trigger####'; 4243END| 4244UPDATE t1 4245SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4246f_charbig = '####updated per update statement itself####'; 4247 4248# check trigger-10 success: 1 4249DROP TRIGGER trg_2; 4250UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4251f_int2 = CAST(f_char1 AS SIGNED INT), 4252f_charbig = CONCAT('===',f_char1,'==='); 4253CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4254BEGIN 4255SET new.f_int1 = @my_max1 + @counter, 4256new.f_int2 = @my_min2 - @counter, 4257new.f_charbig = '####updated per insert trigger####'; 4258SET @counter = @counter + 1; 4259END| 4260SET @counter = 1; 4261SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4262INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4263SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4264CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4265WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4266ORDER BY f_int1; 4267DROP TRIGGER trg_3; 4268 4269# check trigger-11 success: 1 4270DELETE FROM t1 4271WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4272AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4273AND f_charbig = '####updated per insert trigger####'; 4274CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4275BEGIN 4276SET new.f_int1 = @my_max1 + @counter, 4277new.f_int2 = @my_min2 - @counter, 4278new.f_charbig = '####updated per insert trigger####'; 4279SET @counter = @counter + 1; 4280END| 4281SET @counter = 1; 4282SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4283INSERT INTO t1 (f_char1, f_char2, f_charbig) 4284SELECT CAST(f_int1 AS CHAR), 4285CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4286WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4287ORDER BY f_int1; 4288DROP TRIGGER trg_3; 4289 4290# check trigger-12 success: 1 4291DELETE FROM t1 4292WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4293AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4294AND f_charbig = '####updated per insert trigger####'; 4295ANALYZE TABLE t1; 4296Table Op Msg_type Msg_text 4297test.t1 analyze status OK 4298CHECK TABLE t1 EXTENDED; 4299Table Op Msg_type Msg_text 4300test.t1 check status OK 4301CHECKSUM TABLE t1 EXTENDED; 4302Table Checksum 4303test.t1 <some_value> 4304OPTIMIZE TABLE t1; 4305Table Op Msg_type Msg_text 4306test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 4307test.t1 optimize status OK 4308# check layout success: 1 4309REPAIR TABLE t1 EXTENDED; 4310Table Op Msg_type Msg_text 4311test.t1 repair status OK 4312# check layout success: 1 4313TRUNCATE t1; 4314 4315# check TRUNCATE success: 1 4316# check layout success: 1 4317# End usability test (inc/partition_check.inc) 4318DROP TABLE t1; 4319CREATE TABLE t1 ( 4320f_int1 INTEGER, 4321f_int2 INTEGER, 4322f_char1 CHAR(20), 4323f_char2 CHAR(20), 4324f_charbig VARCHAR(1000) 4325 4326) 4327PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 4328INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4329SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 4330# Start usability test (inc/partition_check.inc) 4331create_command 4332SHOW CREATE TABLE t1; 4333Table Create Table 4334t1 CREATE TABLE `t1` ( 4335 `f_int1` int(11) DEFAULT NULL, 4336 `f_int2` int(11) DEFAULT NULL, 4337 `f_char1` char(20) DEFAULT NULL, 4338 `f_char2` char(20) DEFAULT NULL, 4339 `f_charbig` varchar(1000) DEFAULT NULL 4340) ENGINE=InnoDB DEFAULT CHARSET=latin1 4341/*!50100 PARTITION BY KEY (f_int1,f_int2) 4342PARTITIONS 5 */ 4343 4344unified filelist 4345t1#P#p0.ibd 4346t1#P#p1.ibd 4347t1#P#p2.ibd 4348t1#P#p3.ibd 4349t1#P#p4.ibd 4350t1.frm 4351 4352# check prerequisites-1 success: 1 4353# check COUNT(*) success: 1 4354# check MIN/MAX(f_int1) success: 1 4355# check MIN/MAX(f_int2) success: 1 4356INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4357SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4358CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4359WHERE f_int1 IN (2,3); 4360# check prerequisites-3 success: 1 4361DELETE FROM t1 WHERE f_charbig = 'delete me'; 4362# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 4363# check read via f_int1 success: 1 4364# check read via f_int2 success: 1 4365 4366# check multiple-1 success: 1 4367DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4368 4369# check multiple-2 success: 1 4370INSERT INTO t1 SELECT * FROM t0_template 4371WHERE MOD(f_int1,3) = 0; 4372 4373# check multiple-3 success: 1 4374UPDATE t1 SET f_int1 = f_int1 + @max_row 4375WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4376AND @max_row_div2 + @max_row_div4; 4377 4378# check multiple-4 success: 1 4379DELETE FROM t1 4380WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4381AND @max_row_div2 + @max_row_div4 + @max_row; 4382 4383# check multiple-5 success: 1 4384SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4385INSERT INTO t1 4386SET f_int1 = @cur_value , f_int2 = @cur_value, 4387f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4388f_charbig = '#SINGLE#'; 4389 4390# check single-1 success: 1 4391SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4392INSERT INTO t1 4393SET f_int1 = @cur_value , f_int2 = @cur_value, 4394f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4395f_charbig = '#SINGLE#'; 4396 4397# check single-2 success: 1 4398SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4399SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4400UPDATE t1 SET f_int1 = @cur_value2 4401WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4402 4403# check single-3 success: 1 4404SET @cur_value1= -1; 4405SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4406UPDATE t1 SET f_int1 = @cur_value1 4407WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4408 4409# check single-4 success: 1 4410SELECT MAX(f_int1) INTO @cur_value FROM t1; 4411DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4412 4413# check single-5 success: 1 4414DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4415 4416# check single-6 success: 1 4417INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4418 4419# check single-7 success: 1 4420DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4421DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4422INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4423f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4424f_charbig = '#NULL#'; 4425INSERT INTO t1 4426SET f_int1 = NULL , f_int2 = -@max_row, 4427f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4428f_charbig = '#NULL#'; 4429# check null success: 1 4430 4431# check null-1 success: 1 4432UPDATE t1 SET f_int1 = -@max_row 4433WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4434AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4435 4436# check null-2 success: 1 4437UPDATE t1 SET f_int1 = NULL 4438WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4439AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4440 4441# check null-3 success: 1 4442DELETE FROM t1 4443WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4444AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4445 4446# check null-4 success: 1 4447DELETE FROM t1 4448WHERE f_int1 = 0 AND f_int2 = 0 4449AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4450AND f_charbig = '#NULL#'; 4451SET AUTOCOMMIT= 0; 4452INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4453SELECT f_int1, f_int1, '', '', 'was inserted' 4454FROM t0_template source_tab 4455WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4456 4457# check transactions-1 success: 1 4458COMMIT WORK; 4459 4460# check transactions-2 success: 1 4461ROLLBACK WORK; 4462 4463# check transactions-3 success: 1 4464DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4465COMMIT WORK; 4466ROLLBACK WORK; 4467 4468# check transactions-4 success: 1 4469INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4470SELECT f_int1, f_int1, '', '', 'was inserted' 4471FROM t0_template source_tab 4472WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4473 4474# check transactions-5 success: 1 4475ROLLBACK WORK; 4476 4477# check transactions-6 success: 1 4478# INFO: Storage engine used for t1 seems to be transactional. 4479COMMIT; 4480 4481# check transactions-7 success: 1 4482DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4483COMMIT WORK; 4484SET @@session.sql_mode = 'traditional'; 4485Warnings: 4486Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4487SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4488INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4489SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4490'', '', 'was inserted' FROM t0_template 4491WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4492ERROR 22012: Division by 0 4493COMMIT; 4494 4495# check transactions-8 success: 1 4496# INFO: Storage engine used for t1 seems to be able to revert 4497# changes made by the failing statement. 4498SET @@session.sql_mode = ''; 4499Warnings: 4500Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4501SET AUTOCOMMIT= 1; 4502DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4503COMMIT WORK; 4504UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4505 4506# check special-1 success: 1 4507UPDATE t1 SET f_charbig = ''; 4508 4509# check special-2 success: 1 4510UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4511INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4512SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4513WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4514INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4515SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4516'just inserted' FROM t0_template 4517WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4518CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4519BEGIN 4520UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4521f_charbig = 'updated by trigger' 4522 WHERE f_int1 = new.f_int1; 4523END| 4524INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4525SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4526WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4527 4528# check trigger-1 success: 1 4529DROP TRIGGER trg_1; 4530UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4531f_int2 = CAST(f_char1 AS SIGNED INT), 4532f_charbig = 'just inserted' 4533 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4534DELETE FROM t0_aux 4535WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4536INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4537SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4538'just inserted' FROM t0_template 4539WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4540CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4541BEGIN 4542UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4543f_charbig = 'updated by trigger' 4544 WHERE f_int1 = new.f_int1; 4545END| 4546INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4547SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4549 4550# check trigger-2 success: 1 4551DROP TRIGGER trg_1; 4552UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4553f_int2 = CAST(f_char1 AS SIGNED INT), 4554f_charbig = 'just inserted' 4555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4556DELETE FROM t0_aux 4557WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4558INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4559SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4560'just inserted' FROM t0_template 4561WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4562CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4563BEGIN 4564UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4565f_charbig = 'updated by trigger' 4566 WHERE f_int1 = new.f_int1; 4567END| 4568UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4569WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4570 4571# check trigger-3 success: 1 4572DROP TRIGGER trg_1; 4573UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4574f_int2 = CAST(f_char1 AS SIGNED INT), 4575f_charbig = 'just inserted' 4576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4577DELETE FROM t0_aux 4578WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4579INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4580SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4581'just inserted' FROM t0_template 4582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4583CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4584BEGIN 4585UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4586f_charbig = 'updated by trigger' 4587 WHERE f_int1 = - old.f_int1; 4588END| 4589UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4590WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4591 4592# check trigger-4 success: 1 4593DROP TRIGGER trg_1; 4594UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4595f_int2 = CAST(f_char1 AS SIGNED INT), 4596f_charbig = 'just inserted' 4597 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4598DELETE FROM t0_aux 4599WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4600INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4601SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4602'just inserted' FROM t0_template 4603WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4604CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4605BEGIN 4606UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4607f_charbig = 'updated by trigger' 4608 WHERE f_int1 = new.f_int1; 4609END| 4610UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4611WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4612 4613# check trigger-5 success: 1 4614DROP TRIGGER trg_1; 4615UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4616f_int2 = CAST(f_char1 AS SIGNED INT), 4617f_charbig = 'just inserted' 4618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4619DELETE FROM t0_aux 4620WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4621INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4622SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4623'just inserted' FROM t0_template 4624WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4625CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4626BEGIN 4627UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4628f_charbig = 'updated by trigger' 4629 WHERE f_int1 = - old.f_int1; 4630END| 4631UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4632WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4633 4634# check trigger-6 success: 1 4635DROP TRIGGER trg_1; 4636UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4637f_int2 = CAST(f_char1 AS SIGNED INT), 4638f_charbig = 'just inserted' 4639 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4640DELETE FROM t0_aux 4641WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4642INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4643SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4644'just inserted' FROM t0_template 4645WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4646CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4647BEGIN 4648UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4649f_charbig = 'updated by trigger' 4650 WHERE f_int1 = - old.f_int1; 4651END| 4652DELETE FROM t0_aux 4653WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4654 4655# check trigger-7 success: 1 4656DROP TRIGGER trg_1; 4657UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4658f_int2 = CAST(f_char1 AS SIGNED INT), 4659f_charbig = 'just inserted' 4660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4661DELETE FROM t0_aux 4662WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4663INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4664SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4665'just inserted' FROM t0_template 4666WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4667CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4668BEGIN 4669UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4670f_charbig = 'updated by trigger' 4671 WHERE f_int1 = - old.f_int1; 4672END| 4673DELETE FROM t0_aux 4674WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4675 4676# check trigger-8 success: 1 4677DROP TRIGGER trg_1; 4678UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4679f_int2 = CAST(f_char1 AS SIGNED INT), 4680f_charbig = 'just inserted' 4681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4682DELETE FROM t0_aux 4683WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4684DELETE FROM t1 4685WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4686CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4687BEGIN 4688SET new.f_int1 = old.f_int1 + @max_row, 4689new.f_int2 = old.f_int2 - @max_row, 4690new.f_charbig = '####updated per update trigger####'; 4691END| 4692UPDATE t1 4693SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4694f_charbig = '####updated per update statement itself####'; 4695 4696# check trigger-9 success: 1 4697DROP TRIGGER trg_2; 4698UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4699f_int2 = CAST(f_char1 AS SIGNED INT), 4700f_charbig = CONCAT('===',f_char1,'==='); 4701CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4702BEGIN 4703SET new.f_int1 = new.f_int1 + @max_row, 4704new.f_int2 = new.f_int2 - @max_row, 4705new.f_charbig = '####updated per update trigger####'; 4706END| 4707UPDATE t1 4708SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4709f_charbig = '####updated per update statement itself####'; 4710 4711# check trigger-10 success: 1 4712DROP TRIGGER trg_2; 4713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4714f_int2 = CAST(f_char1 AS SIGNED INT), 4715f_charbig = CONCAT('===',f_char1,'==='); 4716CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4717BEGIN 4718SET new.f_int1 = @my_max1 + @counter, 4719new.f_int2 = @my_min2 - @counter, 4720new.f_charbig = '####updated per insert trigger####'; 4721SET @counter = @counter + 1; 4722END| 4723SET @counter = 1; 4724SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4725INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4726SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4727CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4728WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4729ORDER BY f_int1; 4730DROP TRIGGER trg_3; 4731 4732# check trigger-11 success: 1 4733DELETE FROM t1 4734WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4735AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4736AND f_charbig = '####updated per insert trigger####'; 4737CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4738BEGIN 4739SET new.f_int1 = @my_max1 + @counter, 4740new.f_int2 = @my_min2 - @counter, 4741new.f_charbig = '####updated per insert trigger####'; 4742SET @counter = @counter + 1; 4743END| 4744SET @counter = 1; 4745SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4746INSERT INTO t1 (f_char1, f_char2, f_charbig) 4747SELECT CAST(f_int1 AS CHAR), 4748CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4750ORDER BY f_int1; 4751DROP TRIGGER trg_3; 4752 4753# check trigger-12 success: 1 4754DELETE FROM t1 4755WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4756AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4757AND f_charbig = '####updated per insert trigger####'; 4758ANALYZE TABLE t1; 4759Table Op Msg_type Msg_text 4760test.t1 analyze status OK 4761CHECK TABLE t1 EXTENDED; 4762Table Op Msg_type Msg_text 4763test.t1 check status OK 4764CHECKSUM TABLE t1 EXTENDED; 4765Table Checksum 4766test.t1 <some_value> 4767OPTIMIZE TABLE t1; 4768Table Op Msg_type Msg_text 4769test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 4770test.t1 optimize status OK 4771# check layout success: 1 4772REPAIR TABLE t1 EXTENDED; 4773Table Op Msg_type Msg_text 4774test.t1 repair status OK 4775# check layout success: 1 4776TRUNCATE t1; 4777 4778# check TRUNCATE success: 1 4779# check layout success: 1 4780# End usability test (inc/partition_check.inc) 4781DROP TABLE t1; 4782CREATE TABLE t1 ( 4783f_int1 INTEGER, 4784f_int2 INTEGER, 4785f_char1 CHAR(20), 4786f_char2 CHAR(20), 4787f_charbig VARCHAR(1000) 4788 4789) 4790PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 4791(PARTITION part_3 VALUES IN (-3), 4792PARTITION part_2 VALUES IN (-2), 4793PARTITION part_1 VALUES IN (-1), 4794PARTITION part_N VALUES IN (NULL), 4795PARTITION part0 VALUES IN (0), 4796PARTITION part1 VALUES IN (1), 4797PARTITION part2 VALUES IN (2), 4798PARTITION part3 VALUES IN (3)); 4799INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4800SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 4801# Start usability test (inc/partition_check.inc) 4802create_command 4803SHOW CREATE TABLE t1; 4804Table Create Table 4805t1 CREATE TABLE `t1` ( 4806 `f_int1` int(11) DEFAULT NULL, 4807 `f_int2` int(11) DEFAULT NULL, 4808 `f_char1` char(20) DEFAULT NULL, 4809 `f_char2` char(20) DEFAULT NULL, 4810 `f_charbig` varchar(1000) DEFAULT NULL 4811) ENGINE=InnoDB DEFAULT CHARSET=latin1 4812/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 4813(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 4814 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 4815 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 4816 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 4817 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 4818 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 4819 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 4820 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 4821 4822unified filelist 4823t1#P#part0.ibd 4824t1#P#part1.ibd 4825t1#P#part2.ibd 4826t1#P#part3.ibd 4827t1#P#part_1.ibd 4828t1#P#part_2.ibd 4829t1#P#part_3.ibd 4830t1#P#part_N.ibd 4831t1.frm 4832 4833# check prerequisites-1 success: 1 4834# check COUNT(*) success: 1 4835# check MIN/MAX(f_int1) success: 1 4836# check MIN/MAX(f_int2) success: 1 4837INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4838SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4839CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4840WHERE f_int1 IN (2,3); 4841# check prerequisites-3 success: 1 4842DELETE FROM t1 WHERE f_charbig = 'delete me'; 4843# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 4844# check read via f_int1 success: 1 4845# check read via f_int2 success: 1 4846 4847# check multiple-1 success: 1 4848DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4849 4850# check multiple-2 success: 1 4851INSERT INTO t1 SELECT * FROM t0_template 4852WHERE MOD(f_int1,3) = 0; 4853 4854# check multiple-3 success: 1 4855UPDATE t1 SET f_int1 = f_int1 + @max_row 4856WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4857AND @max_row_div2 + @max_row_div4; 4858 4859# check multiple-4 success: 1 4860DELETE FROM t1 4861WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4862AND @max_row_div2 + @max_row_div4 + @max_row; 4863 4864# check multiple-5 success: 1 4865SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4866INSERT INTO t1 4867SET f_int1 = @cur_value , f_int2 = @cur_value, 4868f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4869f_charbig = '#SINGLE#'; 4870 4871# check single-1 success: 1 4872SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4873INSERT INTO t1 4874SET f_int1 = @cur_value , f_int2 = @cur_value, 4875f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4876f_charbig = '#SINGLE#'; 4877 4878# check single-2 success: 1 4879SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4880SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4881UPDATE t1 SET f_int1 = @cur_value2 4882WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4883 4884# check single-3 success: 1 4885SET @cur_value1= -1; 4886SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4887UPDATE t1 SET f_int1 = @cur_value1 4888WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4889 4890# check single-4 success: 1 4891SELECT MAX(f_int1) INTO @cur_value FROM t1; 4892DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4893 4894# check single-5 success: 1 4895DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4896 4897# check single-6 success: 1 4898INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4899 4900# check single-7 success: 1 4901DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4902DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4903INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4904f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4905f_charbig = '#NULL#'; 4906INSERT INTO t1 4907SET f_int1 = NULL , f_int2 = -@max_row, 4908f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4909f_charbig = '#NULL#'; 4910# check null success: 1 4911 4912# check null-1 success: 1 4913UPDATE t1 SET f_int1 = -@max_row 4914WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4915AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4916 4917# check null-2 success: 1 4918UPDATE t1 SET f_int1 = NULL 4919WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4920AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4921 4922# check null-3 success: 1 4923DELETE FROM t1 4924WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4925AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4926 4927# check null-4 success: 1 4928DELETE FROM t1 4929WHERE f_int1 = 0 AND f_int2 = 0 4930AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4931AND f_charbig = '#NULL#'; 4932SET AUTOCOMMIT= 0; 4933INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4934SELECT f_int1, f_int1, '', '', 'was inserted' 4935FROM t0_template source_tab 4936WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4937 4938# check transactions-1 success: 1 4939COMMIT WORK; 4940 4941# check transactions-2 success: 1 4942ROLLBACK WORK; 4943 4944# check transactions-3 success: 1 4945DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4946COMMIT WORK; 4947ROLLBACK WORK; 4948 4949# check transactions-4 success: 1 4950INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4951SELECT f_int1, f_int1, '', '', 'was inserted' 4952FROM t0_template source_tab 4953WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4954 4955# check transactions-5 success: 1 4956ROLLBACK WORK; 4957 4958# check transactions-6 success: 1 4959# INFO: Storage engine used for t1 seems to be transactional. 4960COMMIT; 4961 4962# check transactions-7 success: 1 4963DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4964COMMIT WORK; 4965SET @@session.sql_mode = 'traditional'; 4966Warnings: 4967Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4968SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4969INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4970SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4971'', '', 'was inserted' FROM t0_template 4972WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4973ERROR 22012: Division by 0 4974COMMIT; 4975 4976# check transactions-8 success: 1 4977# INFO: Storage engine used for t1 seems to be able to revert 4978# changes made by the failing statement. 4979SET @@session.sql_mode = ''; 4980Warnings: 4981Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4982SET AUTOCOMMIT= 1; 4983DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4984COMMIT WORK; 4985UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4986 4987# check special-1 success: 1 4988UPDATE t1 SET f_charbig = ''; 4989 4990# check special-2 success: 1 4991UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4992INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4993SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4994WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4995INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4996SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4997'just inserted' FROM t0_template 4998WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4999CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5000BEGIN 5001UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5002f_charbig = 'updated by trigger' 5003 WHERE f_int1 = new.f_int1; 5004END| 5005INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5006SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5007WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5008 5009# check trigger-1 success: 1 5010DROP TRIGGER trg_1; 5011UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5012f_int2 = CAST(f_char1 AS SIGNED INT), 5013f_charbig = 'just inserted' 5014 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5015DELETE FROM t0_aux 5016WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5017INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5018SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5019'just inserted' FROM t0_template 5020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5021CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5022BEGIN 5023UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5024f_charbig = 'updated by trigger' 5025 WHERE f_int1 = new.f_int1; 5026END| 5027INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5028SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5029WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5030 5031# check trigger-2 success: 1 5032DROP TRIGGER trg_1; 5033UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5034f_int2 = CAST(f_char1 AS SIGNED INT), 5035f_charbig = 'just inserted' 5036 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5037DELETE FROM t0_aux 5038WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5039INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5040SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5041'just inserted' FROM t0_template 5042WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5043CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5044BEGIN 5045UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5046f_charbig = 'updated by trigger' 5047 WHERE f_int1 = new.f_int1; 5048END| 5049UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5050WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5051 5052# check trigger-3 success: 1 5053DROP TRIGGER trg_1; 5054UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5055f_int2 = CAST(f_char1 AS SIGNED INT), 5056f_charbig = 'just inserted' 5057 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5058DELETE FROM t0_aux 5059WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5060INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5061SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5062'just inserted' FROM t0_template 5063WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5064CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5065BEGIN 5066UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5067f_charbig = 'updated by trigger' 5068 WHERE f_int1 = - old.f_int1; 5069END| 5070UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5071WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5072 5073# check trigger-4 success: 1 5074DROP TRIGGER trg_1; 5075UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5076f_int2 = CAST(f_char1 AS SIGNED INT), 5077f_charbig = 'just inserted' 5078 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5079DELETE FROM t0_aux 5080WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5081INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5082SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5083'just inserted' FROM t0_template 5084WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5085CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5086BEGIN 5087UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5088f_charbig = 'updated by trigger' 5089 WHERE f_int1 = new.f_int1; 5090END| 5091UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5092WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5093 5094# check trigger-5 success: 1 5095DROP TRIGGER trg_1; 5096UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5097f_int2 = CAST(f_char1 AS SIGNED INT), 5098f_charbig = 'just inserted' 5099 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5100DELETE FROM t0_aux 5101WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5103SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5104'just inserted' FROM t0_template 5105WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5106CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5107BEGIN 5108UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5109f_charbig = 'updated by trigger' 5110 WHERE f_int1 = - old.f_int1; 5111END| 5112UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5113WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5114 5115# check trigger-6 success: 1 5116DROP TRIGGER trg_1; 5117UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5118f_int2 = CAST(f_char1 AS SIGNED INT), 5119f_charbig = 'just inserted' 5120 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5121DELETE FROM t0_aux 5122WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5123INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5124SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5125'just inserted' FROM t0_template 5126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5127CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5128BEGIN 5129UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5130f_charbig = 'updated by trigger' 5131 WHERE f_int1 = - old.f_int1; 5132END| 5133DELETE FROM t0_aux 5134WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5135 5136# check trigger-7 success: 1 5137DROP TRIGGER trg_1; 5138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5139f_int2 = CAST(f_char1 AS SIGNED INT), 5140f_charbig = 'just inserted' 5141 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5142DELETE FROM t0_aux 5143WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5144INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5145SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5146'just inserted' FROM t0_template 5147WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5148CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5149BEGIN 5150UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5151f_charbig = 'updated by trigger' 5152 WHERE f_int1 = - old.f_int1; 5153END| 5154DELETE FROM t0_aux 5155WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5156 5157# check trigger-8 success: 1 5158DROP TRIGGER trg_1; 5159UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5160f_int2 = CAST(f_char1 AS SIGNED INT), 5161f_charbig = 'just inserted' 5162 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5163DELETE FROM t0_aux 5164WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5165DELETE FROM t1 5166WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5167CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5168BEGIN 5169SET new.f_int1 = old.f_int1 + @max_row, 5170new.f_int2 = old.f_int2 - @max_row, 5171new.f_charbig = '####updated per update trigger####'; 5172END| 5173UPDATE t1 5174SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5175f_charbig = '####updated per update statement itself####'; 5176 5177# check trigger-9 success: 1 5178DROP TRIGGER trg_2; 5179UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5180f_int2 = CAST(f_char1 AS SIGNED INT), 5181f_charbig = CONCAT('===',f_char1,'==='); 5182CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5183BEGIN 5184SET new.f_int1 = new.f_int1 + @max_row, 5185new.f_int2 = new.f_int2 - @max_row, 5186new.f_charbig = '####updated per update trigger####'; 5187END| 5188UPDATE t1 5189SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5190f_charbig = '####updated per update statement itself####'; 5191 5192# check trigger-10 success: 1 5193DROP TRIGGER trg_2; 5194UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5195f_int2 = CAST(f_char1 AS SIGNED INT), 5196f_charbig = CONCAT('===',f_char1,'==='); 5197CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5198BEGIN 5199SET new.f_int1 = @my_max1 + @counter, 5200new.f_int2 = @my_min2 - @counter, 5201new.f_charbig = '####updated per insert trigger####'; 5202SET @counter = @counter + 1; 5203END| 5204SET @counter = 1; 5205SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5206INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5207SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5208CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5209WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5210ORDER BY f_int1; 5211DROP TRIGGER trg_3; 5212 5213# check trigger-11 success: 1 5214DELETE FROM t1 5215WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5216AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5217AND f_charbig = '####updated per insert trigger####'; 5218CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5219BEGIN 5220SET new.f_int1 = @my_max1 + @counter, 5221new.f_int2 = @my_min2 - @counter, 5222new.f_charbig = '####updated per insert trigger####'; 5223SET @counter = @counter + 1; 5224END| 5225SET @counter = 1; 5226SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5227INSERT INTO t1 (f_char1, f_char2, f_charbig) 5228SELECT CAST(f_int1 AS CHAR), 5229CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5230WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5231ORDER BY f_int1; 5232DROP TRIGGER trg_3; 5233 5234# check trigger-12 success: 1 5235DELETE FROM t1 5236WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5237AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5238AND f_charbig = '####updated per insert trigger####'; 5239ANALYZE TABLE t1; 5240Table Op Msg_type Msg_text 5241test.t1 analyze status OK 5242CHECK TABLE t1 EXTENDED; 5243Table Op Msg_type Msg_text 5244test.t1 check status OK 5245CHECKSUM TABLE t1 EXTENDED; 5246Table Checksum 5247test.t1 <some_value> 5248OPTIMIZE TABLE t1; 5249Table Op Msg_type Msg_text 5250test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 5251test.t1 optimize status OK 5252# check layout success: 1 5253REPAIR TABLE t1 EXTENDED; 5254Table Op Msg_type Msg_text 5255test.t1 repair status OK 5256# check layout success: 1 5257TRUNCATE t1; 5258 5259# check TRUNCATE success: 1 5260# check layout success: 1 5261# End usability test (inc/partition_check.inc) 5262DROP TABLE t1; 5263CREATE TABLE t1 ( 5264f_int1 INTEGER, 5265f_int2 INTEGER, 5266f_char1 CHAR(20), 5267f_char2 CHAR(20), 5268f_charbig VARCHAR(1000) 5269 5270) 5271PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 5272(PARTITION parta VALUES LESS THAN (0), 5273PARTITION partb VALUES LESS THAN (5), 5274PARTITION partc VALUES LESS THAN (10), 5275PARTITION partd VALUES LESS THAN (10 + 5), 5276PARTITION parte VALUES LESS THAN (20), 5277PARTITION partf VALUES LESS THAN (2147483646)); 5278INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5279SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 5280# Start usability test (inc/partition_check.inc) 5281create_command 5282SHOW CREATE TABLE t1; 5283Table Create Table 5284t1 CREATE TABLE `t1` ( 5285 `f_int1` int(11) DEFAULT NULL, 5286 `f_int2` int(11) DEFAULT NULL, 5287 `f_char1` char(20) DEFAULT NULL, 5288 `f_char2` char(20) DEFAULT NULL, 5289 `f_charbig` varchar(1000) DEFAULT NULL 5290) ENGINE=InnoDB DEFAULT CHARSET=latin1 5291/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 5292(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 5293 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 5294 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 5295 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 5296 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 5297 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 5298 5299unified filelist 5300t1#P#parta.ibd 5301t1#P#partb.ibd 5302t1#P#partc.ibd 5303t1#P#partd.ibd 5304t1#P#parte.ibd 5305t1#P#partf.ibd 5306t1.frm 5307 5308# check prerequisites-1 success: 1 5309# check COUNT(*) success: 1 5310# check MIN/MAX(f_int1) success: 1 5311# check MIN/MAX(f_int2) success: 1 5312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5313SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5314CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5315WHERE f_int1 IN (2,3); 5316# check prerequisites-3 success: 1 5317DELETE FROM t1 WHERE f_charbig = 'delete me'; 5318# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 5319# check read via f_int1 success: 1 5320# check read via f_int2 success: 1 5321 5322# check multiple-1 success: 1 5323DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5324 5325# check multiple-2 success: 1 5326INSERT INTO t1 SELECT * FROM t0_template 5327WHERE MOD(f_int1,3) = 0; 5328 5329# check multiple-3 success: 1 5330UPDATE t1 SET f_int1 = f_int1 + @max_row 5331WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5332AND @max_row_div2 + @max_row_div4; 5333 5334# check multiple-4 success: 1 5335DELETE FROM t1 5336WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5337AND @max_row_div2 + @max_row_div4 + @max_row; 5338 5339# check multiple-5 success: 1 5340SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5341INSERT INTO t1 5342SET f_int1 = @cur_value , f_int2 = @cur_value, 5343f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5344f_charbig = '#SINGLE#'; 5345 5346# check single-1 success: 1 5347SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5348INSERT INTO t1 5349SET f_int1 = @cur_value , f_int2 = @cur_value, 5350f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5351f_charbig = '#SINGLE#'; 5352 5353# check single-2 success: 1 5354SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5355SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5356UPDATE t1 SET f_int1 = @cur_value2 5357WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5358 5359# check single-3 success: 1 5360SET @cur_value1= -1; 5361SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5362UPDATE t1 SET f_int1 = @cur_value1 5363WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5364 5365# check single-4 success: 1 5366SELECT MAX(f_int1) INTO @cur_value FROM t1; 5367DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5368 5369# check single-5 success: 1 5370DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5371 5372# check single-6 success: 1 5373INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5374ERROR HY000: Table has no partition for value 2147483647 5375DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5376INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5377f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5378f_charbig = '#NULL#'; 5379INSERT INTO t1 5380SET f_int1 = NULL , f_int2 = -@max_row, 5381f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5382f_charbig = '#NULL#'; 5383# check null success: 1 5384 5385# check null-1 success: 1 5386UPDATE t1 SET f_int1 = -@max_row 5387WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5388AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5389 5390# check null-2 success: 1 5391UPDATE t1 SET f_int1 = NULL 5392WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5393AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5394 5395# check null-3 success: 1 5396DELETE FROM t1 5397WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5398AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5399 5400# check null-4 success: 1 5401DELETE FROM t1 5402WHERE f_int1 = 0 AND f_int2 = 0 5403AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5404AND f_charbig = '#NULL#'; 5405SET AUTOCOMMIT= 0; 5406INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5407SELECT f_int1, f_int1, '', '', 'was inserted' 5408FROM t0_template source_tab 5409WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5410 5411# check transactions-1 success: 1 5412COMMIT WORK; 5413 5414# check transactions-2 success: 1 5415ROLLBACK WORK; 5416 5417# check transactions-3 success: 1 5418DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5419COMMIT WORK; 5420ROLLBACK WORK; 5421 5422# check transactions-4 success: 1 5423INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5424SELECT f_int1, f_int1, '', '', 'was inserted' 5425FROM t0_template source_tab 5426WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5427 5428# check transactions-5 success: 1 5429ROLLBACK WORK; 5430 5431# check transactions-6 success: 1 5432# INFO: Storage engine used for t1 seems to be transactional. 5433COMMIT; 5434 5435# check transactions-7 success: 1 5436DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5437COMMIT WORK; 5438SET @@session.sql_mode = 'traditional'; 5439Warnings: 5440Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5441SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5442INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5443SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5444'', '', 'was inserted' FROM t0_template 5445WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5446ERROR 22012: Division by 0 5447COMMIT; 5448 5449# check transactions-8 success: 1 5450# INFO: Storage engine used for t1 seems to be able to revert 5451# changes made by the failing statement. 5452SET @@session.sql_mode = ''; 5453Warnings: 5454Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5455SET AUTOCOMMIT= 1; 5456DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5457COMMIT WORK; 5458UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5459 5460# check special-1 success: 1 5461UPDATE t1 SET f_charbig = ''; 5462 5463# check special-2 success: 1 5464UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5465INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5466SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5467WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5468INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5469SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5470'just inserted' FROM t0_template 5471WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5472CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5473BEGIN 5474UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5475f_charbig = 'updated by trigger' 5476 WHERE f_int1 = new.f_int1; 5477END| 5478INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5479SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5480WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5481 5482# check trigger-1 success: 1 5483DROP TRIGGER trg_1; 5484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5485f_int2 = CAST(f_char1 AS SIGNED INT), 5486f_charbig = 'just inserted' 5487 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5488DELETE FROM t0_aux 5489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5492'just inserted' FROM t0_template 5493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5494CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5495BEGIN 5496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5497f_charbig = 'updated by trigger' 5498 WHERE f_int1 = new.f_int1; 5499END| 5500INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5501SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5503 5504# check trigger-2 success: 1 5505DROP TRIGGER trg_1; 5506UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5507f_int2 = CAST(f_char1 AS SIGNED INT), 5508f_charbig = 'just inserted' 5509 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5510DELETE FROM t0_aux 5511WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5512INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5513SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5514'just inserted' FROM t0_template 5515WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5516CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5517BEGIN 5518UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5519f_charbig = 'updated by trigger' 5520 WHERE f_int1 = new.f_int1; 5521END| 5522UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5523WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5524 5525# check trigger-3 success: 1 5526DROP TRIGGER trg_1; 5527UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5528f_int2 = CAST(f_char1 AS SIGNED INT), 5529f_charbig = 'just inserted' 5530 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5531DELETE FROM t0_aux 5532WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5533INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5534SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5535'just inserted' FROM t0_template 5536WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5537CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5538BEGIN 5539UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5540f_charbig = 'updated by trigger' 5541 WHERE f_int1 = - old.f_int1; 5542END| 5543UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5544WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5545 5546# check trigger-4 success: 1 5547DROP TRIGGER trg_1; 5548UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5549f_int2 = CAST(f_char1 AS SIGNED INT), 5550f_charbig = 'just inserted' 5551 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5552DELETE FROM t0_aux 5553WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5554INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5555SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5556'just inserted' FROM t0_template 5557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5558CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5559BEGIN 5560UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5561f_charbig = 'updated by trigger' 5562 WHERE f_int1 = new.f_int1; 5563END| 5564UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5565WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5566 5567# check trigger-5 success: 1 5568DROP TRIGGER trg_1; 5569UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5570f_int2 = CAST(f_char1 AS SIGNED INT), 5571f_charbig = 'just inserted' 5572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5573DELETE FROM t0_aux 5574WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5575INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5576SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5577'just inserted' FROM t0_template 5578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5579CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5580BEGIN 5581UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5582f_charbig = 'updated by trigger' 5583 WHERE f_int1 = - old.f_int1; 5584END| 5585UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5586WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5587 5588# check trigger-6 success: 1 5589DROP TRIGGER trg_1; 5590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5591f_int2 = CAST(f_char1 AS SIGNED INT), 5592f_charbig = 'just inserted' 5593 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5594DELETE FROM t0_aux 5595WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5596INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5597SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5598'just inserted' FROM t0_template 5599WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5600CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5601BEGIN 5602UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5603f_charbig = 'updated by trigger' 5604 WHERE f_int1 = - old.f_int1; 5605END| 5606DELETE FROM t0_aux 5607WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5608 5609# check trigger-7 success: 1 5610DROP TRIGGER trg_1; 5611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5612f_int2 = CAST(f_char1 AS SIGNED INT), 5613f_charbig = 'just inserted' 5614 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5615DELETE FROM t0_aux 5616WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5617INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5618SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5619'just inserted' FROM t0_template 5620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5621CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5622BEGIN 5623UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5624f_charbig = 'updated by trigger' 5625 WHERE f_int1 = - old.f_int1; 5626END| 5627DELETE FROM t0_aux 5628WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5629 5630# check trigger-8 success: 1 5631DROP TRIGGER trg_1; 5632UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5633f_int2 = CAST(f_char1 AS SIGNED INT), 5634f_charbig = 'just inserted' 5635 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5636DELETE FROM t0_aux 5637WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5638DELETE FROM t1 5639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5640CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5641BEGIN 5642SET new.f_int1 = old.f_int1 + @max_row, 5643new.f_int2 = old.f_int2 - @max_row, 5644new.f_charbig = '####updated per update trigger####'; 5645END| 5646UPDATE t1 5647SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5648f_charbig = '####updated per update statement itself####'; 5649 5650# check trigger-9 success: 1 5651DROP TRIGGER trg_2; 5652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5653f_int2 = CAST(f_char1 AS SIGNED INT), 5654f_charbig = CONCAT('===',f_char1,'==='); 5655CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5656BEGIN 5657SET new.f_int1 = new.f_int1 + @max_row, 5658new.f_int2 = new.f_int2 - @max_row, 5659new.f_charbig = '####updated per update trigger####'; 5660END| 5661UPDATE t1 5662SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5663f_charbig = '####updated per update statement itself####'; 5664 5665# check trigger-10 success: 1 5666DROP TRIGGER trg_2; 5667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5668f_int2 = CAST(f_char1 AS SIGNED INT), 5669f_charbig = CONCAT('===',f_char1,'==='); 5670CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5671BEGIN 5672SET new.f_int1 = @my_max1 + @counter, 5673new.f_int2 = @my_min2 - @counter, 5674new.f_charbig = '####updated per insert trigger####'; 5675SET @counter = @counter + 1; 5676END| 5677SET @counter = 1; 5678SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5679INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5680SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5681CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5682WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5683ORDER BY f_int1; 5684DROP TRIGGER trg_3; 5685 5686# check trigger-11 success: 1 5687DELETE FROM t1 5688WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5689AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5690AND f_charbig = '####updated per insert trigger####'; 5691CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5692BEGIN 5693SET new.f_int1 = @my_max1 + @counter, 5694new.f_int2 = @my_min2 - @counter, 5695new.f_charbig = '####updated per insert trigger####'; 5696SET @counter = @counter + 1; 5697END| 5698SET @counter = 1; 5699SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5700INSERT INTO t1 (f_char1, f_char2, f_charbig) 5701SELECT CAST(f_int1 AS CHAR), 5702CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5703WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5704ORDER BY f_int1; 5705DROP TRIGGER trg_3; 5706 5707# check trigger-12 success: 1 5708DELETE FROM t1 5709WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5710AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5711AND f_charbig = '####updated per insert trigger####'; 5712ANALYZE TABLE t1; 5713Table Op Msg_type Msg_text 5714test.t1 analyze status OK 5715CHECK TABLE t1 EXTENDED; 5716Table Op Msg_type Msg_text 5717test.t1 check status OK 5718CHECKSUM TABLE t1 EXTENDED; 5719Table Checksum 5720test.t1 <some_value> 5721OPTIMIZE TABLE t1; 5722Table Op Msg_type Msg_text 5723test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 5724test.t1 optimize status OK 5725# check layout success: 1 5726REPAIR TABLE t1 EXTENDED; 5727Table Op Msg_type Msg_text 5728test.t1 repair status OK 5729# check layout success: 1 5730TRUNCATE t1; 5731 5732# check TRUNCATE success: 1 5733# check layout success: 1 5734# End usability test (inc/partition_check.inc) 5735DROP TABLE t1; 5736CREATE TABLE t1 ( 5737f_int1 INTEGER, 5738f_int2 INTEGER, 5739f_char1 CHAR(20), 5740f_char2 CHAR(20), 5741f_charbig VARCHAR(1000) 5742 5743) 5744PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 5745(PARTITION parta VALUES LESS THAN (0), 5746PARTITION partb VALUES LESS THAN (5), 5747PARTITION partc VALUES LESS THAN (10), 5748PARTITION partd VALUES LESS THAN (2147483646)); 5749INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5750SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 5751# Start usability test (inc/partition_check.inc) 5752create_command 5753SHOW CREATE TABLE t1; 5754Table Create Table 5755t1 CREATE TABLE `t1` ( 5756 `f_int1` int(11) DEFAULT NULL, 5757 `f_int2` int(11) DEFAULT NULL, 5758 `f_char1` char(20) DEFAULT NULL, 5759 `f_char2` char(20) DEFAULT NULL, 5760 `f_charbig` varchar(1000) DEFAULT NULL 5761) ENGINE=InnoDB DEFAULT CHARSET=latin1 5762/*!50100 PARTITION BY RANGE (f_int1) 5763SUBPARTITION BY HASH (f_int2) 5764SUBPARTITIONS 2 5765(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 5766 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 5767 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 5768 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 5769 5770unified filelist 5771t1#P#parta#SP#partasp0.ibd 5772t1#P#parta#SP#partasp1.ibd 5773t1#P#partb#SP#partbsp0.ibd 5774t1#P#partb#SP#partbsp1.ibd 5775t1#P#partc#SP#partcsp0.ibd 5776t1#P#partc#SP#partcsp1.ibd 5777t1#P#partd#SP#partdsp0.ibd 5778t1#P#partd#SP#partdsp1.ibd 5779t1.frm 5780 5781# check prerequisites-1 success: 1 5782# check COUNT(*) success: 1 5783# check MIN/MAX(f_int1) success: 1 5784# check MIN/MAX(f_int2) success: 1 5785INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5786SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5787CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5788WHERE f_int1 IN (2,3); 5789# check prerequisites-3 success: 1 5790DELETE FROM t1 WHERE f_charbig = 'delete me'; 5791# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 5792# check read via f_int1 success: 1 5793# check read via f_int2 success: 1 5794 5795# check multiple-1 success: 1 5796DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5797 5798# check multiple-2 success: 1 5799INSERT INTO t1 SELECT * FROM t0_template 5800WHERE MOD(f_int1,3) = 0; 5801 5802# check multiple-3 success: 1 5803UPDATE t1 SET f_int1 = f_int1 + @max_row 5804WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5805AND @max_row_div2 + @max_row_div4; 5806 5807# check multiple-4 success: 1 5808DELETE FROM t1 5809WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5810AND @max_row_div2 + @max_row_div4 + @max_row; 5811 5812# check multiple-5 success: 1 5813SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5814INSERT INTO t1 5815SET f_int1 = @cur_value , f_int2 = @cur_value, 5816f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5817f_charbig = '#SINGLE#'; 5818 5819# check single-1 success: 1 5820SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5821INSERT INTO t1 5822SET f_int1 = @cur_value , f_int2 = @cur_value, 5823f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5824f_charbig = '#SINGLE#'; 5825 5826# check single-2 success: 1 5827SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5828SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5829UPDATE t1 SET f_int1 = @cur_value2 5830WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5831 5832# check single-3 success: 1 5833SET @cur_value1= -1; 5834SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5835UPDATE t1 SET f_int1 = @cur_value1 5836WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5837 5838# check single-4 success: 1 5839SELECT MAX(f_int1) INTO @cur_value FROM t1; 5840DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5841 5842# check single-5 success: 1 5843DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5844 5845# check single-6 success: 1 5846INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5847ERROR HY000: Table has no partition for value 2147483647 5848DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5849INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5850f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5851f_charbig = '#NULL#'; 5852INSERT INTO t1 5853SET f_int1 = NULL , f_int2 = -@max_row, 5854f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5855f_charbig = '#NULL#'; 5856# check null success: 1 5857 5858# check null-1 success: 1 5859UPDATE t1 SET f_int1 = -@max_row 5860WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5861AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5862 5863# check null-2 success: 1 5864UPDATE t1 SET f_int1 = NULL 5865WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5866AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5867 5868# check null-3 success: 1 5869DELETE FROM t1 5870WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5871AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5872 5873# check null-4 success: 1 5874DELETE FROM t1 5875WHERE f_int1 = 0 AND f_int2 = 0 5876AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5877AND f_charbig = '#NULL#'; 5878SET AUTOCOMMIT= 0; 5879INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5880SELECT f_int1, f_int1, '', '', 'was inserted' 5881FROM t0_template source_tab 5882WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5883 5884# check transactions-1 success: 1 5885COMMIT WORK; 5886 5887# check transactions-2 success: 1 5888ROLLBACK WORK; 5889 5890# check transactions-3 success: 1 5891DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5892COMMIT WORK; 5893ROLLBACK WORK; 5894 5895# check transactions-4 success: 1 5896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5897SELECT f_int1, f_int1, '', '', 'was inserted' 5898FROM t0_template source_tab 5899WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5900 5901# check transactions-5 success: 1 5902ROLLBACK WORK; 5903 5904# check transactions-6 success: 1 5905# INFO: Storage engine used for t1 seems to be transactional. 5906COMMIT; 5907 5908# check transactions-7 success: 1 5909DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5910COMMIT WORK; 5911SET @@session.sql_mode = 'traditional'; 5912Warnings: 5913Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5914SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5916SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5917'', '', 'was inserted' FROM t0_template 5918WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5919ERROR 22012: Division by 0 5920COMMIT; 5921 5922# check transactions-8 success: 1 5923# INFO: Storage engine used for t1 seems to be able to revert 5924# changes made by the failing statement. 5925SET @@session.sql_mode = ''; 5926Warnings: 5927Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5928SET AUTOCOMMIT= 1; 5929DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5930COMMIT WORK; 5931UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5932 5933# check special-1 success: 1 5934UPDATE t1 SET f_charbig = ''; 5935 5936# check special-2 success: 1 5937UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5938INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5939SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5940WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5941INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5942SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5943'just inserted' FROM t0_template 5944WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5945CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5946BEGIN 5947UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5948f_charbig = 'updated by trigger' 5949 WHERE f_int1 = new.f_int1; 5950END| 5951INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5952SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5953WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5954 5955# check trigger-1 success: 1 5956DROP TRIGGER trg_1; 5957UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5958f_int2 = CAST(f_char1 AS SIGNED INT), 5959f_charbig = 'just inserted' 5960 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5961DELETE FROM t0_aux 5962WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5963INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5964SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5965'just inserted' FROM t0_template 5966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5967CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5968BEGIN 5969UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5970f_charbig = 'updated by trigger' 5971 WHERE f_int1 = new.f_int1; 5972END| 5973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5974SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5976 5977# check trigger-2 success: 1 5978DROP TRIGGER trg_1; 5979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5980f_int2 = CAST(f_char1 AS SIGNED INT), 5981f_charbig = 'just inserted' 5982 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5983DELETE FROM t0_aux 5984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5985INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5986SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5987'just inserted' FROM t0_template 5988WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5989CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5990BEGIN 5991UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5992f_charbig = 'updated by trigger' 5993 WHERE f_int1 = new.f_int1; 5994END| 5995UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5996WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5997 5998# check trigger-3 success: 1 5999DROP TRIGGER trg_1; 6000UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6001f_int2 = CAST(f_char1 AS SIGNED INT), 6002f_charbig = 'just inserted' 6003 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6004DELETE FROM t0_aux 6005WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6006INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6007SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6008'just inserted' FROM t0_template 6009WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6010CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6011BEGIN 6012UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6013f_charbig = 'updated by trigger' 6014 WHERE f_int1 = - old.f_int1; 6015END| 6016UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6017WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6018 6019# check trigger-4 success: 1 6020DROP TRIGGER trg_1; 6021UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6022f_int2 = CAST(f_char1 AS SIGNED INT), 6023f_charbig = 'just inserted' 6024 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6025DELETE FROM t0_aux 6026WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6027INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6028SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6029'just inserted' FROM t0_template 6030WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6031CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6032BEGIN 6033UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6034f_charbig = 'updated by trigger' 6035 WHERE f_int1 = new.f_int1; 6036END| 6037UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6038WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6039 6040# check trigger-5 success: 1 6041DROP TRIGGER trg_1; 6042UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6043f_int2 = CAST(f_char1 AS SIGNED INT), 6044f_charbig = 'just inserted' 6045 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6046DELETE FROM t0_aux 6047WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6048INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6049SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6050'just inserted' FROM t0_template 6051WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6052CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6053BEGIN 6054UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6055f_charbig = 'updated by trigger' 6056 WHERE f_int1 = - old.f_int1; 6057END| 6058UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6059WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6060 6061# check trigger-6 success: 1 6062DROP TRIGGER trg_1; 6063UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6064f_int2 = CAST(f_char1 AS SIGNED INT), 6065f_charbig = 'just inserted' 6066 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6067DELETE FROM t0_aux 6068WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6069INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6070SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6071'just inserted' FROM t0_template 6072WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6073CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6074BEGIN 6075UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6076f_charbig = 'updated by trigger' 6077 WHERE f_int1 = - old.f_int1; 6078END| 6079DELETE FROM t0_aux 6080WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6081 6082# check trigger-7 success: 1 6083DROP TRIGGER trg_1; 6084UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6085f_int2 = CAST(f_char1 AS SIGNED INT), 6086f_charbig = 'just inserted' 6087 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6088DELETE FROM t0_aux 6089WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6090INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6091SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6092'just inserted' FROM t0_template 6093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6094CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6095BEGIN 6096UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6097f_charbig = 'updated by trigger' 6098 WHERE f_int1 = - old.f_int1; 6099END| 6100DELETE FROM t0_aux 6101WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6102 6103# check trigger-8 success: 1 6104DROP TRIGGER trg_1; 6105UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6106f_int2 = CAST(f_char1 AS SIGNED INT), 6107f_charbig = 'just inserted' 6108 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6109DELETE FROM t0_aux 6110WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6111DELETE FROM t1 6112WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6113CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6114BEGIN 6115SET new.f_int1 = old.f_int1 + @max_row, 6116new.f_int2 = old.f_int2 - @max_row, 6117new.f_charbig = '####updated per update trigger####'; 6118END| 6119UPDATE t1 6120SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6121f_charbig = '####updated per update statement itself####'; 6122 6123# check trigger-9 success: 1 6124DROP TRIGGER trg_2; 6125UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6126f_int2 = CAST(f_char1 AS SIGNED INT), 6127f_charbig = CONCAT('===',f_char1,'==='); 6128CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6129BEGIN 6130SET new.f_int1 = new.f_int1 + @max_row, 6131new.f_int2 = new.f_int2 - @max_row, 6132new.f_charbig = '####updated per update trigger####'; 6133END| 6134UPDATE t1 6135SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6136f_charbig = '####updated per update statement itself####'; 6137 6138# check trigger-10 success: 1 6139DROP TRIGGER trg_2; 6140UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6141f_int2 = CAST(f_char1 AS SIGNED INT), 6142f_charbig = CONCAT('===',f_char1,'==='); 6143CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6144BEGIN 6145SET new.f_int1 = @my_max1 + @counter, 6146new.f_int2 = @my_min2 - @counter, 6147new.f_charbig = '####updated per insert trigger####'; 6148SET @counter = @counter + 1; 6149END| 6150SET @counter = 1; 6151SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6152INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6153SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6154CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6156ORDER BY f_int1; 6157DROP TRIGGER trg_3; 6158 6159# check trigger-11 success: 1 6160DELETE FROM t1 6161WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6162AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6163AND f_charbig = '####updated per insert trigger####'; 6164CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6165BEGIN 6166SET new.f_int1 = @my_max1 + @counter, 6167new.f_int2 = @my_min2 - @counter, 6168new.f_charbig = '####updated per insert trigger####'; 6169SET @counter = @counter + 1; 6170END| 6171SET @counter = 1; 6172SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6173INSERT INTO t1 (f_char1, f_char2, f_charbig) 6174SELECT CAST(f_int1 AS CHAR), 6175CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6177ORDER BY f_int1; 6178DROP TRIGGER trg_3; 6179 6180# check trigger-12 success: 1 6181DELETE FROM t1 6182WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6183AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6184AND f_charbig = '####updated per insert trigger####'; 6185ANALYZE TABLE t1; 6186Table Op Msg_type Msg_text 6187test.t1 analyze status OK 6188CHECK TABLE t1 EXTENDED; 6189Table Op Msg_type Msg_text 6190test.t1 check status OK 6191CHECKSUM TABLE t1 EXTENDED; 6192Table Checksum 6193test.t1 <some_value> 6194OPTIMIZE TABLE t1; 6195Table Op Msg_type Msg_text 6196test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 6197test.t1 optimize status OK 6198# check layout success: 1 6199REPAIR TABLE t1 EXTENDED; 6200Table Op Msg_type Msg_text 6201test.t1 repair status OK 6202# check layout success: 1 6203TRUNCATE t1; 6204 6205# check TRUNCATE success: 1 6206# check layout success: 1 6207# End usability test (inc/partition_check.inc) 6208DROP TABLE t1; 6209CREATE TABLE t1 ( 6210f_int1 INTEGER, 6211f_int2 INTEGER, 6212f_char1 CHAR(20), 6213f_char2 CHAR(20), 6214f_charbig VARCHAR(1000) 6215 6216) 6217PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 6218(PARTITION part1 VALUES LESS THAN (0) 6219(SUBPARTITION subpart11, SUBPARTITION subpart12), 6220PARTITION part2 VALUES LESS THAN (5) 6221(SUBPARTITION subpart21, SUBPARTITION subpart22), 6222PARTITION part3 VALUES LESS THAN (10) 6223(SUBPARTITION subpart31, SUBPARTITION subpart32), 6224PARTITION part4 VALUES LESS THAN (2147483646) 6225(SUBPARTITION subpart41, SUBPARTITION subpart42)); 6226INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6227SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 6228# Start usability test (inc/partition_check.inc) 6229create_command 6230SHOW CREATE TABLE t1; 6231Table Create Table 6232t1 CREATE TABLE `t1` ( 6233 `f_int1` int(11) DEFAULT NULL, 6234 `f_int2` int(11) DEFAULT NULL, 6235 `f_char1` char(20) DEFAULT NULL, 6236 `f_char2` char(20) DEFAULT NULL, 6237 `f_charbig` varchar(1000) DEFAULT NULL 6238) ENGINE=InnoDB DEFAULT CHARSET=latin1 6239/*!50100 PARTITION BY RANGE (f_int1) 6240SUBPARTITION BY KEY (f_int2) 6241(PARTITION part1 VALUES LESS THAN (0) 6242 (SUBPARTITION subpart11 ENGINE = InnoDB, 6243 SUBPARTITION subpart12 ENGINE = InnoDB), 6244 PARTITION part2 VALUES LESS THAN (5) 6245 (SUBPARTITION subpart21 ENGINE = InnoDB, 6246 SUBPARTITION subpart22 ENGINE = InnoDB), 6247 PARTITION part3 VALUES LESS THAN (10) 6248 (SUBPARTITION subpart31 ENGINE = InnoDB, 6249 SUBPARTITION subpart32 ENGINE = InnoDB), 6250 PARTITION part4 VALUES LESS THAN (2147483646) 6251 (SUBPARTITION subpart41 ENGINE = InnoDB, 6252 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 6253 6254unified filelist 6255t1#P#part1#SP#subpart11.ibd 6256t1#P#part1#SP#subpart12.ibd 6257t1#P#part2#SP#subpart21.ibd 6258t1#P#part2#SP#subpart22.ibd 6259t1#P#part3#SP#subpart31.ibd 6260t1#P#part3#SP#subpart32.ibd 6261t1#P#part4#SP#subpart41.ibd 6262t1#P#part4#SP#subpart42.ibd 6263t1.frm 6264 6265# check prerequisites-1 success: 1 6266# check COUNT(*) success: 1 6267# check MIN/MAX(f_int1) success: 1 6268# check MIN/MAX(f_int2) success: 1 6269INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6270SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6271CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6272WHERE f_int1 IN (2,3); 6273# check prerequisites-3 success: 1 6274DELETE FROM t1 WHERE f_charbig = 'delete me'; 6275# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 6276# check read via f_int1 success: 1 6277# check read via f_int2 success: 1 6278 6279# check multiple-1 success: 1 6280DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6281 6282# check multiple-2 success: 1 6283INSERT INTO t1 SELECT * FROM t0_template 6284WHERE MOD(f_int1,3) = 0; 6285 6286# check multiple-3 success: 1 6287UPDATE t1 SET f_int1 = f_int1 + @max_row 6288WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6289AND @max_row_div2 + @max_row_div4; 6290 6291# check multiple-4 success: 1 6292DELETE FROM t1 6293WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6294AND @max_row_div2 + @max_row_div4 + @max_row; 6295 6296# check multiple-5 success: 1 6297SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6298INSERT INTO t1 6299SET f_int1 = @cur_value , f_int2 = @cur_value, 6300f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6301f_charbig = '#SINGLE#'; 6302 6303# check single-1 success: 1 6304SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6305INSERT INTO t1 6306SET f_int1 = @cur_value , f_int2 = @cur_value, 6307f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6308f_charbig = '#SINGLE#'; 6309 6310# check single-2 success: 1 6311SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6312SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6313UPDATE t1 SET f_int1 = @cur_value2 6314WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6315 6316# check single-3 success: 1 6317SET @cur_value1= -1; 6318SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6319UPDATE t1 SET f_int1 = @cur_value1 6320WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6321 6322# check single-4 success: 1 6323SELECT MAX(f_int1) INTO @cur_value FROM t1; 6324DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6325 6326# check single-5 success: 1 6327DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6328 6329# check single-6 success: 1 6330INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6331ERROR HY000: Table has no partition for value 2147483647 6332DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6333INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6334f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6335f_charbig = '#NULL#'; 6336INSERT INTO t1 6337SET f_int1 = NULL , f_int2 = -@max_row, 6338f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6339f_charbig = '#NULL#'; 6340# check null success: 1 6341 6342# check null-1 success: 1 6343UPDATE t1 SET f_int1 = -@max_row 6344WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6345AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6346 6347# check null-2 success: 1 6348UPDATE t1 SET f_int1 = NULL 6349WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6350AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6351 6352# check null-3 success: 1 6353DELETE FROM t1 6354WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6355AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6356 6357# check null-4 success: 1 6358DELETE FROM t1 6359WHERE f_int1 = 0 AND f_int2 = 0 6360AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6361AND f_charbig = '#NULL#'; 6362SET AUTOCOMMIT= 0; 6363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6364SELECT f_int1, f_int1, '', '', 'was inserted' 6365FROM t0_template source_tab 6366WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6367 6368# check transactions-1 success: 1 6369COMMIT WORK; 6370 6371# check transactions-2 success: 1 6372ROLLBACK WORK; 6373 6374# check transactions-3 success: 1 6375DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6376COMMIT WORK; 6377ROLLBACK WORK; 6378 6379# check transactions-4 success: 1 6380INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6381SELECT f_int1, f_int1, '', '', 'was inserted' 6382FROM t0_template source_tab 6383WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6384 6385# check transactions-5 success: 1 6386ROLLBACK WORK; 6387 6388# check transactions-6 success: 1 6389# INFO: Storage engine used for t1 seems to be transactional. 6390COMMIT; 6391 6392# check transactions-7 success: 1 6393DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6394COMMIT WORK; 6395SET @@session.sql_mode = 'traditional'; 6396Warnings: 6397Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6398SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6400SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6401'', '', 'was inserted' FROM t0_template 6402WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6403ERROR 22012: Division by 0 6404COMMIT; 6405 6406# check transactions-8 success: 1 6407# INFO: Storage engine used for t1 seems to be able to revert 6408# changes made by the failing statement. 6409SET @@session.sql_mode = ''; 6410Warnings: 6411Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6412SET AUTOCOMMIT= 1; 6413DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6414COMMIT WORK; 6415UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6416 6417# check special-1 success: 1 6418UPDATE t1 SET f_charbig = ''; 6419 6420# check special-2 success: 1 6421UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6422INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6423SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6427'just inserted' FROM t0_template 6428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6429CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6430BEGIN 6431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6432f_charbig = 'updated by trigger' 6433 WHERE f_int1 = new.f_int1; 6434END| 6435INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6436SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6438 6439# check trigger-1 success: 1 6440DROP TRIGGER trg_1; 6441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6442f_int2 = CAST(f_char1 AS SIGNED INT), 6443f_charbig = 'just inserted' 6444 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6445DELETE FROM t0_aux 6446WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6447INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6448SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6449'just inserted' FROM t0_template 6450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6451CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6452BEGIN 6453UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6454f_charbig = 'updated by trigger' 6455 WHERE f_int1 = new.f_int1; 6456END| 6457INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6458SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6459WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6460 6461# check trigger-2 success: 1 6462DROP TRIGGER trg_1; 6463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6464f_int2 = CAST(f_char1 AS SIGNED INT), 6465f_charbig = 'just inserted' 6466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6467DELETE FROM t0_aux 6468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6469INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6470SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6471'just inserted' FROM t0_template 6472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6473CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6474BEGIN 6475UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6476f_charbig = 'updated by trigger' 6477 WHERE f_int1 = new.f_int1; 6478END| 6479UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6480WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6481 6482# check trigger-3 success: 1 6483DROP TRIGGER trg_1; 6484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6485f_int2 = CAST(f_char1 AS SIGNED INT), 6486f_charbig = 'just inserted' 6487 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6488DELETE FROM t0_aux 6489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6492'just inserted' FROM t0_template 6493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6494CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6495BEGIN 6496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6497f_charbig = 'updated by trigger' 6498 WHERE f_int1 = - old.f_int1; 6499END| 6500UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6502 6503# check trigger-4 success: 1 6504DROP TRIGGER trg_1; 6505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6506f_int2 = CAST(f_char1 AS SIGNED INT), 6507f_charbig = 'just inserted' 6508 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6509DELETE FROM t0_aux 6510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6513'just inserted' FROM t0_template 6514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6515CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6516BEGIN 6517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6518f_charbig = 'updated by trigger' 6519 WHERE f_int1 = new.f_int1; 6520END| 6521UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6523 6524# check trigger-5 success: 1 6525DROP TRIGGER trg_1; 6526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6527f_int2 = CAST(f_char1 AS SIGNED INT), 6528f_charbig = 'just inserted' 6529 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6530DELETE FROM t0_aux 6531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6534'just inserted' FROM t0_template 6535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6536CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6537BEGIN 6538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6539f_charbig = 'updated by trigger' 6540 WHERE f_int1 = - old.f_int1; 6541END| 6542UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6544 6545# check trigger-6 success: 1 6546DROP TRIGGER trg_1; 6547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6548f_int2 = CAST(f_char1 AS SIGNED INT), 6549f_charbig = 'just inserted' 6550 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6551DELETE FROM t0_aux 6552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6555'just inserted' FROM t0_template 6556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6557CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6558BEGIN 6559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6560f_charbig = 'updated by trigger' 6561 WHERE f_int1 = - old.f_int1; 6562END| 6563DELETE FROM t0_aux 6564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6565 6566# check trigger-7 success: 1 6567DROP TRIGGER trg_1; 6568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6569f_int2 = CAST(f_char1 AS SIGNED INT), 6570f_charbig = 'just inserted' 6571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6572DELETE FROM t0_aux 6573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6576'just inserted' FROM t0_template 6577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6578CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6579BEGIN 6580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6581f_charbig = 'updated by trigger' 6582 WHERE f_int1 = - old.f_int1; 6583END| 6584DELETE FROM t0_aux 6585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6586 6587# check trigger-8 success: 1 6588DROP TRIGGER trg_1; 6589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6590f_int2 = CAST(f_char1 AS SIGNED INT), 6591f_charbig = 'just inserted' 6592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6593DELETE FROM t0_aux 6594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6595DELETE FROM t1 6596WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6597CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6598BEGIN 6599SET new.f_int1 = old.f_int1 + @max_row, 6600new.f_int2 = old.f_int2 - @max_row, 6601new.f_charbig = '####updated per update trigger####'; 6602END| 6603UPDATE t1 6604SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6605f_charbig = '####updated per update statement itself####'; 6606 6607# check trigger-9 success: 1 6608DROP TRIGGER trg_2; 6609UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6610f_int2 = CAST(f_char1 AS SIGNED INT), 6611f_charbig = CONCAT('===',f_char1,'==='); 6612CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6613BEGIN 6614SET new.f_int1 = new.f_int1 + @max_row, 6615new.f_int2 = new.f_int2 - @max_row, 6616new.f_charbig = '####updated per update trigger####'; 6617END| 6618UPDATE t1 6619SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6620f_charbig = '####updated per update statement itself####'; 6621 6622# check trigger-10 success: 1 6623DROP TRIGGER trg_2; 6624UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6625f_int2 = CAST(f_char1 AS SIGNED INT), 6626f_charbig = CONCAT('===',f_char1,'==='); 6627CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6628BEGIN 6629SET new.f_int1 = @my_max1 + @counter, 6630new.f_int2 = @my_min2 - @counter, 6631new.f_charbig = '####updated per insert trigger####'; 6632SET @counter = @counter + 1; 6633END| 6634SET @counter = 1; 6635SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6636INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6637SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6638CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6640ORDER BY f_int1; 6641DROP TRIGGER trg_3; 6642 6643# check trigger-11 success: 1 6644DELETE FROM t1 6645WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6646AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6647AND f_charbig = '####updated per insert trigger####'; 6648CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6649BEGIN 6650SET new.f_int1 = @my_max1 + @counter, 6651new.f_int2 = @my_min2 - @counter, 6652new.f_charbig = '####updated per insert trigger####'; 6653SET @counter = @counter + 1; 6654END| 6655SET @counter = 1; 6656SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6657INSERT INTO t1 (f_char1, f_char2, f_charbig) 6658SELECT CAST(f_int1 AS CHAR), 6659CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6661ORDER BY f_int1; 6662DROP TRIGGER trg_3; 6663 6664# check trigger-12 success: 1 6665DELETE FROM t1 6666WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6667AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6668AND f_charbig = '####updated per insert trigger####'; 6669ANALYZE TABLE t1; 6670Table Op Msg_type Msg_text 6671test.t1 analyze status OK 6672CHECK TABLE t1 EXTENDED; 6673Table Op Msg_type Msg_text 6674test.t1 check status OK 6675CHECKSUM TABLE t1 EXTENDED; 6676Table Checksum 6677test.t1 <some_value> 6678OPTIMIZE TABLE t1; 6679Table Op Msg_type Msg_text 6680test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 6681test.t1 optimize status OK 6682# check layout success: 1 6683REPAIR TABLE t1 EXTENDED; 6684Table Op Msg_type Msg_text 6685test.t1 repair status OK 6686# check layout success: 1 6687TRUNCATE t1; 6688 6689# check TRUNCATE success: 1 6690# check layout success: 1 6691# End usability test (inc/partition_check.inc) 6692DROP TABLE t1; 6693CREATE TABLE t1 ( 6694f_int1 INTEGER, 6695f_int2 INTEGER, 6696f_char1 CHAR(20), 6697f_char2 CHAR(20), 6698f_charbig VARCHAR(1000) 6699 6700) 6701PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 6702(PARTITION part1 VALUES IN (0) 6703(SUBPARTITION sp11, SUBPARTITION sp12), 6704PARTITION part2 VALUES IN (1) 6705(SUBPARTITION sp21, SUBPARTITION sp22), 6706PARTITION part3 VALUES IN (2) 6707(SUBPARTITION sp31, SUBPARTITION sp32), 6708PARTITION part4 VALUES IN (NULL) 6709(SUBPARTITION sp41, SUBPARTITION sp42)); 6710INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6711SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 6712# Start usability test (inc/partition_check.inc) 6713create_command 6714SHOW CREATE TABLE t1; 6715Table Create Table 6716t1 CREATE TABLE `t1` ( 6717 `f_int1` int(11) DEFAULT NULL, 6718 `f_int2` int(11) DEFAULT NULL, 6719 `f_char1` char(20) DEFAULT NULL, 6720 `f_char2` char(20) DEFAULT NULL, 6721 `f_charbig` varchar(1000) DEFAULT NULL 6722) ENGINE=InnoDB DEFAULT CHARSET=latin1 6723/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 6724SUBPARTITION BY HASH (f_int2 + 1) 6725(PARTITION part1 VALUES IN (0) 6726 (SUBPARTITION sp11 ENGINE = InnoDB, 6727 SUBPARTITION sp12 ENGINE = InnoDB), 6728 PARTITION part2 VALUES IN (1) 6729 (SUBPARTITION sp21 ENGINE = InnoDB, 6730 SUBPARTITION sp22 ENGINE = InnoDB), 6731 PARTITION part3 VALUES IN (2) 6732 (SUBPARTITION sp31 ENGINE = InnoDB, 6733 SUBPARTITION sp32 ENGINE = InnoDB), 6734 PARTITION part4 VALUES IN (NULL) 6735 (SUBPARTITION sp41 ENGINE = InnoDB, 6736 SUBPARTITION sp42 ENGINE = InnoDB)) */ 6737 6738unified filelist 6739t1#P#part1#SP#sp11.ibd 6740t1#P#part1#SP#sp12.ibd 6741t1#P#part2#SP#sp21.ibd 6742t1#P#part2#SP#sp22.ibd 6743t1#P#part3#SP#sp31.ibd 6744t1#P#part3#SP#sp32.ibd 6745t1#P#part4#SP#sp41.ibd 6746t1#P#part4#SP#sp42.ibd 6747t1.frm 6748 6749# check prerequisites-1 success: 1 6750# check COUNT(*) success: 1 6751# check MIN/MAX(f_int1) success: 1 6752# check MIN/MAX(f_int2) success: 1 6753INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6754SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6755CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6756WHERE f_int1 IN (2,3); 6757# check prerequisites-3 success: 1 6758DELETE FROM t1 WHERE f_charbig = 'delete me'; 6759# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 6760# check read via f_int1 success: 1 6761# check read via f_int2 success: 1 6762 6763# check multiple-1 success: 1 6764DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6765 6766# check multiple-2 success: 1 6767INSERT INTO t1 SELECT * FROM t0_template 6768WHERE MOD(f_int1,3) = 0; 6769 6770# check multiple-3 success: 1 6771UPDATE t1 SET f_int1 = f_int1 + @max_row 6772WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6773AND @max_row_div2 + @max_row_div4; 6774 6775# check multiple-4 success: 1 6776DELETE FROM t1 6777WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6778AND @max_row_div2 + @max_row_div4 + @max_row; 6779 6780# check multiple-5 success: 1 6781SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6782INSERT INTO t1 6783SET f_int1 = @cur_value , f_int2 = @cur_value, 6784f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6785f_charbig = '#SINGLE#'; 6786 6787# check single-1 success: 1 6788SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6789INSERT INTO t1 6790SET f_int1 = @cur_value , f_int2 = @cur_value, 6791f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6792f_charbig = '#SINGLE#'; 6793 6794# check single-2 success: 1 6795SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6796SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6797UPDATE t1 SET f_int1 = @cur_value2 6798WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6799 6800# check single-3 success: 1 6801SET @cur_value1= -1; 6802SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6803UPDATE t1 SET f_int1 = @cur_value1 6804WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6805 6806# check single-4 success: 1 6807SELECT MAX(f_int1) INTO @cur_value FROM t1; 6808DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6809 6810# check single-5 success: 1 6811DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6812 6813# check single-6 success: 1 6814INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6815 6816# check single-7 success: 1 6817DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 6818DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6819INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6820f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6821f_charbig = '#NULL#'; 6822INSERT INTO t1 6823SET f_int1 = NULL , f_int2 = -@max_row, 6824f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6825f_charbig = '#NULL#'; 6826# check null success: 1 6827 6828# check null-1 success: 1 6829UPDATE t1 SET f_int1 = -@max_row 6830WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6831AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6832 6833# check null-2 success: 1 6834UPDATE t1 SET f_int1 = NULL 6835WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6836AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6837 6838# check null-3 success: 1 6839DELETE FROM t1 6840WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6841AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6842 6843# check null-4 success: 1 6844DELETE FROM t1 6845WHERE f_int1 = 0 AND f_int2 = 0 6846AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6847AND f_charbig = '#NULL#'; 6848SET AUTOCOMMIT= 0; 6849INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6850SELECT f_int1, f_int1, '', '', 'was inserted' 6851FROM t0_template source_tab 6852WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6853 6854# check transactions-1 success: 1 6855COMMIT WORK; 6856 6857# check transactions-2 success: 1 6858ROLLBACK WORK; 6859 6860# check transactions-3 success: 1 6861DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6862COMMIT WORK; 6863ROLLBACK WORK; 6864 6865# check transactions-4 success: 1 6866INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6867SELECT f_int1, f_int1, '', '', 'was inserted' 6868FROM t0_template source_tab 6869WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6870 6871# check transactions-5 success: 1 6872ROLLBACK WORK; 6873 6874# check transactions-6 success: 1 6875# INFO: Storage engine used for t1 seems to be transactional. 6876COMMIT; 6877 6878# check transactions-7 success: 1 6879DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6880COMMIT WORK; 6881SET @@session.sql_mode = 'traditional'; 6882Warnings: 6883Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6884SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6885INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6886SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6887'', '', 'was inserted' FROM t0_template 6888WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6889ERROR 22012: Division by 0 6890COMMIT; 6891 6892# check transactions-8 success: 1 6893# INFO: Storage engine used for t1 seems to be able to revert 6894# changes made by the failing statement. 6895SET @@session.sql_mode = ''; 6896Warnings: 6897Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6898SET AUTOCOMMIT= 1; 6899DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6900COMMIT WORK; 6901UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6902 6903# check special-1 success: 1 6904UPDATE t1 SET f_charbig = ''; 6905 6906# check special-2 success: 1 6907UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6908INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6909SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6911INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6912SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6913'just inserted' FROM t0_template 6914WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6915CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6916BEGIN 6917UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6918f_charbig = 'updated by trigger' 6919 WHERE f_int1 = new.f_int1; 6920END| 6921INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6922SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6924 6925# check trigger-1 success: 1 6926DROP TRIGGER trg_1; 6927UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6928f_int2 = CAST(f_char1 AS SIGNED INT), 6929f_charbig = 'just inserted' 6930 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6931DELETE FROM t0_aux 6932WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6933INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6934SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6935'just inserted' FROM t0_template 6936WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6937CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6938BEGIN 6939UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6940f_charbig = 'updated by trigger' 6941 WHERE f_int1 = new.f_int1; 6942END| 6943INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6944SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6945WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6946 6947# check trigger-2 success: 1 6948DROP TRIGGER trg_1; 6949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6950f_int2 = CAST(f_char1 AS SIGNED INT), 6951f_charbig = 'just inserted' 6952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6953DELETE FROM t0_aux 6954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6957'just inserted' FROM t0_template 6958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6959CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6960BEGIN 6961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6962f_charbig = 'updated by trigger' 6963 WHERE f_int1 = new.f_int1; 6964END| 6965UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6967 6968# check trigger-3 success: 1 6969DROP TRIGGER trg_1; 6970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6971f_int2 = CAST(f_char1 AS SIGNED INT), 6972f_charbig = 'just inserted' 6973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6974DELETE FROM t0_aux 6975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6978'just inserted' FROM t0_template 6979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6980CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6981BEGIN 6982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6983f_charbig = 'updated by trigger' 6984 WHERE f_int1 = - old.f_int1; 6985END| 6986UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6988 6989# check trigger-4 success: 1 6990DROP TRIGGER trg_1; 6991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6992f_int2 = CAST(f_char1 AS SIGNED INT), 6993f_charbig = 'just inserted' 6994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6995DELETE FROM t0_aux 6996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6999'just inserted' FROM t0_template 7000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7001CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7002BEGIN 7003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7004f_charbig = 'updated by trigger' 7005 WHERE f_int1 = new.f_int1; 7006END| 7007UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7009 7010# check trigger-5 success: 1 7011DROP TRIGGER trg_1; 7012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7013f_int2 = CAST(f_char1 AS SIGNED INT), 7014f_charbig = 'just inserted' 7015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7016DELETE FROM t0_aux 7017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7018INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7019SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7020'just inserted' FROM t0_template 7021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7022CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7023BEGIN 7024UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7025f_charbig = 'updated by trigger' 7026 WHERE f_int1 = - old.f_int1; 7027END| 7028UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7029WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7030 7031# check trigger-6 success: 1 7032DROP TRIGGER trg_1; 7033UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7034f_int2 = CAST(f_char1 AS SIGNED INT), 7035f_charbig = 'just inserted' 7036 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7037DELETE FROM t0_aux 7038WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7039INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7040SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7041'just inserted' FROM t0_template 7042WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7043CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7044BEGIN 7045UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7046f_charbig = 'updated by trigger' 7047 WHERE f_int1 = - old.f_int1; 7048END| 7049DELETE FROM t0_aux 7050WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7051 7052# check trigger-7 success: 1 7053DROP TRIGGER trg_1; 7054UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7055f_int2 = CAST(f_char1 AS SIGNED INT), 7056f_charbig = 'just inserted' 7057 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7058DELETE FROM t0_aux 7059WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7060INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7061SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7062'just inserted' FROM t0_template 7063WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7064CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7065BEGIN 7066UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7067f_charbig = 'updated by trigger' 7068 WHERE f_int1 = - old.f_int1; 7069END| 7070DELETE FROM t0_aux 7071WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7072 7073# check trigger-8 success: 1 7074DROP TRIGGER trg_1; 7075UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7076f_int2 = CAST(f_char1 AS SIGNED INT), 7077f_charbig = 'just inserted' 7078 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7079DELETE FROM t0_aux 7080WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7081DELETE FROM t1 7082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7083CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7084BEGIN 7085SET new.f_int1 = old.f_int1 + @max_row, 7086new.f_int2 = old.f_int2 - @max_row, 7087new.f_charbig = '####updated per update trigger####'; 7088END| 7089UPDATE t1 7090SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7091f_charbig = '####updated per update statement itself####'; 7092 7093# check trigger-9 success: 1 7094DROP TRIGGER trg_2; 7095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7096f_int2 = CAST(f_char1 AS SIGNED INT), 7097f_charbig = CONCAT('===',f_char1,'==='); 7098CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7099BEGIN 7100SET new.f_int1 = new.f_int1 + @max_row, 7101new.f_int2 = new.f_int2 - @max_row, 7102new.f_charbig = '####updated per update trigger####'; 7103END| 7104UPDATE t1 7105SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7106f_charbig = '####updated per update statement itself####'; 7107 7108# check trigger-10 success: 1 7109DROP TRIGGER trg_2; 7110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7111f_int2 = CAST(f_char1 AS SIGNED INT), 7112f_charbig = CONCAT('===',f_char1,'==='); 7113CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7114BEGIN 7115SET new.f_int1 = @my_max1 + @counter, 7116new.f_int2 = @my_min2 - @counter, 7117new.f_charbig = '####updated per insert trigger####'; 7118SET @counter = @counter + 1; 7119END| 7120SET @counter = 1; 7121SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7122INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7123SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7124CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7126ORDER BY f_int1; 7127DROP TRIGGER trg_3; 7128 7129# check trigger-11 success: 1 7130DELETE FROM t1 7131WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7132AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7133AND f_charbig = '####updated per insert trigger####'; 7134CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7135BEGIN 7136SET new.f_int1 = @my_max1 + @counter, 7137new.f_int2 = @my_min2 - @counter, 7138new.f_charbig = '####updated per insert trigger####'; 7139SET @counter = @counter + 1; 7140END| 7141SET @counter = 1; 7142SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7143INSERT INTO t1 (f_char1, f_char2, f_charbig) 7144SELECT CAST(f_int1 AS CHAR), 7145CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7147ORDER BY f_int1; 7148DROP TRIGGER trg_3; 7149 7150# check trigger-12 success: 1 7151DELETE FROM t1 7152WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7153AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7154AND f_charbig = '####updated per insert trigger####'; 7155ANALYZE TABLE t1; 7156Table Op Msg_type Msg_text 7157test.t1 analyze status OK 7158CHECK TABLE t1 EXTENDED; 7159Table Op Msg_type Msg_text 7160test.t1 check status OK 7161CHECKSUM TABLE t1 EXTENDED; 7162Table Checksum 7163test.t1 <some_value> 7164OPTIMIZE TABLE t1; 7165Table Op Msg_type Msg_text 7166test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 7167test.t1 optimize status OK 7168# check layout success: 1 7169REPAIR TABLE t1 EXTENDED; 7170Table Op Msg_type Msg_text 7171test.t1 repair status OK 7172# check layout success: 1 7173TRUNCATE t1; 7174 7175# check TRUNCATE success: 1 7176# check layout success: 1 7177# End usability test (inc/partition_check.inc) 7178DROP TABLE t1; 7179CREATE TABLE t1 ( 7180f_int1 INTEGER, 7181f_int2 INTEGER, 7182f_char1 CHAR(20), 7183f_char2 CHAR(20), 7184f_charbig VARCHAR(1000) 7185 7186) 7187PARTITION BY LIST(ABS(MOD(f_int1,2))) 7188SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 7189(PARTITION part1 VALUES IN (0), 7190PARTITION part2 VALUES IN (1), 7191PARTITION part3 VALUES IN (NULL)); 7192INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7193SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 7194# Start usability test (inc/partition_check.inc) 7195create_command 7196SHOW CREATE TABLE t1; 7197Table Create Table 7198t1 CREATE TABLE `t1` ( 7199 `f_int1` int(11) DEFAULT NULL, 7200 `f_int2` int(11) DEFAULT NULL, 7201 `f_char1` char(20) DEFAULT NULL, 7202 `f_char2` char(20) DEFAULT NULL, 7203 `f_charbig` varchar(1000) DEFAULT NULL 7204) ENGINE=InnoDB DEFAULT CHARSET=latin1 7205/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 7206SUBPARTITION BY KEY (f_int2) 7207SUBPARTITIONS 3 7208(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 7209 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 7210 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 7211 7212unified filelist 7213t1#P#part1#SP#part1sp0.ibd 7214t1#P#part1#SP#part1sp1.ibd 7215t1#P#part1#SP#part1sp2.ibd 7216t1#P#part2#SP#part2sp0.ibd 7217t1#P#part2#SP#part2sp1.ibd 7218t1#P#part2#SP#part2sp2.ibd 7219t1#P#part3#SP#part3sp0.ibd 7220t1#P#part3#SP#part3sp1.ibd 7221t1#P#part3#SP#part3sp2.ibd 7222t1.frm 7223 7224# check prerequisites-1 success: 1 7225# check COUNT(*) success: 1 7226# check MIN/MAX(f_int1) success: 1 7227# check MIN/MAX(f_int2) success: 1 7228INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7229SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7230CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7231WHERE f_int1 IN (2,3); 7232# check prerequisites-3 success: 1 7233DELETE FROM t1 WHERE f_charbig = 'delete me'; 7234# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 7235# check read via f_int1 success: 1 7236# check read via f_int2 success: 1 7237 7238# check multiple-1 success: 1 7239DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7240 7241# check multiple-2 success: 1 7242INSERT INTO t1 SELECT * FROM t0_template 7243WHERE MOD(f_int1,3) = 0; 7244 7245# check multiple-3 success: 1 7246UPDATE t1 SET f_int1 = f_int1 + @max_row 7247WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7248AND @max_row_div2 + @max_row_div4; 7249 7250# check multiple-4 success: 1 7251DELETE FROM t1 7252WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7253AND @max_row_div2 + @max_row_div4 + @max_row; 7254 7255# check multiple-5 success: 1 7256SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7257INSERT INTO t1 7258SET f_int1 = @cur_value , f_int2 = @cur_value, 7259f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7260f_charbig = '#SINGLE#'; 7261 7262# check single-1 success: 1 7263SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7264INSERT INTO t1 7265SET f_int1 = @cur_value , f_int2 = @cur_value, 7266f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7267f_charbig = '#SINGLE#'; 7268 7269# check single-2 success: 1 7270SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7271SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7272UPDATE t1 SET f_int1 = @cur_value2 7273WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7274 7275# check single-3 success: 1 7276SET @cur_value1= -1; 7277SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7278UPDATE t1 SET f_int1 = @cur_value1 7279WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7280 7281# check single-4 success: 1 7282SELECT MAX(f_int1) INTO @cur_value FROM t1; 7283DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7284 7285# check single-5 success: 1 7286DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7287 7288# check single-6 success: 1 7289INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7290 7291# check single-7 success: 1 7292DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7293DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7294INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7295f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7296f_charbig = '#NULL#'; 7297INSERT INTO t1 7298SET f_int1 = NULL , f_int2 = -@max_row, 7299f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7300f_charbig = '#NULL#'; 7301# check null success: 1 7302 7303# check null-1 success: 1 7304UPDATE t1 SET f_int1 = -@max_row 7305WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7306AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7307 7308# check null-2 success: 1 7309UPDATE t1 SET f_int1 = NULL 7310WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7311AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7312 7313# check null-3 success: 1 7314DELETE FROM t1 7315WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7316AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7317 7318# check null-4 success: 1 7319DELETE FROM t1 7320WHERE f_int1 = 0 AND f_int2 = 0 7321AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7322AND f_charbig = '#NULL#'; 7323SET AUTOCOMMIT= 0; 7324INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7325SELECT f_int1, f_int1, '', '', 'was inserted' 7326FROM t0_template source_tab 7327WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7328 7329# check transactions-1 success: 1 7330COMMIT WORK; 7331 7332# check transactions-2 success: 1 7333ROLLBACK WORK; 7334 7335# check transactions-3 success: 1 7336DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7337COMMIT WORK; 7338ROLLBACK WORK; 7339 7340# check transactions-4 success: 1 7341INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7342SELECT f_int1, f_int1, '', '', 'was inserted' 7343FROM t0_template source_tab 7344WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7345 7346# check transactions-5 success: 1 7347ROLLBACK WORK; 7348 7349# check transactions-6 success: 1 7350# INFO: Storage engine used for t1 seems to be transactional. 7351COMMIT; 7352 7353# check transactions-7 success: 1 7354DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7355COMMIT WORK; 7356SET @@session.sql_mode = 'traditional'; 7357Warnings: 7358Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7359SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7360INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7361SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7362'', '', 'was inserted' FROM t0_template 7363WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7364ERROR 22012: Division by 0 7365COMMIT; 7366 7367# check transactions-8 success: 1 7368# INFO: Storage engine used for t1 seems to be able to revert 7369# changes made by the failing statement. 7370SET @@session.sql_mode = ''; 7371Warnings: 7372Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7373SET AUTOCOMMIT= 1; 7374DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7375COMMIT WORK; 7376UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7377 7378# check special-1 success: 1 7379UPDATE t1 SET f_charbig = ''; 7380 7381# check special-2 success: 1 7382UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7383INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7384SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7385WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7386INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7387SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7388'just inserted' FROM t0_template 7389WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7390CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7391BEGIN 7392UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7393f_charbig = 'updated by trigger' 7394 WHERE f_int1 = new.f_int1; 7395END| 7396INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7397SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7399 7400# check trigger-1 success: 1 7401DROP TRIGGER trg_1; 7402UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7403f_int2 = CAST(f_char1 AS SIGNED INT), 7404f_charbig = 'just inserted' 7405 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7406DELETE FROM t0_aux 7407WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7408INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7409SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7410'just inserted' FROM t0_template 7411WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7412CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7413BEGIN 7414UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7415f_charbig = 'updated by trigger' 7416 WHERE f_int1 = new.f_int1; 7417END| 7418INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7419SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7420WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7421 7422# check trigger-2 success: 1 7423DROP TRIGGER trg_1; 7424UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7425f_int2 = CAST(f_char1 AS SIGNED INT), 7426f_charbig = 'just inserted' 7427 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7428DELETE FROM t0_aux 7429WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7430INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7431SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7432'just inserted' FROM t0_template 7433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7434CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7435BEGIN 7436UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7437f_charbig = 'updated by trigger' 7438 WHERE f_int1 = new.f_int1; 7439END| 7440UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7441WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7442 7443# check trigger-3 success: 1 7444DROP TRIGGER trg_1; 7445UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7446f_int2 = CAST(f_char1 AS SIGNED INT), 7447f_charbig = 'just inserted' 7448 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7449DELETE FROM t0_aux 7450WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7451INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7452SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7453'just inserted' FROM t0_template 7454WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7455CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7456BEGIN 7457UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7458f_charbig = 'updated by trigger' 7459 WHERE f_int1 = - old.f_int1; 7460END| 7461UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7462WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7463 7464# check trigger-4 success: 1 7465DROP TRIGGER trg_1; 7466UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7467f_int2 = CAST(f_char1 AS SIGNED INT), 7468f_charbig = 'just inserted' 7469 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7470DELETE FROM t0_aux 7471WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7472INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7473SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7474'just inserted' FROM t0_template 7475WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7476CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7477BEGIN 7478UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7479f_charbig = 'updated by trigger' 7480 WHERE f_int1 = new.f_int1; 7481END| 7482UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7483WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7484 7485# check trigger-5 success: 1 7486DROP TRIGGER trg_1; 7487UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7488f_int2 = CAST(f_char1 AS SIGNED INT), 7489f_charbig = 'just inserted' 7490 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7491DELETE FROM t0_aux 7492WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7493INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7494SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7495'just inserted' FROM t0_template 7496WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7497CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7498BEGIN 7499UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7500f_charbig = 'updated by trigger' 7501 WHERE f_int1 = - old.f_int1; 7502END| 7503UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7504WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7505 7506# check trigger-6 success: 1 7507DROP TRIGGER trg_1; 7508UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7509f_int2 = CAST(f_char1 AS SIGNED INT), 7510f_charbig = 'just inserted' 7511 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7512DELETE FROM t0_aux 7513WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7514INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7515SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7516'just inserted' FROM t0_template 7517WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7518CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7519BEGIN 7520UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7521f_charbig = 'updated by trigger' 7522 WHERE f_int1 = - old.f_int1; 7523END| 7524DELETE FROM t0_aux 7525WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7526 7527# check trigger-7 success: 1 7528DROP TRIGGER trg_1; 7529UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7530f_int2 = CAST(f_char1 AS SIGNED INT), 7531f_charbig = 'just inserted' 7532 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7533DELETE FROM t0_aux 7534WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7535INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7536SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7537'just inserted' FROM t0_template 7538WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7539CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7540BEGIN 7541UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7542f_charbig = 'updated by trigger' 7543 WHERE f_int1 = - old.f_int1; 7544END| 7545DELETE FROM t0_aux 7546WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7547 7548# check trigger-8 success: 1 7549DROP TRIGGER trg_1; 7550UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7551f_int2 = CAST(f_char1 AS SIGNED INT), 7552f_charbig = 'just inserted' 7553 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7554DELETE FROM t0_aux 7555WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7556DELETE FROM t1 7557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7558CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7559BEGIN 7560SET new.f_int1 = old.f_int1 + @max_row, 7561new.f_int2 = old.f_int2 - @max_row, 7562new.f_charbig = '####updated per update trigger####'; 7563END| 7564UPDATE t1 7565SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7566f_charbig = '####updated per update statement itself####'; 7567 7568# check trigger-9 success: 1 7569DROP TRIGGER trg_2; 7570UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7571f_int2 = CAST(f_char1 AS SIGNED INT), 7572f_charbig = CONCAT('===',f_char1,'==='); 7573CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7574BEGIN 7575SET new.f_int1 = new.f_int1 + @max_row, 7576new.f_int2 = new.f_int2 - @max_row, 7577new.f_charbig = '####updated per update trigger####'; 7578END| 7579UPDATE t1 7580SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7581f_charbig = '####updated per update statement itself####'; 7582 7583# check trigger-10 success: 1 7584DROP TRIGGER trg_2; 7585UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7586f_int2 = CAST(f_char1 AS SIGNED INT), 7587f_charbig = CONCAT('===',f_char1,'==='); 7588CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7589BEGIN 7590SET new.f_int1 = @my_max1 + @counter, 7591new.f_int2 = @my_min2 - @counter, 7592new.f_charbig = '####updated per insert trigger####'; 7593SET @counter = @counter + 1; 7594END| 7595SET @counter = 1; 7596SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7597INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7598SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7599CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7600WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7601ORDER BY f_int1; 7602DROP TRIGGER trg_3; 7603 7604# check trigger-11 success: 1 7605DELETE FROM t1 7606WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7607AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7608AND f_charbig = '####updated per insert trigger####'; 7609CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7610BEGIN 7611SET new.f_int1 = @my_max1 + @counter, 7612new.f_int2 = @my_min2 - @counter, 7613new.f_charbig = '####updated per insert trigger####'; 7614SET @counter = @counter + 1; 7615END| 7616SET @counter = 1; 7617SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7618INSERT INTO t1 (f_char1, f_char2, f_charbig) 7619SELECT CAST(f_int1 AS CHAR), 7620CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7622ORDER BY f_int1; 7623DROP TRIGGER trg_3; 7624 7625# check trigger-12 success: 1 7626DELETE FROM t1 7627WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7628AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7629AND f_charbig = '####updated per insert trigger####'; 7630ANALYZE TABLE t1; 7631Table Op Msg_type Msg_text 7632test.t1 analyze status OK 7633CHECK TABLE t1 EXTENDED; 7634Table Op Msg_type Msg_text 7635test.t1 check status OK 7636CHECKSUM TABLE t1 EXTENDED; 7637Table Checksum 7638test.t1 <some_value> 7639OPTIMIZE TABLE t1; 7640Table Op Msg_type Msg_text 7641test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 7642test.t1 optimize status OK 7643# check layout success: 1 7644REPAIR TABLE t1 EXTENDED; 7645Table Op Msg_type Msg_text 7646test.t1 repair status OK 7647# check layout success: 1 7648TRUNCATE t1; 7649 7650# check TRUNCATE success: 1 7651# check layout success: 1 7652# End usability test (inc/partition_check.inc) 7653DROP TABLE t1; 7654#------------------------------------------------------------------------ 7655# 2 Tables with PRIMARY KEY and/or UNIQUE INDEXes 7656# The partitioning function contains one column. 7657#------------------------------------------------------------------------ 7658# 2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns 7659DROP TABLE IF EXISTS t1; 7660CREATE TABLE t1 ( 7661f_int1 INTEGER, 7662f_int2 INTEGER, 7663f_char1 CHAR(20), 7664f_char2 CHAR(20), 7665f_charbig VARCHAR(1000) 7666, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 7667) 7668PARTITION BY HASH(f_int1) PARTITIONS 2; 7669INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7670SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 7671# Start usability test (inc/partition_check.inc) 7672create_command 7673SHOW CREATE TABLE t1; 7674Table Create Table 7675t1 CREATE TABLE `t1` ( 7676 `f_int1` int(11) NOT NULL, 7677 `f_int2` int(11) NOT NULL, 7678 `f_char1` char(20) DEFAULT NULL, 7679 `f_char2` char(20) DEFAULT NULL, 7680 `f_charbig` varchar(1000) DEFAULT NULL, 7681 PRIMARY KEY (`f_int2`,`f_int1`), 7682 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 7683) ENGINE=InnoDB DEFAULT CHARSET=latin1 7684/*!50100 PARTITION BY HASH (f_int1) 7685PARTITIONS 2 */ 7686 7687unified filelist 7688t1#P#p0.ibd 7689t1#P#p1.ibd 7690t1.frm 7691 7692# check prerequisites-1 success: 1 7693# check COUNT(*) success: 1 7694# check MIN/MAX(f_int1) success: 1 7695# check MIN/MAX(f_int2) success: 1 7696INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7697SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7698CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7699WHERE f_int1 IN (2,3); 7700ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 7701# check prerequisites-3 success: 1 7702# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 7703INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7704SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7705CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7706WHERE f_int1 IN (2,3); 7707DELETE FROM t1 WHERE f_charbig = 'delete me'; 7708INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7709SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7710CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7711WHERE f_int1 IN (2,3); 7712DELETE FROM t1 WHERE f_charbig = 'delete me'; 7713# check read via f_int1 success: 1 7714# check read via f_int2 success: 1 7715 7716# check multiple-1 success: 1 7717DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7718 7719# check multiple-2 success: 1 7720INSERT INTO t1 SELECT * FROM t0_template 7721WHERE MOD(f_int1,3) = 0; 7722 7723# check multiple-3 success: 1 7724UPDATE t1 SET f_int1 = f_int1 + @max_row 7725WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7726AND @max_row_div2 + @max_row_div4; 7727 7728# check multiple-4 success: 1 7729DELETE FROM t1 7730WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7731AND @max_row_div2 + @max_row_div4 + @max_row; 7732 7733# check multiple-5 success: 1 7734SELECT COUNT(*) INTO @try_count FROM t0_template 7735WHERE MOD(f_int1,3) = 0 7736AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7737SELECT COUNT(*) INTO @clash_count 7738FROM t1 INNER JOIN t0_template USING(f_int1) 7739WHERE MOD(f_int1,3) = 0 7740AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7741SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7742INSERT INTO t1 7743SET f_int1 = @cur_value , f_int2 = @cur_value, 7744f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7745f_charbig = '#SINGLE#'; 7746 7747# check single-1 success: 1 7748SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7749INSERT INTO t1 7750SET f_int1 = @cur_value , f_int2 = @cur_value, 7751f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7752f_charbig = '#SINGLE#'; 7753 7754# check single-2 success: 1 7755SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7756SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7757UPDATE t1 SET f_int1 = @cur_value2 7758WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7759 7760# check single-3 success: 1 7761SET @cur_value1= -1; 7762SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7763UPDATE t1 SET f_int1 = @cur_value1 7764WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7765 7766# check single-4 success: 1 7767SELECT MAX(f_int1) INTO @cur_value FROM t1; 7768DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7769 7770# check single-5 success: 1 7771DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7772 7773# check single-6 success: 1 7774INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7775 7776# check single-7 success: 1 7777DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7778DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7779INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7780f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7781f_charbig = '#NULL#'; 7782INSERT INTO t1 7783SET f_int1 = NULL , f_int2 = -@max_row, 7784f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7785f_charbig = '#NULL#'; 7786ERROR 23000: Column 'f_int1' cannot be null 7787# check null success: 1 7788DELETE FROM t1 7789WHERE f_int1 = 0 AND f_int2 = 0 7790AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7791AND f_charbig = '#NULL#'; 7792INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7793SELECT f_int1, f_int1, '', '', 'was inserted' 7794 FROM t0_template source_tab 7795WHERE MOD(f_int1,3) = 0 7796AND f_int1 BETWEEN @max_row_div2 AND @max_row 7797ON DUPLICATE KEY 7798UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 7799f_int2 = 2 * @max_row + source_tab.f_int1, 7800f_charbig = 'was updated'; 7801 7802# check unique-1-a success: 1 7803 7804# check unique-1-b success: 1 7805DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7806UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7807f_int2 = CAST(f_char1 AS SIGNED INT), 7808f_charbig = CONCAT('===',f_char1,'===') 7809WHERE f_charbig = 'was updated'; 7810REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7811SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 7812 FROM t0_template source_tab 7813WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7814 7815# check replace success: 1 7816DELETE FROM t1 7817WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 7818DELETE FROM t1 7819WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 7820f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 7821UPDATE t1 SET f_int2 = f_int1, 7822f_char1 = CAST(f_int1 AS CHAR), 7823f_char2 = CAST(f_int1 AS CHAR), 7824f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 7825WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 7826SET AUTOCOMMIT= 0; 7827INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7828SELECT f_int1, f_int1, '', '', 'was inserted' 7829FROM t0_template source_tab 7830WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7831 7832# check transactions-1 success: 1 7833COMMIT WORK; 7834 7835# check transactions-2 success: 1 7836ROLLBACK WORK; 7837 7838# check transactions-3 success: 1 7839DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7840COMMIT WORK; 7841ROLLBACK WORK; 7842 7843# check transactions-4 success: 1 7844INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7845SELECT f_int1, f_int1, '', '', 'was inserted' 7846FROM t0_template source_tab 7847WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7848 7849# check transactions-5 success: 1 7850ROLLBACK WORK; 7851 7852# check transactions-6 success: 1 7853# INFO: Storage engine used for t1 seems to be transactional. 7854COMMIT; 7855 7856# check transactions-7 success: 1 7857DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7858COMMIT WORK; 7859SET @@session.sql_mode = 'traditional'; 7860Warnings: 7861Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7862SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7863INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7864SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7865'', '', 'was inserted' FROM t0_template 7866WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7867ERROR 22012: Division by 0 7868COMMIT; 7869 7870# check transactions-8 success: 1 7871# INFO: Storage engine used for t1 seems to be able to revert 7872# changes made by the failing statement. 7873SET @@session.sql_mode = ''; 7874Warnings: 7875Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7876SET AUTOCOMMIT= 1; 7877DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7878COMMIT WORK; 7879UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7880 7881# check special-1 success: 1 7882UPDATE t1 SET f_charbig = ''; 7883 7884# check special-2 success: 1 7885UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7886INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7887SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7888WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7889INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7890SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7891'just inserted' FROM t0_template 7892WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7893CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7894BEGIN 7895UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7896f_charbig = 'updated by trigger' 7897 WHERE f_int1 = new.f_int1; 7898END| 7899INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7900SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7901WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7902 7903# check trigger-1 success: 1 7904DROP TRIGGER trg_1; 7905UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7906f_int2 = CAST(f_char1 AS SIGNED INT), 7907f_charbig = 'just inserted' 7908 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7909DELETE FROM t0_aux 7910WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7911INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7912SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7913'just inserted' FROM t0_template 7914WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7915CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7916BEGIN 7917UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7918f_charbig = 'updated by trigger' 7919 WHERE f_int1 = new.f_int1; 7920END| 7921INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7922SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7924 7925# check trigger-2 success: 1 7926DROP TRIGGER trg_1; 7927UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7928f_int2 = CAST(f_char1 AS SIGNED INT), 7929f_charbig = 'just inserted' 7930 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7931DELETE FROM t0_aux 7932WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7933INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7934SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7935'just inserted' FROM t0_template 7936WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7937CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7938BEGIN 7939UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7940f_charbig = 'updated by trigger' 7941 WHERE f_int1 = new.f_int1; 7942END| 7943UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7944WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7945 7946# check trigger-3 success: 1 7947DROP TRIGGER trg_1; 7948UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7949f_int2 = CAST(f_char1 AS SIGNED INT), 7950f_charbig = 'just inserted' 7951 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7952DELETE FROM t0_aux 7953WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7955SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7956'just inserted' FROM t0_template 7957WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7958CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7959BEGIN 7960UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7961f_charbig = 'updated by trigger' 7962 WHERE f_int1 = - old.f_int1; 7963END| 7964UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7965WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7966 7967# check trigger-4 success: 1 7968DROP TRIGGER trg_1; 7969UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7970f_int2 = CAST(f_char1 AS SIGNED INT), 7971f_charbig = 'just inserted' 7972 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7973DELETE FROM t0_aux 7974WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7975INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7976SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7977'just inserted' FROM t0_template 7978WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7979CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7980BEGIN 7981UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7982f_charbig = 'updated by trigger' 7983 WHERE f_int1 = new.f_int1; 7984END| 7985UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7986WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7987 7988# check trigger-5 success: 1 7989DROP TRIGGER trg_1; 7990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7991f_int2 = CAST(f_char1 AS SIGNED INT), 7992f_charbig = 'just inserted' 7993 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7994DELETE FROM t0_aux 7995WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7996INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7997SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7998'just inserted' FROM t0_template 7999WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8000CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8001BEGIN 8002UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8003f_charbig = 'updated by trigger' 8004 WHERE f_int1 = - old.f_int1; 8005END| 8006UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8007WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8008 8009# check trigger-6 success: 1 8010DROP TRIGGER trg_1; 8011UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8012f_int2 = CAST(f_char1 AS SIGNED INT), 8013f_charbig = 'just inserted' 8014 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8015DELETE FROM t0_aux 8016WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8017INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8018SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8019'just inserted' FROM t0_template 8020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8021CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8022BEGIN 8023UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8024f_charbig = 'updated by trigger' 8025 WHERE f_int1 = - old.f_int1; 8026END| 8027DELETE FROM t0_aux 8028WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8029 8030# check trigger-7 success: 1 8031DROP TRIGGER trg_1; 8032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8033f_int2 = CAST(f_char1 AS SIGNED INT), 8034f_charbig = 'just inserted' 8035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8036DELETE FROM t0_aux 8037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8040'just inserted' FROM t0_template 8041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8042CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8043BEGIN 8044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8045f_charbig = 'updated by trigger' 8046 WHERE f_int1 = - old.f_int1; 8047END| 8048DELETE FROM t0_aux 8049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8050 8051# check trigger-8 success: 1 8052DROP TRIGGER trg_1; 8053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8054f_int2 = CAST(f_char1 AS SIGNED INT), 8055f_charbig = 'just inserted' 8056 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8057DELETE FROM t0_aux 8058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8059DELETE FROM t1 8060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8061CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8062BEGIN 8063SET new.f_int1 = old.f_int1 + @max_row, 8064new.f_int2 = old.f_int2 - @max_row, 8065new.f_charbig = '####updated per update trigger####'; 8066END| 8067UPDATE t1 8068SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8069f_charbig = '####updated per update statement itself####'; 8070 8071# check trigger-9 success: 1 8072DROP TRIGGER trg_2; 8073UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8074f_int2 = CAST(f_char1 AS SIGNED INT), 8075f_charbig = CONCAT('===',f_char1,'==='); 8076CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8077BEGIN 8078SET new.f_int1 = new.f_int1 + @max_row, 8079new.f_int2 = new.f_int2 - @max_row, 8080new.f_charbig = '####updated per update trigger####'; 8081END| 8082UPDATE t1 8083SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8084f_charbig = '####updated per update statement itself####'; 8085 8086# check trigger-10 success: 1 8087DROP TRIGGER trg_2; 8088UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8089f_int2 = CAST(f_char1 AS SIGNED INT), 8090f_charbig = CONCAT('===',f_char1,'==='); 8091CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8092BEGIN 8093SET new.f_int1 = @my_max1 + @counter, 8094new.f_int2 = @my_min2 - @counter, 8095new.f_charbig = '####updated per insert trigger####'; 8096SET @counter = @counter + 1; 8097END| 8098SET @counter = 1; 8099SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8100INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8101SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8102CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8104ORDER BY f_int1; 8105DROP TRIGGER trg_3; 8106 8107# check trigger-11 success: 1 8108DELETE FROM t1 8109WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8110AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8111AND f_charbig = '####updated per insert trigger####'; 8112CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8113BEGIN 8114SET new.f_int1 = @my_max1 + @counter, 8115new.f_int2 = @my_min2 - @counter, 8116new.f_charbig = '####updated per insert trigger####'; 8117SET @counter = @counter + 1; 8118END| 8119SET @counter = 1; 8120SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8121INSERT INTO t1 (f_char1, f_char2, f_charbig) 8122SELECT CAST(f_int1 AS CHAR), 8123CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8125ORDER BY f_int1; 8126DROP TRIGGER trg_3; 8127 8128# check trigger-12 success: 1 8129DELETE FROM t1 8130WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8131AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8132AND f_charbig = '####updated per insert trigger####'; 8133ANALYZE TABLE t1; 8134Table Op Msg_type Msg_text 8135test.t1 analyze status OK 8136CHECK TABLE t1 EXTENDED; 8137Table Op Msg_type Msg_text 8138test.t1 check status OK 8139CHECKSUM TABLE t1 EXTENDED; 8140Table Checksum 8141test.t1 <some_value> 8142OPTIMIZE TABLE t1; 8143Table Op Msg_type Msg_text 8144test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 8145test.t1 optimize status OK 8146# check layout success: 1 8147REPAIR TABLE t1 EXTENDED; 8148Table Op Msg_type Msg_text 8149test.t1 repair status OK 8150# check layout success: 1 8151TRUNCATE t1; 8152 8153# check TRUNCATE success: 1 8154# check layout success: 1 8155# End usability test (inc/partition_check.inc) 8156DROP TABLE t1; 8157CREATE TABLE t1 ( 8158f_int1 INTEGER, 8159f_int2 INTEGER, 8160f_char1 CHAR(20), 8161f_char2 CHAR(20), 8162f_charbig VARCHAR(1000) 8163, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 8164) 8165PARTITION BY KEY(f_int1) PARTITIONS 5; 8166INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8167SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 8168# Start usability test (inc/partition_check.inc) 8169create_command 8170SHOW CREATE TABLE t1; 8171Table Create Table 8172t1 CREATE TABLE `t1` ( 8173 `f_int1` int(11) NOT NULL, 8174 `f_int2` int(11) NOT NULL, 8175 `f_char1` char(20) DEFAULT NULL, 8176 `f_char2` char(20) DEFAULT NULL, 8177 `f_charbig` varchar(1000) DEFAULT NULL, 8178 PRIMARY KEY (`f_int2`,`f_int1`), 8179 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 8180) ENGINE=InnoDB DEFAULT CHARSET=latin1 8181/*!50100 PARTITION BY KEY (f_int1) 8182PARTITIONS 5 */ 8183 8184unified filelist 8185t1#P#p0.ibd 8186t1#P#p1.ibd 8187t1#P#p2.ibd 8188t1#P#p3.ibd 8189t1#P#p4.ibd 8190t1.frm 8191 8192# check prerequisites-1 success: 1 8193# check COUNT(*) success: 1 8194# check MIN/MAX(f_int1) success: 1 8195# check MIN/MAX(f_int2) success: 1 8196INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8197SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8198CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8199WHERE f_int1 IN (2,3); 8200ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 8201# check prerequisites-3 success: 1 8202# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8203INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8204SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8205CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8206WHERE f_int1 IN (2,3); 8207DELETE FROM t1 WHERE f_charbig = 'delete me'; 8208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8209SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8210CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8211WHERE f_int1 IN (2,3); 8212DELETE FROM t1 WHERE f_charbig = 'delete me'; 8213# check read via f_int1 success: 1 8214# check read via f_int2 success: 1 8215 8216# check multiple-1 success: 1 8217DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8218 8219# check multiple-2 success: 1 8220INSERT INTO t1 SELECT * FROM t0_template 8221WHERE MOD(f_int1,3) = 0; 8222 8223# check multiple-3 success: 1 8224UPDATE t1 SET f_int1 = f_int1 + @max_row 8225WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8226AND @max_row_div2 + @max_row_div4; 8227 8228# check multiple-4 success: 1 8229DELETE FROM t1 8230WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8231AND @max_row_div2 + @max_row_div4 + @max_row; 8232 8233# check multiple-5 success: 1 8234SELECT COUNT(*) INTO @try_count FROM t0_template 8235WHERE MOD(f_int1,3) = 0 8236AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8237SELECT COUNT(*) INTO @clash_count 8238FROM t1 INNER JOIN t0_template USING(f_int1) 8239WHERE MOD(f_int1,3) = 0 8240AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8241SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8242INSERT INTO t1 8243SET f_int1 = @cur_value , f_int2 = @cur_value, 8244f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8245f_charbig = '#SINGLE#'; 8246 8247# check single-1 success: 1 8248SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8249INSERT INTO t1 8250SET f_int1 = @cur_value , f_int2 = @cur_value, 8251f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8252f_charbig = '#SINGLE#'; 8253 8254# check single-2 success: 1 8255SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8256SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8257UPDATE t1 SET f_int1 = @cur_value2 8258WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8259 8260# check single-3 success: 1 8261SET @cur_value1= -1; 8262SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8263UPDATE t1 SET f_int1 = @cur_value1 8264WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8265 8266# check single-4 success: 1 8267SELECT MAX(f_int1) INTO @cur_value FROM t1; 8268DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8269 8270# check single-5 success: 1 8271DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8272 8273# check single-6 success: 1 8274INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8275 8276# check single-7 success: 1 8277DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8278DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8279INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8280f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8281f_charbig = '#NULL#'; 8282INSERT INTO t1 8283SET f_int1 = NULL , f_int2 = -@max_row, 8284f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8285f_charbig = '#NULL#'; 8286ERROR 23000: Column 'f_int1' cannot be null 8287# check null success: 1 8288DELETE FROM t1 8289WHERE f_int1 = 0 AND f_int2 = 0 8290AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8291AND f_charbig = '#NULL#'; 8292INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8293SELECT f_int1, f_int1, '', '', 'was inserted' 8294 FROM t0_template source_tab 8295WHERE MOD(f_int1,3) = 0 8296AND f_int1 BETWEEN @max_row_div2 AND @max_row 8297ON DUPLICATE KEY 8298UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8299f_int2 = 2 * @max_row + source_tab.f_int1, 8300f_charbig = 'was updated'; 8301 8302# check unique-1-a success: 1 8303 8304# check unique-1-b success: 1 8305DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8306UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8307f_int2 = CAST(f_char1 AS SIGNED INT), 8308f_charbig = CONCAT('===',f_char1,'===') 8309WHERE f_charbig = 'was updated'; 8310REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8311SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8312 FROM t0_template source_tab 8313WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8314 8315# check replace success: 1 8316DELETE FROM t1 8317WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8318DELETE FROM t1 8319WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8320f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8321UPDATE t1 SET f_int2 = f_int1, 8322f_char1 = CAST(f_int1 AS CHAR), 8323f_char2 = CAST(f_int1 AS CHAR), 8324f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8325WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8326SET AUTOCOMMIT= 0; 8327INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8328SELECT f_int1, f_int1, '', '', 'was inserted' 8329FROM t0_template source_tab 8330WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8331 8332# check transactions-1 success: 1 8333COMMIT WORK; 8334 8335# check transactions-2 success: 1 8336ROLLBACK WORK; 8337 8338# check transactions-3 success: 1 8339DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8340COMMIT WORK; 8341ROLLBACK WORK; 8342 8343# check transactions-4 success: 1 8344INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8345SELECT f_int1, f_int1, '', '', 'was inserted' 8346FROM t0_template source_tab 8347WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8348 8349# check transactions-5 success: 1 8350ROLLBACK WORK; 8351 8352# check transactions-6 success: 1 8353# INFO: Storage engine used for t1 seems to be transactional. 8354COMMIT; 8355 8356# check transactions-7 success: 1 8357DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8358COMMIT WORK; 8359SET @@session.sql_mode = 'traditional'; 8360Warnings: 8361Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8362SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8364SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8365'', '', 'was inserted' FROM t0_template 8366WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8367ERROR 22012: Division by 0 8368COMMIT; 8369 8370# check transactions-8 success: 1 8371# INFO: Storage engine used for t1 seems to be able to revert 8372# changes made by the failing statement. 8373SET @@session.sql_mode = ''; 8374Warnings: 8375Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8376SET AUTOCOMMIT= 1; 8377DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8378COMMIT WORK; 8379UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8380 8381# check special-1 success: 1 8382UPDATE t1 SET f_charbig = ''; 8383 8384# check special-2 success: 1 8385UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8386INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8387SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8389INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8390SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8391'just inserted' FROM t0_template 8392WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8393CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8394BEGIN 8395UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8396f_charbig = 'updated by trigger' 8397 WHERE f_int1 = new.f_int1; 8398END| 8399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8400SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8401WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8402 8403# check trigger-1 success: 1 8404DROP TRIGGER trg_1; 8405UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8406f_int2 = CAST(f_char1 AS SIGNED INT), 8407f_charbig = 'just inserted' 8408 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8409DELETE FROM t0_aux 8410WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8411INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8412SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8413'just inserted' FROM t0_template 8414WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8415CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8416BEGIN 8417UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8418f_charbig = 'updated by trigger' 8419 WHERE f_int1 = new.f_int1; 8420END| 8421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8422SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8424 8425# check trigger-2 success: 1 8426DROP TRIGGER trg_1; 8427UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8428f_int2 = CAST(f_char1 AS SIGNED INT), 8429f_charbig = 'just inserted' 8430 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8431DELETE FROM t0_aux 8432WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8433INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8434SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8435'just inserted' FROM t0_template 8436WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8437CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8438BEGIN 8439UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8440f_charbig = 'updated by trigger' 8441 WHERE f_int1 = new.f_int1; 8442END| 8443UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8444WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8445 8446# check trigger-3 success: 1 8447DROP TRIGGER trg_1; 8448UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8449f_int2 = CAST(f_char1 AS SIGNED INT), 8450f_charbig = 'just inserted' 8451 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8452DELETE FROM t0_aux 8453WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8454INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8455SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8456'just inserted' FROM t0_template 8457WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8458CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8459BEGIN 8460UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8461f_charbig = 'updated by trigger' 8462 WHERE f_int1 = - old.f_int1; 8463END| 8464UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8465WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8466 8467# check trigger-4 success: 1 8468DROP TRIGGER trg_1; 8469UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8470f_int2 = CAST(f_char1 AS SIGNED INT), 8471f_charbig = 'just inserted' 8472 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8473DELETE FROM t0_aux 8474WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8475INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8476SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8477'just inserted' FROM t0_template 8478WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8479CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8480BEGIN 8481UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8482f_charbig = 'updated by trigger' 8483 WHERE f_int1 = new.f_int1; 8484END| 8485UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8486WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8487 8488# check trigger-5 success: 1 8489DROP TRIGGER trg_1; 8490UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8491f_int2 = CAST(f_char1 AS SIGNED INT), 8492f_charbig = 'just inserted' 8493 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8494DELETE FROM t0_aux 8495WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8496INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8497SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8498'just inserted' FROM t0_template 8499WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8500CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8501BEGIN 8502UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8503f_charbig = 'updated by trigger' 8504 WHERE f_int1 = - old.f_int1; 8505END| 8506UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8507WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8508 8509# check trigger-6 success: 1 8510DROP TRIGGER trg_1; 8511UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8512f_int2 = CAST(f_char1 AS SIGNED INT), 8513f_charbig = 'just inserted' 8514 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8515DELETE FROM t0_aux 8516WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8517INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8518SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8519'just inserted' FROM t0_template 8520WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8521CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8522BEGIN 8523UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8524f_charbig = 'updated by trigger' 8525 WHERE f_int1 = - old.f_int1; 8526END| 8527DELETE FROM t0_aux 8528WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8529 8530# check trigger-7 success: 1 8531DROP TRIGGER trg_1; 8532UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8533f_int2 = CAST(f_char1 AS SIGNED INT), 8534f_charbig = 'just inserted' 8535 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8536DELETE FROM t0_aux 8537WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8538INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8539SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8540'just inserted' FROM t0_template 8541WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8542CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8543BEGIN 8544UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8545f_charbig = 'updated by trigger' 8546 WHERE f_int1 = - old.f_int1; 8547END| 8548DELETE FROM t0_aux 8549WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8550 8551# check trigger-8 success: 1 8552DROP TRIGGER trg_1; 8553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8554f_int2 = CAST(f_char1 AS SIGNED INT), 8555f_charbig = 'just inserted' 8556 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8557DELETE FROM t0_aux 8558WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8559DELETE FROM t1 8560WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8561CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8562BEGIN 8563SET new.f_int1 = old.f_int1 + @max_row, 8564new.f_int2 = old.f_int2 - @max_row, 8565new.f_charbig = '####updated per update trigger####'; 8566END| 8567UPDATE t1 8568SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8569f_charbig = '####updated per update statement itself####'; 8570 8571# check trigger-9 success: 1 8572DROP TRIGGER trg_2; 8573UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8574f_int2 = CAST(f_char1 AS SIGNED INT), 8575f_charbig = CONCAT('===',f_char1,'==='); 8576CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8577BEGIN 8578SET new.f_int1 = new.f_int1 + @max_row, 8579new.f_int2 = new.f_int2 - @max_row, 8580new.f_charbig = '####updated per update trigger####'; 8581END| 8582UPDATE t1 8583SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8584f_charbig = '####updated per update statement itself####'; 8585 8586# check trigger-10 success: 1 8587DROP TRIGGER trg_2; 8588UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8589f_int2 = CAST(f_char1 AS SIGNED INT), 8590f_charbig = CONCAT('===',f_char1,'==='); 8591CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8592BEGIN 8593SET new.f_int1 = @my_max1 + @counter, 8594new.f_int2 = @my_min2 - @counter, 8595new.f_charbig = '####updated per insert trigger####'; 8596SET @counter = @counter + 1; 8597END| 8598SET @counter = 1; 8599SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8600INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8601SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8602CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8603WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8604ORDER BY f_int1; 8605DROP TRIGGER trg_3; 8606 8607# check trigger-11 success: 1 8608DELETE FROM t1 8609WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8610AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8611AND f_charbig = '####updated per insert trigger####'; 8612CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8613BEGIN 8614SET new.f_int1 = @my_max1 + @counter, 8615new.f_int2 = @my_min2 - @counter, 8616new.f_charbig = '####updated per insert trigger####'; 8617SET @counter = @counter + 1; 8618END| 8619SET @counter = 1; 8620SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8621INSERT INTO t1 (f_char1, f_char2, f_charbig) 8622SELECT CAST(f_int1 AS CHAR), 8623CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8624WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8625ORDER BY f_int1; 8626DROP TRIGGER trg_3; 8627 8628# check trigger-12 success: 1 8629DELETE FROM t1 8630WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8631AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8632AND f_charbig = '####updated per insert trigger####'; 8633ANALYZE TABLE t1; 8634Table Op Msg_type Msg_text 8635test.t1 analyze status OK 8636CHECK TABLE t1 EXTENDED; 8637Table Op Msg_type Msg_text 8638test.t1 check status OK 8639CHECKSUM TABLE t1 EXTENDED; 8640Table Checksum 8641test.t1 <some_value> 8642OPTIMIZE TABLE t1; 8643Table Op Msg_type Msg_text 8644test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 8645test.t1 optimize status OK 8646# check layout success: 1 8647REPAIR TABLE t1 EXTENDED; 8648Table Op Msg_type Msg_text 8649test.t1 repair status OK 8650# check layout success: 1 8651TRUNCATE t1; 8652 8653# check TRUNCATE success: 1 8654# check layout success: 1 8655# End usability test (inc/partition_check.inc) 8656DROP TABLE t1; 8657CREATE TABLE t1 ( 8658f_int1 INTEGER, 8659f_int2 INTEGER, 8660f_char1 CHAR(20), 8661f_char2 CHAR(20), 8662f_charbig VARCHAR(1000) 8663, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 8664) 8665PARTITION BY LIST(MOD(f_int1,4)) 8666(PARTITION part_3 VALUES IN (-3), 8667PARTITION part_2 VALUES IN (-2), 8668PARTITION part_1 VALUES IN (-1), 8669PARTITION part_N VALUES IN (NULL), 8670PARTITION part0 VALUES IN (0), 8671PARTITION part1 VALUES IN (1), 8672PARTITION part2 VALUES IN (2), 8673PARTITION part3 VALUES IN (3)); 8674INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8675SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 8676# Start usability test (inc/partition_check.inc) 8677create_command 8678SHOW CREATE TABLE t1; 8679Table Create Table 8680t1 CREATE TABLE `t1` ( 8681 `f_int1` int(11) NOT NULL, 8682 `f_int2` int(11) NOT NULL, 8683 `f_char1` char(20) DEFAULT NULL, 8684 `f_char2` char(20) DEFAULT NULL, 8685 `f_charbig` varchar(1000) DEFAULT NULL, 8686 PRIMARY KEY (`f_int2`,`f_int1`), 8687 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 8688) ENGINE=InnoDB DEFAULT CHARSET=latin1 8689/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 8690(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 8691 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 8692 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 8693 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 8694 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 8695 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 8696 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 8697 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 8698 8699unified filelist 8700t1#P#part0.ibd 8701t1#P#part1.ibd 8702t1#P#part2.ibd 8703t1#P#part3.ibd 8704t1#P#part_1.ibd 8705t1#P#part_2.ibd 8706t1#P#part_3.ibd 8707t1#P#part_N.ibd 8708t1.frm 8709 8710# check prerequisites-1 success: 1 8711# check COUNT(*) success: 1 8712# check MIN/MAX(f_int1) success: 1 8713# check MIN/MAX(f_int2) success: 1 8714INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8715SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8716CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8717WHERE f_int1 IN (2,3); 8718ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 8719# check prerequisites-3 success: 1 8720# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8721INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8722SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8723CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8724WHERE f_int1 IN (2,3); 8725DELETE FROM t1 WHERE f_charbig = 'delete me'; 8726INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8727SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8728CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8729WHERE f_int1 IN (2,3); 8730DELETE FROM t1 WHERE f_charbig = 'delete me'; 8731# check read via f_int1 success: 1 8732# check read via f_int2 success: 1 8733 8734# check multiple-1 success: 1 8735DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8736 8737# check multiple-2 success: 1 8738INSERT INTO t1 SELECT * FROM t0_template 8739WHERE MOD(f_int1,3) = 0; 8740 8741# check multiple-3 success: 1 8742UPDATE t1 SET f_int1 = f_int1 + @max_row 8743WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8744AND @max_row_div2 + @max_row_div4; 8745 8746# check multiple-4 success: 1 8747DELETE FROM t1 8748WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8749AND @max_row_div2 + @max_row_div4 + @max_row; 8750 8751# check multiple-5 success: 1 8752SELECT COUNT(*) INTO @try_count FROM t0_template 8753WHERE MOD(f_int1,3) = 0 8754AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8755SELECT COUNT(*) INTO @clash_count 8756FROM t1 INNER JOIN t0_template USING(f_int1) 8757WHERE MOD(f_int1,3) = 0 8758AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8759SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8760INSERT INTO t1 8761SET f_int1 = @cur_value , f_int2 = @cur_value, 8762f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8763f_charbig = '#SINGLE#'; 8764 8765# check single-1 success: 1 8766SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8767INSERT INTO t1 8768SET f_int1 = @cur_value , f_int2 = @cur_value, 8769f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8770f_charbig = '#SINGLE#'; 8771 8772# check single-2 success: 1 8773SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8774SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8775UPDATE t1 SET f_int1 = @cur_value2 8776WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8777 8778# check single-3 success: 1 8779SET @cur_value1= -1; 8780SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8781UPDATE t1 SET f_int1 = @cur_value1 8782WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8783 8784# check single-4 success: 1 8785SELECT MAX(f_int1) INTO @cur_value FROM t1; 8786DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8787 8788# check single-5 success: 1 8789DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8790 8791# check single-6 success: 1 8792INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8793 8794# check single-7 success: 1 8795DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8796DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8797INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8798f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8799f_charbig = '#NULL#'; 8800INSERT INTO t1 8801SET f_int1 = NULL , f_int2 = -@max_row, 8802f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8803f_charbig = '#NULL#'; 8804ERROR 23000: Column 'f_int1' cannot be null 8805# check null success: 1 8806DELETE FROM t1 8807WHERE f_int1 = 0 AND f_int2 = 0 8808AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8809AND f_charbig = '#NULL#'; 8810INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8811SELECT f_int1, f_int1, '', '', 'was inserted' 8812 FROM t0_template source_tab 8813WHERE MOD(f_int1,3) = 0 8814AND f_int1 BETWEEN @max_row_div2 AND @max_row 8815ON DUPLICATE KEY 8816UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8817f_int2 = 2 * @max_row + source_tab.f_int1, 8818f_charbig = 'was updated'; 8819 8820# check unique-1-a success: 1 8821 8822# check unique-1-b success: 1 8823DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8824UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8825f_int2 = CAST(f_char1 AS SIGNED INT), 8826f_charbig = CONCAT('===',f_char1,'===') 8827WHERE f_charbig = 'was updated'; 8828REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8829SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8830 FROM t0_template source_tab 8831WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8832 8833# check replace success: 1 8834DELETE FROM t1 8835WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8836DELETE FROM t1 8837WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8838f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8839UPDATE t1 SET f_int2 = f_int1, 8840f_char1 = CAST(f_int1 AS CHAR), 8841f_char2 = CAST(f_int1 AS CHAR), 8842f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8843WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8844SET AUTOCOMMIT= 0; 8845INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8846SELECT f_int1, f_int1, '', '', 'was inserted' 8847FROM t0_template source_tab 8848WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8849 8850# check transactions-1 success: 1 8851COMMIT WORK; 8852 8853# check transactions-2 success: 1 8854ROLLBACK WORK; 8855 8856# check transactions-3 success: 1 8857DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8858COMMIT WORK; 8859ROLLBACK WORK; 8860 8861# check transactions-4 success: 1 8862INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8863SELECT f_int1, f_int1, '', '', 'was inserted' 8864FROM t0_template source_tab 8865WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8866 8867# check transactions-5 success: 1 8868ROLLBACK WORK; 8869 8870# check transactions-6 success: 1 8871# INFO: Storage engine used for t1 seems to be transactional. 8872COMMIT; 8873 8874# check transactions-7 success: 1 8875DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8876COMMIT WORK; 8877SET @@session.sql_mode = 'traditional'; 8878Warnings: 8879Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8880SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8881INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8882SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8883'', '', 'was inserted' FROM t0_template 8884WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8885ERROR 22012: Division by 0 8886COMMIT; 8887 8888# check transactions-8 success: 1 8889# INFO: Storage engine used for t1 seems to be able to revert 8890# changes made by the failing statement. 8891SET @@session.sql_mode = ''; 8892Warnings: 8893Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8894SET AUTOCOMMIT= 1; 8895DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8896COMMIT WORK; 8897UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8898 8899# check special-1 success: 1 8900UPDATE t1 SET f_charbig = ''; 8901 8902# check special-2 success: 1 8903UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8904INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8905SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8906WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8907INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8908SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8909'just inserted' FROM t0_template 8910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8911CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8912BEGIN 8913UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8914f_charbig = 'updated by trigger' 8915 WHERE f_int1 = new.f_int1; 8916END| 8917INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8918SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8919WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8920 8921# check trigger-1 success: 1 8922DROP TRIGGER trg_1; 8923UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8924f_int2 = CAST(f_char1 AS SIGNED INT), 8925f_charbig = 'just inserted' 8926 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8927DELETE FROM t0_aux 8928WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8929INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8930SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8931'just inserted' FROM t0_template 8932WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8933CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8934BEGIN 8935UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8936f_charbig = 'updated by trigger' 8937 WHERE f_int1 = new.f_int1; 8938END| 8939INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8940SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8942 8943# check trigger-2 success: 1 8944DROP TRIGGER trg_1; 8945UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8946f_int2 = CAST(f_char1 AS SIGNED INT), 8947f_charbig = 'just inserted' 8948 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8949DELETE FROM t0_aux 8950WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8951INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8952SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8953'just inserted' FROM t0_template 8954WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8955CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8956BEGIN 8957UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8958f_charbig = 'updated by trigger' 8959 WHERE f_int1 = new.f_int1; 8960END| 8961UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8962WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8963 8964# check trigger-3 success: 1 8965DROP TRIGGER trg_1; 8966UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8967f_int2 = CAST(f_char1 AS SIGNED INT), 8968f_charbig = 'just inserted' 8969 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8970DELETE FROM t0_aux 8971WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8972INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8973SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8974'just inserted' FROM t0_template 8975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8976CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8977BEGIN 8978UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8979f_charbig = 'updated by trigger' 8980 WHERE f_int1 = - old.f_int1; 8981END| 8982UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8983WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8984 8985# check trigger-4 success: 1 8986DROP TRIGGER trg_1; 8987UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8988f_int2 = CAST(f_char1 AS SIGNED INT), 8989f_charbig = 'just inserted' 8990 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8991DELETE FROM t0_aux 8992WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8993INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8994SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8995'just inserted' FROM t0_template 8996WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8997CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8998BEGIN 8999UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9000f_charbig = 'updated by trigger' 9001 WHERE f_int1 = new.f_int1; 9002END| 9003UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9004WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9005 9006# check trigger-5 success: 1 9007DROP TRIGGER trg_1; 9008UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9009f_int2 = CAST(f_char1 AS SIGNED INT), 9010f_charbig = 'just inserted' 9011 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9012DELETE FROM t0_aux 9013WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9014INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9015SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9016'just inserted' FROM t0_template 9017WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9018CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9019BEGIN 9020UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9021f_charbig = 'updated by trigger' 9022 WHERE f_int1 = - old.f_int1; 9023END| 9024UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9025WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9026 9027# check trigger-6 success: 1 9028DROP TRIGGER trg_1; 9029UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9030f_int2 = CAST(f_char1 AS SIGNED INT), 9031f_charbig = 'just inserted' 9032 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9033DELETE FROM t0_aux 9034WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9035INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9036SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9037'just inserted' FROM t0_template 9038WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9039CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9040BEGIN 9041UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9042f_charbig = 'updated by trigger' 9043 WHERE f_int1 = - old.f_int1; 9044END| 9045DELETE FROM t0_aux 9046WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9047 9048# check trigger-7 success: 1 9049DROP TRIGGER trg_1; 9050UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9051f_int2 = CAST(f_char1 AS SIGNED INT), 9052f_charbig = 'just inserted' 9053 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9054DELETE FROM t0_aux 9055WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9056INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9057SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9058'just inserted' FROM t0_template 9059WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9060CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9061BEGIN 9062UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9063f_charbig = 'updated by trigger' 9064 WHERE f_int1 = - old.f_int1; 9065END| 9066DELETE FROM t0_aux 9067WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9068 9069# check trigger-8 success: 1 9070DROP TRIGGER trg_1; 9071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9072f_int2 = CAST(f_char1 AS SIGNED INT), 9073f_charbig = 'just inserted' 9074 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9075DELETE FROM t0_aux 9076WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9077DELETE FROM t1 9078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9079CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9080BEGIN 9081SET new.f_int1 = old.f_int1 + @max_row, 9082new.f_int2 = old.f_int2 - @max_row, 9083new.f_charbig = '####updated per update trigger####'; 9084END| 9085UPDATE t1 9086SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9087f_charbig = '####updated per update statement itself####'; 9088 9089# check trigger-9 success: 1 9090DROP TRIGGER trg_2; 9091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9092f_int2 = CAST(f_char1 AS SIGNED INT), 9093f_charbig = CONCAT('===',f_char1,'==='); 9094CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9095BEGIN 9096SET new.f_int1 = new.f_int1 + @max_row, 9097new.f_int2 = new.f_int2 - @max_row, 9098new.f_charbig = '####updated per update trigger####'; 9099END| 9100UPDATE t1 9101SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9102f_charbig = '####updated per update statement itself####'; 9103 9104# check trigger-10 success: 1 9105DROP TRIGGER trg_2; 9106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9107f_int2 = CAST(f_char1 AS SIGNED INT), 9108f_charbig = CONCAT('===',f_char1,'==='); 9109CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9110BEGIN 9111SET new.f_int1 = @my_max1 + @counter, 9112new.f_int2 = @my_min2 - @counter, 9113new.f_charbig = '####updated per insert trigger####'; 9114SET @counter = @counter + 1; 9115END| 9116SET @counter = 1; 9117SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9118INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9119SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9120CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9121WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9122ORDER BY f_int1; 9123DROP TRIGGER trg_3; 9124 9125# check trigger-11 success: 1 9126DELETE FROM t1 9127WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9128AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9129AND f_charbig = '####updated per insert trigger####'; 9130CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9131BEGIN 9132SET new.f_int1 = @my_max1 + @counter, 9133new.f_int2 = @my_min2 - @counter, 9134new.f_charbig = '####updated per insert trigger####'; 9135SET @counter = @counter + 1; 9136END| 9137SET @counter = 1; 9138SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9139INSERT INTO t1 (f_char1, f_char2, f_charbig) 9140SELECT CAST(f_int1 AS CHAR), 9141CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9143ORDER BY f_int1; 9144DROP TRIGGER trg_3; 9145 9146# check trigger-12 success: 1 9147DELETE FROM t1 9148WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9149AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9150AND f_charbig = '####updated per insert trigger####'; 9151ANALYZE TABLE t1; 9152Table Op Msg_type Msg_text 9153test.t1 analyze status OK 9154CHECK TABLE t1 EXTENDED; 9155Table Op Msg_type Msg_text 9156test.t1 check status OK 9157CHECKSUM TABLE t1 EXTENDED; 9158Table Checksum 9159test.t1 <some_value> 9160OPTIMIZE TABLE t1; 9161Table Op Msg_type Msg_text 9162test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 9163test.t1 optimize status OK 9164# check layout success: 1 9165REPAIR TABLE t1 EXTENDED; 9166Table Op Msg_type Msg_text 9167test.t1 repair status OK 9168# check layout success: 1 9169TRUNCATE t1; 9170 9171# check TRUNCATE success: 1 9172# check layout success: 1 9173# End usability test (inc/partition_check.inc) 9174DROP TABLE t1; 9175CREATE TABLE t1 ( 9176f_int1 INTEGER, 9177f_int2 INTEGER, 9178f_char1 CHAR(20), 9179f_char2 CHAR(20), 9180f_charbig VARCHAR(1000) 9181, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 9182) 9183PARTITION BY RANGE(f_int1) 9184(PARTITION parta VALUES LESS THAN (0), 9185PARTITION partb VALUES LESS THAN (5), 9186PARTITION partc VALUES LESS THAN (10), 9187PARTITION partd VALUES LESS THAN (10 + 5), 9188PARTITION parte VALUES LESS THAN (20), 9189PARTITION partf VALUES LESS THAN (2147483646)); 9190INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9191SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 9192# Start usability test (inc/partition_check.inc) 9193create_command 9194SHOW CREATE TABLE t1; 9195Table Create Table 9196t1 CREATE TABLE `t1` ( 9197 `f_int1` int(11) NOT NULL, 9198 `f_int2` int(11) NOT NULL, 9199 `f_char1` char(20) DEFAULT NULL, 9200 `f_char2` char(20) DEFAULT NULL, 9201 `f_charbig` varchar(1000) DEFAULT NULL, 9202 PRIMARY KEY (`f_int2`,`f_int1`), 9203 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 9204) ENGINE=InnoDB DEFAULT CHARSET=latin1 9205/*!50100 PARTITION BY RANGE (f_int1) 9206(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 9207 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 9208 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 9209 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 9210 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 9211 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 9212 9213unified filelist 9214t1#P#parta.ibd 9215t1#P#partb.ibd 9216t1#P#partc.ibd 9217t1#P#partd.ibd 9218t1#P#parte.ibd 9219t1#P#partf.ibd 9220t1.frm 9221 9222# check prerequisites-1 success: 1 9223# check COUNT(*) success: 1 9224# check MIN/MAX(f_int1) success: 1 9225# check MIN/MAX(f_int2) success: 1 9226INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9227SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9228CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9229WHERE f_int1 IN (2,3); 9230ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 9231# check prerequisites-3 success: 1 9232# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9233INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9234SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9235CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9236WHERE f_int1 IN (2,3); 9237DELETE FROM t1 WHERE f_charbig = 'delete me'; 9238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9239SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9240CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9241WHERE f_int1 IN (2,3); 9242DELETE FROM t1 WHERE f_charbig = 'delete me'; 9243# check read via f_int1 success: 1 9244# check read via f_int2 success: 1 9245 9246# check multiple-1 success: 1 9247DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9248 9249# check multiple-2 success: 1 9250INSERT INTO t1 SELECT * FROM t0_template 9251WHERE MOD(f_int1,3) = 0; 9252 9253# check multiple-3 success: 1 9254UPDATE t1 SET f_int1 = f_int1 + @max_row 9255WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9256AND @max_row_div2 + @max_row_div4; 9257 9258# check multiple-4 success: 1 9259DELETE FROM t1 9260WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9261AND @max_row_div2 + @max_row_div4 + @max_row; 9262 9263# check multiple-5 success: 1 9264SELECT COUNT(*) INTO @try_count FROM t0_template 9265WHERE MOD(f_int1,3) = 0 9266AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9267SELECT COUNT(*) INTO @clash_count 9268FROM t1 INNER JOIN t0_template USING(f_int1) 9269WHERE MOD(f_int1,3) = 0 9270AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9271SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9272INSERT INTO t1 9273SET f_int1 = @cur_value , f_int2 = @cur_value, 9274f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9275f_charbig = '#SINGLE#'; 9276 9277# check single-1 success: 1 9278SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9279INSERT INTO t1 9280SET f_int1 = @cur_value , f_int2 = @cur_value, 9281f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9282f_charbig = '#SINGLE#'; 9283 9284# check single-2 success: 1 9285SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9286SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9287UPDATE t1 SET f_int1 = @cur_value2 9288WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9289 9290# check single-3 success: 1 9291SET @cur_value1= -1; 9292SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9293UPDATE t1 SET f_int1 = @cur_value1 9294WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9295 9296# check single-4 success: 1 9297SELECT MAX(f_int1) INTO @cur_value FROM t1; 9298DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9299 9300# check single-5 success: 1 9301DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9302 9303# check single-6 success: 1 9304INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9305ERROR HY000: Table has no partition for value 2147483647 9306DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9307INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9308f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9309f_charbig = '#NULL#'; 9310INSERT INTO t1 9311SET f_int1 = NULL , f_int2 = -@max_row, 9312f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9313f_charbig = '#NULL#'; 9314ERROR 23000: Column 'f_int1' cannot be null 9315# check null success: 1 9316DELETE FROM t1 9317WHERE f_int1 = 0 AND f_int2 = 0 9318AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9319AND f_charbig = '#NULL#'; 9320INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9321SELECT f_int1, f_int1, '', '', 'was inserted' 9322 FROM t0_template source_tab 9323WHERE MOD(f_int1,3) = 0 9324AND f_int1 BETWEEN @max_row_div2 AND @max_row 9325ON DUPLICATE KEY 9326UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9327f_int2 = 2 * @max_row + source_tab.f_int1, 9328f_charbig = 'was updated'; 9329 9330# check unique-1-a success: 1 9331 9332# check unique-1-b success: 1 9333DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9334UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9335f_int2 = CAST(f_char1 AS SIGNED INT), 9336f_charbig = CONCAT('===',f_char1,'===') 9337WHERE f_charbig = 'was updated'; 9338REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9339SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9340 FROM t0_template source_tab 9341WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9342 9343# check replace success: 1 9344DELETE FROM t1 9345WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9346DELETE FROM t1 9347WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9348f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9349UPDATE t1 SET f_int2 = f_int1, 9350f_char1 = CAST(f_int1 AS CHAR), 9351f_char2 = CAST(f_int1 AS CHAR), 9352f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9353WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9354SET AUTOCOMMIT= 0; 9355INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9356SELECT f_int1, f_int1, '', '', 'was inserted' 9357FROM t0_template source_tab 9358WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9359 9360# check transactions-1 success: 1 9361COMMIT WORK; 9362 9363# check transactions-2 success: 1 9364ROLLBACK WORK; 9365 9366# check transactions-3 success: 1 9367DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9368COMMIT WORK; 9369ROLLBACK WORK; 9370 9371# check transactions-4 success: 1 9372INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9373SELECT f_int1, f_int1, '', '', 'was inserted' 9374FROM t0_template source_tab 9375WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9376 9377# check transactions-5 success: 1 9378ROLLBACK WORK; 9379 9380# check transactions-6 success: 1 9381# INFO: Storage engine used for t1 seems to be transactional. 9382COMMIT; 9383 9384# check transactions-7 success: 1 9385DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9386COMMIT WORK; 9387SET @@session.sql_mode = 'traditional'; 9388Warnings: 9389Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9390SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9391INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9392SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9393'', '', 'was inserted' FROM t0_template 9394WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9395ERROR 22012: Division by 0 9396COMMIT; 9397 9398# check transactions-8 success: 1 9399# INFO: Storage engine used for t1 seems to be able to revert 9400# changes made by the failing statement. 9401SET @@session.sql_mode = ''; 9402Warnings: 9403Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9404SET AUTOCOMMIT= 1; 9405DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9406COMMIT WORK; 9407UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9408 9409# check special-1 success: 1 9410UPDATE t1 SET f_charbig = ''; 9411 9412# check special-2 success: 1 9413UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9414INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9415SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9417INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9418SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9419'just inserted' FROM t0_template 9420WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9421CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9422BEGIN 9423UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9424f_charbig = 'updated by trigger' 9425 WHERE f_int1 = new.f_int1; 9426END| 9427INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9428SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9429WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9430 9431# check trigger-1 success: 1 9432DROP TRIGGER trg_1; 9433UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9434f_int2 = CAST(f_char1 AS SIGNED INT), 9435f_charbig = 'just inserted' 9436 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9437DELETE FROM t0_aux 9438WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9439INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9440SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9441'just inserted' FROM t0_template 9442WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9443CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9444BEGIN 9445UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9446f_charbig = 'updated by trigger' 9447 WHERE f_int1 = new.f_int1; 9448END| 9449INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9450SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9452 9453# check trigger-2 success: 1 9454DROP TRIGGER trg_1; 9455UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9456f_int2 = CAST(f_char1 AS SIGNED INT), 9457f_charbig = 'just inserted' 9458 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9459DELETE FROM t0_aux 9460WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9461INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9462SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9463'just inserted' FROM t0_template 9464WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9465CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9466BEGIN 9467UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9468f_charbig = 'updated by trigger' 9469 WHERE f_int1 = new.f_int1; 9470END| 9471UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9472WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9473 9474# check trigger-3 success: 1 9475DROP TRIGGER trg_1; 9476UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9477f_int2 = CAST(f_char1 AS SIGNED INT), 9478f_charbig = 'just inserted' 9479 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9480DELETE FROM t0_aux 9481WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9482INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9483SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9484'just inserted' FROM t0_template 9485WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9486CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9487BEGIN 9488UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9489f_charbig = 'updated by trigger' 9490 WHERE f_int1 = - old.f_int1; 9491END| 9492UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9493WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9494 9495# check trigger-4 success: 1 9496DROP TRIGGER trg_1; 9497UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9498f_int2 = CAST(f_char1 AS SIGNED INT), 9499f_charbig = 'just inserted' 9500 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9501DELETE FROM t0_aux 9502WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9503INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9504SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9505'just inserted' FROM t0_template 9506WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9507CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9508BEGIN 9509UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9510f_charbig = 'updated by trigger' 9511 WHERE f_int1 = new.f_int1; 9512END| 9513UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9514WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9515 9516# check trigger-5 success: 1 9517DROP TRIGGER trg_1; 9518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9519f_int2 = CAST(f_char1 AS SIGNED INT), 9520f_charbig = 'just inserted' 9521 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9522DELETE FROM t0_aux 9523WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9524INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9525SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9526'just inserted' FROM t0_template 9527WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9528CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9529BEGIN 9530UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9531f_charbig = 'updated by trigger' 9532 WHERE f_int1 = - old.f_int1; 9533END| 9534UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9535WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9536 9537# check trigger-6 success: 1 9538DROP TRIGGER trg_1; 9539UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9540f_int2 = CAST(f_char1 AS SIGNED INT), 9541f_charbig = 'just inserted' 9542 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9543DELETE FROM t0_aux 9544WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9545INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9546SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9547'just inserted' FROM t0_template 9548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9549CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9550BEGIN 9551UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9552f_charbig = 'updated by trigger' 9553 WHERE f_int1 = - old.f_int1; 9554END| 9555DELETE FROM t0_aux 9556WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9557 9558# check trigger-7 success: 1 9559DROP TRIGGER trg_1; 9560UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9561f_int2 = CAST(f_char1 AS SIGNED INT), 9562f_charbig = 'just inserted' 9563 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9564DELETE FROM t0_aux 9565WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9566INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9567SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9568'just inserted' FROM t0_template 9569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9570CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9571BEGIN 9572UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9573f_charbig = 'updated by trigger' 9574 WHERE f_int1 = - old.f_int1; 9575END| 9576DELETE FROM t0_aux 9577WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9578 9579# check trigger-8 success: 1 9580DROP TRIGGER trg_1; 9581UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9582f_int2 = CAST(f_char1 AS SIGNED INT), 9583f_charbig = 'just inserted' 9584 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9585DELETE FROM t0_aux 9586WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9587DELETE FROM t1 9588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9589CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9590BEGIN 9591SET new.f_int1 = old.f_int1 + @max_row, 9592new.f_int2 = old.f_int2 - @max_row, 9593new.f_charbig = '####updated per update trigger####'; 9594END| 9595UPDATE t1 9596SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9597f_charbig = '####updated per update statement itself####'; 9598 9599# check trigger-9 success: 1 9600DROP TRIGGER trg_2; 9601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9602f_int2 = CAST(f_char1 AS SIGNED INT), 9603f_charbig = CONCAT('===',f_char1,'==='); 9604CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9605BEGIN 9606SET new.f_int1 = new.f_int1 + @max_row, 9607new.f_int2 = new.f_int2 - @max_row, 9608new.f_charbig = '####updated per update trigger####'; 9609END| 9610UPDATE t1 9611SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9612f_charbig = '####updated per update statement itself####'; 9613 9614# check trigger-10 success: 1 9615DROP TRIGGER trg_2; 9616UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9617f_int2 = CAST(f_char1 AS SIGNED INT), 9618f_charbig = CONCAT('===',f_char1,'==='); 9619CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9620BEGIN 9621SET new.f_int1 = @my_max1 + @counter, 9622new.f_int2 = @my_min2 - @counter, 9623new.f_charbig = '####updated per insert trigger####'; 9624SET @counter = @counter + 1; 9625END| 9626SET @counter = 1; 9627SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9628INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9629SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9630CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9631WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9632ORDER BY f_int1; 9633DROP TRIGGER trg_3; 9634 9635# check trigger-11 success: 1 9636DELETE FROM t1 9637WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9638AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9639AND f_charbig = '####updated per insert trigger####'; 9640CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9641BEGIN 9642SET new.f_int1 = @my_max1 + @counter, 9643new.f_int2 = @my_min2 - @counter, 9644new.f_charbig = '####updated per insert trigger####'; 9645SET @counter = @counter + 1; 9646END| 9647SET @counter = 1; 9648SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9649INSERT INTO t1 (f_char1, f_char2, f_charbig) 9650SELECT CAST(f_int1 AS CHAR), 9651CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9653ORDER BY f_int1; 9654DROP TRIGGER trg_3; 9655 9656# check trigger-12 success: 1 9657DELETE FROM t1 9658WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9659AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9660AND f_charbig = '####updated per insert trigger####'; 9661ANALYZE TABLE t1; 9662Table Op Msg_type Msg_text 9663test.t1 analyze status OK 9664CHECK TABLE t1 EXTENDED; 9665Table Op Msg_type Msg_text 9666test.t1 check status OK 9667CHECKSUM TABLE t1 EXTENDED; 9668Table Checksum 9669test.t1 <some_value> 9670OPTIMIZE TABLE t1; 9671Table Op Msg_type Msg_text 9672test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 9673test.t1 optimize status OK 9674# check layout success: 1 9675REPAIR TABLE t1 EXTENDED; 9676Table Op Msg_type Msg_text 9677test.t1 repair status OK 9678# check layout success: 1 9679TRUNCATE t1; 9680 9681# check TRUNCATE success: 1 9682# check layout success: 1 9683# End usability test (inc/partition_check.inc) 9684DROP TABLE t1; 9685CREATE TABLE t1 ( 9686f_int1 INTEGER, 9687f_int2 INTEGER, 9688f_char1 CHAR(20), 9689f_char2 CHAR(20), 9690f_charbig VARCHAR(1000) 9691, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 9692) 9693PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 9694(PARTITION parta VALUES LESS THAN (0), 9695PARTITION partb VALUES LESS THAN (5), 9696PARTITION partc VALUES LESS THAN (10), 9697PARTITION partd VALUES LESS THAN (2147483646)); 9698INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9699SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 9700# Start usability test (inc/partition_check.inc) 9701create_command 9702SHOW CREATE TABLE t1; 9703Table Create Table 9704t1 CREATE TABLE `t1` ( 9705 `f_int1` int(11) NOT NULL, 9706 `f_int2` int(11) NOT NULL, 9707 `f_char1` char(20) DEFAULT NULL, 9708 `f_char2` char(20) DEFAULT NULL, 9709 `f_charbig` varchar(1000) DEFAULT NULL, 9710 PRIMARY KEY (`f_int2`,`f_int1`), 9711 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 9712) ENGINE=InnoDB DEFAULT CHARSET=latin1 9713/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 9714SUBPARTITION BY HASH (f_int1) 9715SUBPARTITIONS 2 9716(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 9717 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 9718 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 9719 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 9720 9721unified filelist 9722t1#P#parta#SP#partasp0.ibd 9723t1#P#parta#SP#partasp1.ibd 9724t1#P#partb#SP#partbsp0.ibd 9725t1#P#partb#SP#partbsp1.ibd 9726t1#P#partc#SP#partcsp0.ibd 9727t1#P#partc#SP#partcsp1.ibd 9728t1#P#partd#SP#partdsp0.ibd 9729t1#P#partd#SP#partdsp1.ibd 9730t1.frm 9731 9732# check prerequisites-1 success: 1 9733# check COUNT(*) success: 1 9734# check MIN/MAX(f_int1) success: 1 9735# check MIN/MAX(f_int2) success: 1 9736INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9737SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9738CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9739WHERE f_int1 IN (2,3); 9740ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 9741# check prerequisites-3 success: 1 9742# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9743INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9744SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9745CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9746WHERE f_int1 IN (2,3); 9747DELETE FROM t1 WHERE f_charbig = 'delete me'; 9748INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9749SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9750CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9751WHERE f_int1 IN (2,3); 9752DELETE FROM t1 WHERE f_charbig = 'delete me'; 9753# check read via f_int1 success: 1 9754# check read via f_int2 success: 1 9755 9756# check multiple-1 success: 1 9757DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9758 9759# check multiple-2 success: 1 9760INSERT INTO t1 SELECT * FROM t0_template 9761WHERE MOD(f_int1,3) = 0; 9762 9763# check multiple-3 success: 1 9764UPDATE t1 SET f_int1 = f_int1 + @max_row 9765WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9766AND @max_row_div2 + @max_row_div4; 9767 9768# check multiple-4 success: 1 9769DELETE FROM t1 9770WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9771AND @max_row_div2 + @max_row_div4 + @max_row; 9772 9773# check multiple-5 success: 1 9774SELECT COUNT(*) INTO @try_count FROM t0_template 9775WHERE MOD(f_int1,3) = 0 9776AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9777SELECT COUNT(*) INTO @clash_count 9778FROM t1 INNER JOIN t0_template USING(f_int1) 9779WHERE MOD(f_int1,3) = 0 9780AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9781SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9782INSERT INTO t1 9783SET f_int1 = @cur_value , f_int2 = @cur_value, 9784f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9785f_charbig = '#SINGLE#'; 9786 9787# check single-1 success: 1 9788SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9789INSERT INTO t1 9790SET f_int1 = @cur_value , f_int2 = @cur_value, 9791f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9792f_charbig = '#SINGLE#'; 9793 9794# check single-2 success: 1 9795SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9796SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9797UPDATE t1 SET f_int1 = @cur_value2 9798WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9799 9800# check single-3 success: 1 9801SET @cur_value1= -1; 9802SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9803UPDATE t1 SET f_int1 = @cur_value1 9804WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9805 9806# check single-4 success: 1 9807SELECT MAX(f_int1) INTO @cur_value FROM t1; 9808DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9809 9810# check single-5 success: 1 9811DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9812 9813# check single-6 success: 1 9814INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9815 9816# check single-7 success: 1 9817DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 9818DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9819INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9820f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9821f_charbig = '#NULL#'; 9822INSERT INTO t1 9823SET f_int1 = NULL , f_int2 = -@max_row, 9824f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9825f_charbig = '#NULL#'; 9826ERROR 23000: Column 'f_int1' cannot be null 9827# check null success: 1 9828DELETE FROM t1 9829WHERE f_int1 = 0 AND f_int2 = 0 9830AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9831AND f_charbig = '#NULL#'; 9832INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9833SELECT f_int1, f_int1, '', '', 'was inserted' 9834 FROM t0_template source_tab 9835WHERE MOD(f_int1,3) = 0 9836AND f_int1 BETWEEN @max_row_div2 AND @max_row 9837ON DUPLICATE KEY 9838UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9839f_int2 = 2 * @max_row + source_tab.f_int1, 9840f_charbig = 'was updated'; 9841 9842# check unique-1-a success: 1 9843 9844# check unique-1-b success: 1 9845DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9846UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9847f_int2 = CAST(f_char1 AS SIGNED INT), 9848f_charbig = CONCAT('===',f_char1,'===') 9849WHERE f_charbig = 'was updated'; 9850REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9851SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9852 FROM t0_template source_tab 9853WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9854 9855# check replace success: 1 9856DELETE FROM t1 9857WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9858DELETE FROM t1 9859WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9860f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9861UPDATE t1 SET f_int2 = f_int1, 9862f_char1 = CAST(f_int1 AS CHAR), 9863f_char2 = CAST(f_int1 AS CHAR), 9864f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9865WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9866SET AUTOCOMMIT= 0; 9867INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9868SELECT f_int1, f_int1, '', '', 'was inserted' 9869FROM t0_template source_tab 9870WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9871 9872# check transactions-1 success: 1 9873COMMIT WORK; 9874 9875# check transactions-2 success: 1 9876ROLLBACK WORK; 9877 9878# check transactions-3 success: 1 9879DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9880COMMIT WORK; 9881ROLLBACK WORK; 9882 9883# check transactions-4 success: 1 9884INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9885SELECT f_int1, f_int1, '', '', 'was inserted' 9886FROM t0_template source_tab 9887WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9888 9889# check transactions-5 success: 1 9890ROLLBACK WORK; 9891 9892# check transactions-6 success: 1 9893# INFO: Storage engine used for t1 seems to be transactional. 9894COMMIT; 9895 9896# check transactions-7 success: 1 9897DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9898COMMIT WORK; 9899SET @@session.sql_mode = 'traditional'; 9900Warnings: 9901Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9902SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9903INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9904SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9905'', '', 'was inserted' FROM t0_template 9906WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9907ERROR 22012: Division by 0 9908COMMIT; 9909 9910# check transactions-8 success: 1 9911# INFO: Storage engine used for t1 seems to be able to revert 9912# changes made by the failing statement. 9913SET @@session.sql_mode = ''; 9914Warnings: 9915Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9916SET AUTOCOMMIT= 1; 9917DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9918COMMIT WORK; 9919UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9920 9921# check special-1 success: 1 9922UPDATE t1 SET f_charbig = ''; 9923 9924# check special-2 success: 1 9925UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9926INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9927SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9929INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9930SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9931'just inserted' FROM t0_template 9932WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9933CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9934BEGIN 9935UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9936f_charbig = 'updated by trigger' 9937 WHERE f_int1 = new.f_int1; 9938END| 9939INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9940SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9942 9943# check trigger-1 success: 1 9944DROP TRIGGER trg_1; 9945UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9946f_int2 = CAST(f_char1 AS SIGNED INT), 9947f_charbig = 'just inserted' 9948 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9949DELETE FROM t0_aux 9950WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9951INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9952SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9953'just inserted' FROM t0_template 9954WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9955CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9956BEGIN 9957UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9958f_charbig = 'updated by trigger' 9959 WHERE f_int1 = new.f_int1; 9960END| 9961INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9962SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9963WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9964 9965# check trigger-2 success: 1 9966DROP TRIGGER trg_1; 9967UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9968f_int2 = CAST(f_char1 AS SIGNED INT), 9969f_charbig = 'just inserted' 9970 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9971DELETE FROM t0_aux 9972WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9974SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9975'just inserted' FROM t0_template 9976WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9977CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9978BEGIN 9979UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9980f_charbig = 'updated by trigger' 9981 WHERE f_int1 = new.f_int1; 9982END| 9983UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9984WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9985 9986# check trigger-3 success: 1 9987DROP TRIGGER trg_1; 9988UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9989f_int2 = CAST(f_char1 AS SIGNED INT), 9990f_charbig = 'just inserted' 9991 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9992DELETE FROM t0_aux 9993WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9996'just inserted' FROM t0_template 9997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9998CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9999BEGIN 10000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10001f_charbig = 'updated by trigger' 10002 WHERE f_int1 = - old.f_int1; 10003END| 10004UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10005WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10006 10007# check trigger-4 success: 1 10008DROP TRIGGER trg_1; 10009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10010f_int2 = CAST(f_char1 AS SIGNED INT), 10011f_charbig = 'just inserted' 10012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10013DELETE FROM t0_aux 10014WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10016SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10017'just inserted' FROM t0_template 10018WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10019CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10020BEGIN 10021UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10022f_charbig = 'updated by trigger' 10023 WHERE f_int1 = new.f_int1; 10024END| 10025UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10026WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10027 10028# check trigger-5 success: 1 10029DROP TRIGGER trg_1; 10030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10031f_int2 = CAST(f_char1 AS SIGNED INT), 10032f_charbig = 'just inserted' 10033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10034DELETE FROM t0_aux 10035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10038'just inserted' FROM t0_template 10039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10040CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10041BEGIN 10042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10043f_charbig = 'updated by trigger' 10044 WHERE f_int1 = - old.f_int1; 10045END| 10046UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10047WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10048 10049# check trigger-6 success: 1 10050DROP TRIGGER trg_1; 10051UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10052f_int2 = CAST(f_char1 AS SIGNED INT), 10053f_charbig = 'just inserted' 10054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10055DELETE FROM t0_aux 10056WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10057INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10058SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10059'just inserted' FROM t0_template 10060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10061CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10062BEGIN 10063UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10064f_charbig = 'updated by trigger' 10065 WHERE f_int1 = - old.f_int1; 10066END| 10067DELETE FROM t0_aux 10068WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10069 10070# check trigger-7 success: 1 10071DROP TRIGGER trg_1; 10072UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10073f_int2 = CAST(f_char1 AS SIGNED INT), 10074f_charbig = 'just inserted' 10075 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10076DELETE FROM t0_aux 10077WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10078INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10079SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10080'just inserted' FROM t0_template 10081WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10082CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10083BEGIN 10084UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10085f_charbig = 'updated by trigger' 10086 WHERE f_int1 = - old.f_int1; 10087END| 10088DELETE FROM t0_aux 10089WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10090 10091# check trigger-8 success: 1 10092DROP TRIGGER trg_1; 10093UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10094f_int2 = CAST(f_char1 AS SIGNED INT), 10095f_charbig = 'just inserted' 10096 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10097DELETE FROM t0_aux 10098WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10099DELETE FROM t1 10100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10101CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10102BEGIN 10103SET new.f_int1 = old.f_int1 + @max_row, 10104new.f_int2 = old.f_int2 - @max_row, 10105new.f_charbig = '####updated per update trigger####'; 10106END| 10107UPDATE t1 10108SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10109f_charbig = '####updated per update statement itself####'; 10110 10111# check trigger-9 success: 1 10112DROP TRIGGER trg_2; 10113UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10114f_int2 = CAST(f_char1 AS SIGNED INT), 10115f_charbig = CONCAT('===',f_char1,'==='); 10116CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10117BEGIN 10118SET new.f_int1 = new.f_int1 + @max_row, 10119new.f_int2 = new.f_int2 - @max_row, 10120new.f_charbig = '####updated per update trigger####'; 10121END| 10122UPDATE t1 10123SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10124f_charbig = '####updated per update statement itself####'; 10125 10126# check trigger-10 success: 1 10127DROP TRIGGER trg_2; 10128UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10129f_int2 = CAST(f_char1 AS SIGNED INT), 10130f_charbig = CONCAT('===',f_char1,'==='); 10131CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10132BEGIN 10133SET new.f_int1 = @my_max1 + @counter, 10134new.f_int2 = @my_min2 - @counter, 10135new.f_charbig = '####updated per insert trigger####'; 10136SET @counter = @counter + 1; 10137END| 10138SET @counter = 1; 10139SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10140INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10141SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10142CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10144ORDER BY f_int1; 10145DROP TRIGGER trg_3; 10146 10147# check trigger-11 success: 1 10148DELETE FROM t1 10149WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10150AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10151AND f_charbig = '####updated per insert trigger####'; 10152CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10153BEGIN 10154SET new.f_int1 = @my_max1 + @counter, 10155new.f_int2 = @my_min2 - @counter, 10156new.f_charbig = '####updated per insert trigger####'; 10157SET @counter = @counter + 1; 10158END| 10159SET @counter = 1; 10160SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10161INSERT INTO t1 (f_char1, f_char2, f_charbig) 10162SELECT CAST(f_int1 AS CHAR), 10163CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10165ORDER BY f_int1; 10166DROP TRIGGER trg_3; 10167 10168# check trigger-12 success: 1 10169DELETE FROM t1 10170WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10171AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10172AND f_charbig = '####updated per insert trigger####'; 10173ANALYZE TABLE t1; 10174Table Op Msg_type Msg_text 10175test.t1 analyze status OK 10176CHECK TABLE t1 EXTENDED; 10177Table Op Msg_type Msg_text 10178test.t1 check status OK 10179CHECKSUM TABLE t1 EXTENDED; 10180Table Checksum 10181test.t1 <some_value> 10182OPTIMIZE TABLE t1; 10183Table Op Msg_type Msg_text 10184test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 10185test.t1 optimize status OK 10186# check layout success: 1 10187REPAIR TABLE t1 EXTENDED; 10188Table Op Msg_type Msg_text 10189test.t1 repair status OK 10190# check layout success: 1 10191TRUNCATE t1; 10192 10193# check TRUNCATE success: 1 10194# check layout success: 1 10195# End usability test (inc/partition_check.inc) 10196DROP TABLE t1; 10197CREATE TABLE t1 ( 10198f_int1 INTEGER, 10199f_int2 INTEGER, 10200f_char1 CHAR(20), 10201f_char2 CHAR(20), 10202f_charbig VARCHAR(1000) 10203, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 10204) 10205PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 10206(PARTITION part1 VALUES LESS THAN (0) 10207(SUBPARTITION subpart11, SUBPARTITION subpart12), 10208PARTITION part2 VALUES LESS THAN (5) 10209(SUBPARTITION subpart21, SUBPARTITION subpart22), 10210PARTITION part3 VALUES LESS THAN (10) 10211(SUBPARTITION subpart31, SUBPARTITION subpart32), 10212PARTITION part4 VALUES LESS THAN (2147483646) 10213(SUBPARTITION subpart41, SUBPARTITION subpart42)); 10214INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10215SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 10216# Start usability test (inc/partition_check.inc) 10217create_command 10218SHOW CREATE TABLE t1; 10219Table Create Table 10220t1 CREATE TABLE `t1` ( 10221 `f_int1` int(11) NOT NULL, 10222 `f_int2` int(11) NOT NULL, 10223 `f_char1` char(20) DEFAULT NULL, 10224 `f_char2` char(20) DEFAULT NULL, 10225 `f_charbig` varchar(1000) DEFAULT NULL, 10226 PRIMARY KEY (`f_int2`,`f_int1`), 10227 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 10228) ENGINE=InnoDB DEFAULT CHARSET=latin1 10229/*!50100 PARTITION BY RANGE (f_int1) 10230SUBPARTITION BY KEY (f_int1) 10231(PARTITION part1 VALUES LESS THAN (0) 10232 (SUBPARTITION subpart11 ENGINE = InnoDB, 10233 SUBPARTITION subpart12 ENGINE = InnoDB), 10234 PARTITION part2 VALUES LESS THAN (5) 10235 (SUBPARTITION subpart21 ENGINE = InnoDB, 10236 SUBPARTITION subpart22 ENGINE = InnoDB), 10237 PARTITION part3 VALUES LESS THAN (10) 10238 (SUBPARTITION subpart31 ENGINE = InnoDB, 10239 SUBPARTITION subpart32 ENGINE = InnoDB), 10240 PARTITION part4 VALUES LESS THAN (2147483646) 10241 (SUBPARTITION subpart41 ENGINE = InnoDB, 10242 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 10243 10244unified filelist 10245t1#P#part1#SP#subpart11.ibd 10246t1#P#part1#SP#subpart12.ibd 10247t1#P#part2#SP#subpart21.ibd 10248t1#P#part2#SP#subpart22.ibd 10249t1#P#part3#SP#subpart31.ibd 10250t1#P#part3#SP#subpart32.ibd 10251t1#P#part4#SP#subpart41.ibd 10252t1#P#part4#SP#subpart42.ibd 10253t1.frm 10254 10255# check prerequisites-1 success: 1 10256# check COUNT(*) success: 1 10257# check MIN/MAX(f_int1) success: 1 10258# check MIN/MAX(f_int2) success: 1 10259INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10260SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10261CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10262WHERE f_int1 IN (2,3); 10263ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 10264# check prerequisites-3 success: 1 10265# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10267SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10268CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10269WHERE f_int1 IN (2,3); 10270DELETE FROM t1 WHERE f_charbig = 'delete me'; 10271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10272SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10273CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10274WHERE f_int1 IN (2,3); 10275DELETE FROM t1 WHERE f_charbig = 'delete me'; 10276# check read via f_int1 success: 1 10277# check read via f_int2 success: 1 10278 10279# check multiple-1 success: 1 10280DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10281 10282# check multiple-2 success: 1 10283INSERT INTO t1 SELECT * FROM t0_template 10284WHERE MOD(f_int1,3) = 0; 10285 10286# check multiple-3 success: 1 10287UPDATE t1 SET f_int1 = f_int1 + @max_row 10288WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10289AND @max_row_div2 + @max_row_div4; 10290 10291# check multiple-4 success: 1 10292DELETE FROM t1 10293WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10294AND @max_row_div2 + @max_row_div4 + @max_row; 10295 10296# check multiple-5 success: 1 10297SELECT COUNT(*) INTO @try_count FROM t0_template 10298WHERE MOD(f_int1,3) = 0 10299AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10300SELECT COUNT(*) INTO @clash_count 10301FROM t1 INNER JOIN t0_template USING(f_int1) 10302WHERE MOD(f_int1,3) = 0 10303AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10304SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10305INSERT INTO t1 10306SET f_int1 = @cur_value , f_int2 = @cur_value, 10307f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10308f_charbig = '#SINGLE#'; 10309 10310# check single-1 success: 1 10311SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10312INSERT INTO t1 10313SET f_int1 = @cur_value , f_int2 = @cur_value, 10314f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10315f_charbig = '#SINGLE#'; 10316 10317# check single-2 success: 1 10318SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10319SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10320UPDATE t1 SET f_int1 = @cur_value2 10321WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10322 10323# check single-3 success: 1 10324SET @cur_value1= -1; 10325SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10326UPDATE t1 SET f_int1 = @cur_value1 10327WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10328 10329# check single-4 success: 1 10330SELECT MAX(f_int1) INTO @cur_value FROM t1; 10331DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10332 10333# check single-5 success: 1 10334DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10335 10336# check single-6 success: 1 10337INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10338ERROR HY000: Table has no partition for value 2147483647 10339DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10340INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10341f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10342f_charbig = '#NULL#'; 10343INSERT INTO t1 10344SET f_int1 = NULL , f_int2 = -@max_row, 10345f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10346f_charbig = '#NULL#'; 10347ERROR 23000: Column 'f_int1' cannot be null 10348# check null success: 1 10349DELETE FROM t1 10350WHERE f_int1 = 0 AND f_int2 = 0 10351AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10352AND f_charbig = '#NULL#'; 10353INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10354SELECT f_int1, f_int1, '', '', 'was inserted' 10355 FROM t0_template source_tab 10356WHERE MOD(f_int1,3) = 0 10357AND f_int1 BETWEEN @max_row_div2 AND @max_row 10358ON DUPLICATE KEY 10359UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10360f_int2 = 2 * @max_row + source_tab.f_int1, 10361f_charbig = 'was updated'; 10362 10363# check unique-1-a success: 1 10364 10365# check unique-1-b success: 1 10366DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10367UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10368f_int2 = CAST(f_char1 AS SIGNED INT), 10369f_charbig = CONCAT('===',f_char1,'===') 10370WHERE f_charbig = 'was updated'; 10371REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10372SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10373 FROM t0_template source_tab 10374WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10375 10376# check replace success: 1 10377DELETE FROM t1 10378WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10379DELETE FROM t1 10380WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10381f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10382UPDATE t1 SET f_int2 = f_int1, 10383f_char1 = CAST(f_int1 AS CHAR), 10384f_char2 = CAST(f_int1 AS CHAR), 10385f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10386WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10387SET AUTOCOMMIT= 0; 10388INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10389SELECT f_int1, f_int1, '', '', 'was inserted' 10390FROM t0_template source_tab 10391WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10392 10393# check transactions-1 success: 1 10394COMMIT WORK; 10395 10396# check transactions-2 success: 1 10397ROLLBACK WORK; 10398 10399# check transactions-3 success: 1 10400DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10401COMMIT WORK; 10402ROLLBACK WORK; 10403 10404# check transactions-4 success: 1 10405INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10406SELECT f_int1, f_int1, '', '', 'was inserted' 10407FROM t0_template source_tab 10408WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10409 10410# check transactions-5 success: 1 10411ROLLBACK WORK; 10412 10413# check transactions-6 success: 1 10414# INFO: Storage engine used for t1 seems to be transactional. 10415COMMIT; 10416 10417# check transactions-7 success: 1 10418DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10419COMMIT WORK; 10420SET @@session.sql_mode = 'traditional'; 10421Warnings: 10422Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10423SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10424INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10425SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10426'', '', 'was inserted' FROM t0_template 10427WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10428ERROR 22012: Division by 0 10429COMMIT; 10430 10431# check transactions-8 success: 1 10432# INFO: Storage engine used for t1 seems to be able to revert 10433# changes made by the failing statement. 10434SET @@session.sql_mode = ''; 10435Warnings: 10436Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10437SET AUTOCOMMIT= 1; 10438DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10439COMMIT WORK; 10440UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10441 10442# check special-1 success: 1 10443UPDATE t1 SET f_charbig = ''; 10444 10445# check special-2 success: 1 10446UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10447INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10448SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10450INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10451SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10452'just inserted' FROM t0_template 10453WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10454CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10455BEGIN 10456UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10457f_charbig = 'updated by trigger' 10458 WHERE f_int1 = new.f_int1; 10459END| 10460INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10461SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10462WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10463 10464# check trigger-1 success: 1 10465DROP TRIGGER trg_1; 10466UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10467f_int2 = CAST(f_char1 AS SIGNED INT), 10468f_charbig = 'just inserted' 10469 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10470DELETE FROM t0_aux 10471WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10472INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10473SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10474'just inserted' FROM t0_template 10475WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10476CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10477BEGIN 10478UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10479f_charbig = 'updated by trigger' 10480 WHERE f_int1 = new.f_int1; 10481END| 10482INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10483SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10484WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10485 10486# check trigger-2 success: 1 10487DROP TRIGGER trg_1; 10488UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10489f_int2 = CAST(f_char1 AS SIGNED INT), 10490f_charbig = 'just inserted' 10491 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10492DELETE FROM t0_aux 10493WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10494INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10495SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10496'just inserted' FROM t0_template 10497WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10498CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10499BEGIN 10500UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10501f_charbig = 'updated by trigger' 10502 WHERE f_int1 = new.f_int1; 10503END| 10504UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10505WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10506 10507# check trigger-3 success: 1 10508DROP TRIGGER trg_1; 10509UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10510f_int2 = CAST(f_char1 AS SIGNED INT), 10511f_charbig = 'just inserted' 10512 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10513DELETE FROM t0_aux 10514WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10515INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10516SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10517'just inserted' FROM t0_template 10518WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10519CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10520BEGIN 10521UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10522f_charbig = 'updated by trigger' 10523 WHERE f_int1 = - old.f_int1; 10524END| 10525UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10526WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10527 10528# check trigger-4 success: 1 10529DROP TRIGGER trg_1; 10530UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10531f_int2 = CAST(f_char1 AS SIGNED INT), 10532f_charbig = 'just inserted' 10533 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10534DELETE FROM t0_aux 10535WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10536INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10537SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10538'just inserted' FROM t0_template 10539WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10540CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10541BEGIN 10542UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10543f_charbig = 'updated by trigger' 10544 WHERE f_int1 = new.f_int1; 10545END| 10546UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10547WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10548 10549# check trigger-5 success: 1 10550DROP TRIGGER trg_1; 10551UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10552f_int2 = CAST(f_char1 AS SIGNED INT), 10553f_charbig = 'just inserted' 10554 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10555DELETE FROM t0_aux 10556WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10557INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10558SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10559'just inserted' FROM t0_template 10560WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10561CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10562BEGIN 10563UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10564f_charbig = 'updated by trigger' 10565 WHERE f_int1 = - old.f_int1; 10566END| 10567UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10568WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10569 10570# check trigger-6 success: 1 10571DROP TRIGGER trg_1; 10572UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10573f_int2 = CAST(f_char1 AS SIGNED INT), 10574f_charbig = 'just inserted' 10575 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10576DELETE FROM t0_aux 10577WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10578INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10579SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10580'just inserted' FROM t0_template 10581WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10582CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10583BEGIN 10584UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10585f_charbig = 'updated by trigger' 10586 WHERE f_int1 = - old.f_int1; 10587END| 10588DELETE FROM t0_aux 10589WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10590 10591# check trigger-7 success: 1 10592DROP TRIGGER trg_1; 10593UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10594f_int2 = CAST(f_char1 AS SIGNED INT), 10595f_charbig = 'just inserted' 10596 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10597DELETE FROM t0_aux 10598WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10599INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10600SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10601'just inserted' FROM t0_template 10602WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10603CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10604BEGIN 10605UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10606f_charbig = 'updated by trigger' 10607 WHERE f_int1 = - old.f_int1; 10608END| 10609DELETE FROM t0_aux 10610WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10611 10612# check trigger-8 success: 1 10613DROP TRIGGER trg_1; 10614UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10615f_int2 = CAST(f_char1 AS SIGNED INT), 10616f_charbig = 'just inserted' 10617 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10618DELETE FROM t0_aux 10619WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10620DELETE FROM t1 10621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10622CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10623BEGIN 10624SET new.f_int1 = old.f_int1 + @max_row, 10625new.f_int2 = old.f_int2 - @max_row, 10626new.f_charbig = '####updated per update trigger####'; 10627END| 10628UPDATE t1 10629SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10630f_charbig = '####updated per update statement itself####'; 10631 10632# check trigger-9 success: 1 10633DROP TRIGGER trg_2; 10634UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10635f_int2 = CAST(f_char1 AS SIGNED INT), 10636f_charbig = CONCAT('===',f_char1,'==='); 10637CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10638BEGIN 10639SET new.f_int1 = new.f_int1 + @max_row, 10640new.f_int2 = new.f_int2 - @max_row, 10641new.f_charbig = '####updated per update trigger####'; 10642END| 10643UPDATE t1 10644SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10645f_charbig = '####updated per update statement itself####'; 10646 10647# check trigger-10 success: 1 10648DROP TRIGGER trg_2; 10649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10650f_int2 = CAST(f_char1 AS SIGNED INT), 10651f_charbig = CONCAT('===',f_char1,'==='); 10652CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10653BEGIN 10654SET new.f_int1 = @my_max1 + @counter, 10655new.f_int2 = @my_min2 - @counter, 10656new.f_charbig = '####updated per insert trigger####'; 10657SET @counter = @counter + 1; 10658END| 10659SET @counter = 1; 10660SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10661INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10662SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10663CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10664WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10665ORDER BY f_int1; 10666DROP TRIGGER trg_3; 10667 10668# check trigger-11 success: 1 10669DELETE FROM t1 10670WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10671AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10672AND f_charbig = '####updated per insert trigger####'; 10673CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10674BEGIN 10675SET new.f_int1 = @my_max1 + @counter, 10676new.f_int2 = @my_min2 - @counter, 10677new.f_charbig = '####updated per insert trigger####'; 10678SET @counter = @counter + 1; 10679END| 10680SET @counter = 1; 10681SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10682INSERT INTO t1 (f_char1, f_char2, f_charbig) 10683SELECT CAST(f_int1 AS CHAR), 10684CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10685WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10686ORDER BY f_int1; 10687DROP TRIGGER trg_3; 10688 10689# check trigger-12 success: 1 10690DELETE FROM t1 10691WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10692AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10693AND f_charbig = '####updated per insert trigger####'; 10694ANALYZE TABLE t1; 10695Table Op Msg_type Msg_text 10696test.t1 analyze status OK 10697CHECK TABLE t1 EXTENDED; 10698Table Op Msg_type Msg_text 10699test.t1 check status OK 10700CHECKSUM TABLE t1 EXTENDED; 10701Table Checksum 10702test.t1 <some_value> 10703OPTIMIZE TABLE t1; 10704Table Op Msg_type Msg_text 10705test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 10706test.t1 optimize status OK 10707# check layout success: 1 10708REPAIR TABLE t1 EXTENDED; 10709Table Op Msg_type Msg_text 10710test.t1 repair status OK 10711# check layout success: 1 10712TRUNCATE t1; 10713 10714# check TRUNCATE success: 1 10715# check layout success: 1 10716# End usability test (inc/partition_check.inc) 10717DROP TABLE t1; 10718CREATE TABLE t1 ( 10719f_int1 INTEGER, 10720f_int2 INTEGER, 10721f_char1 CHAR(20), 10722f_char2 CHAR(20), 10723f_charbig VARCHAR(1000) 10724, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 10725) 10726PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 10727(PARTITION part1 VALUES IN (0) 10728(SUBPARTITION sp11, 10729SUBPARTITION sp12), 10730PARTITION part2 VALUES IN (1) 10731(SUBPARTITION sp21, 10732SUBPARTITION sp22), 10733PARTITION part3 VALUES IN (2) 10734(SUBPARTITION sp31, 10735SUBPARTITION sp32), 10736PARTITION part4 VALUES IN (NULL) 10737(SUBPARTITION sp41, 10738SUBPARTITION sp42)); 10739INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10740SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 10741# Start usability test (inc/partition_check.inc) 10742create_command 10743SHOW CREATE TABLE t1; 10744Table Create Table 10745t1 CREATE TABLE `t1` ( 10746 `f_int1` int(11) NOT NULL, 10747 `f_int2` int(11) NOT NULL, 10748 `f_char1` char(20) DEFAULT NULL, 10749 `f_char2` char(20) DEFAULT NULL, 10750 `f_charbig` varchar(1000) DEFAULT NULL, 10751 PRIMARY KEY (`f_int2`,`f_int1`), 10752 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 10753) ENGINE=InnoDB DEFAULT CHARSET=latin1 10754/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 10755SUBPARTITION BY HASH (f_int1 + 1) 10756(PARTITION part1 VALUES IN (0) 10757 (SUBPARTITION sp11 ENGINE = InnoDB, 10758 SUBPARTITION sp12 ENGINE = InnoDB), 10759 PARTITION part2 VALUES IN (1) 10760 (SUBPARTITION sp21 ENGINE = InnoDB, 10761 SUBPARTITION sp22 ENGINE = InnoDB), 10762 PARTITION part3 VALUES IN (2) 10763 (SUBPARTITION sp31 ENGINE = InnoDB, 10764 SUBPARTITION sp32 ENGINE = InnoDB), 10765 PARTITION part4 VALUES IN (NULL) 10766 (SUBPARTITION sp41 ENGINE = InnoDB, 10767 SUBPARTITION sp42 ENGINE = InnoDB)) */ 10768 10769unified filelist 10770t1#P#part1#SP#sp11.ibd 10771t1#P#part1#SP#sp12.ibd 10772t1#P#part2#SP#sp21.ibd 10773t1#P#part2#SP#sp22.ibd 10774t1#P#part3#SP#sp31.ibd 10775t1#P#part3#SP#sp32.ibd 10776t1#P#part4#SP#sp41.ibd 10777t1#P#part4#SP#sp42.ibd 10778t1.frm 10779 10780# check prerequisites-1 success: 1 10781# check COUNT(*) success: 1 10782# check MIN/MAX(f_int1) success: 1 10783# check MIN/MAX(f_int2) success: 1 10784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10785SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10786CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10787WHERE f_int1 IN (2,3); 10788ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 10789# check prerequisites-3 success: 1 10790# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10791INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10792SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10793CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10794WHERE f_int1 IN (2,3); 10795DELETE FROM t1 WHERE f_charbig = 'delete me'; 10796INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10797SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10798CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10799WHERE f_int1 IN (2,3); 10800DELETE FROM t1 WHERE f_charbig = 'delete me'; 10801# check read via f_int1 success: 1 10802# check read via f_int2 success: 1 10803 10804# check multiple-1 success: 1 10805DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10806 10807# check multiple-2 success: 1 10808INSERT INTO t1 SELECT * FROM t0_template 10809WHERE MOD(f_int1,3) = 0; 10810 10811# check multiple-3 success: 1 10812UPDATE t1 SET f_int1 = f_int1 + @max_row 10813WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10814AND @max_row_div2 + @max_row_div4; 10815 10816# check multiple-4 success: 1 10817DELETE FROM t1 10818WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10819AND @max_row_div2 + @max_row_div4 + @max_row; 10820 10821# check multiple-5 success: 1 10822SELECT COUNT(*) INTO @try_count FROM t0_template 10823WHERE MOD(f_int1,3) = 0 10824AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10825SELECT COUNT(*) INTO @clash_count 10826FROM t1 INNER JOIN t0_template USING(f_int1) 10827WHERE MOD(f_int1,3) = 0 10828AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10829SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10830INSERT INTO t1 10831SET f_int1 = @cur_value , f_int2 = @cur_value, 10832f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10833f_charbig = '#SINGLE#'; 10834 10835# check single-1 success: 1 10836SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10837INSERT INTO t1 10838SET f_int1 = @cur_value , f_int2 = @cur_value, 10839f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10840f_charbig = '#SINGLE#'; 10841 10842# check single-2 success: 1 10843SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10844SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10845UPDATE t1 SET f_int1 = @cur_value2 10846WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10847 10848# check single-3 success: 1 10849SET @cur_value1= -1; 10850SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10851UPDATE t1 SET f_int1 = @cur_value1 10852WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10853 10854# check single-4 success: 1 10855SELECT MAX(f_int1) INTO @cur_value FROM t1; 10856DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10857 10858# check single-5 success: 1 10859DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10860 10861# check single-6 success: 1 10862INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10863 10864# check single-7 success: 1 10865DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 10866DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10867INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10868f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10869f_charbig = '#NULL#'; 10870INSERT INTO t1 10871SET f_int1 = NULL , f_int2 = -@max_row, 10872f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10873f_charbig = '#NULL#'; 10874ERROR 23000: Column 'f_int1' cannot be null 10875# check null success: 1 10876DELETE FROM t1 10877WHERE f_int1 = 0 AND f_int2 = 0 10878AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10879AND f_charbig = '#NULL#'; 10880INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10881SELECT f_int1, f_int1, '', '', 'was inserted' 10882 FROM t0_template source_tab 10883WHERE MOD(f_int1,3) = 0 10884AND f_int1 BETWEEN @max_row_div2 AND @max_row 10885ON DUPLICATE KEY 10886UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10887f_int2 = 2 * @max_row + source_tab.f_int1, 10888f_charbig = 'was updated'; 10889 10890# check unique-1-a success: 1 10891 10892# check unique-1-b success: 1 10893DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10894UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10895f_int2 = CAST(f_char1 AS SIGNED INT), 10896f_charbig = CONCAT('===',f_char1,'===') 10897WHERE f_charbig = 'was updated'; 10898REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10899SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10900 FROM t0_template source_tab 10901WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10902 10903# check replace success: 1 10904DELETE FROM t1 10905WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10906DELETE FROM t1 10907WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10908f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10909UPDATE t1 SET f_int2 = f_int1, 10910f_char1 = CAST(f_int1 AS CHAR), 10911f_char2 = CAST(f_int1 AS CHAR), 10912f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10913WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10914SET AUTOCOMMIT= 0; 10915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10916SELECT f_int1, f_int1, '', '', 'was inserted' 10917FROM t0_template source_tab 10918WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10919 10920# check transactions-1 success: 1 10921COMMIT WORK; 10922 10923# check transactions-2 success: 1 10924ROLLBACK WORK; 10925 10926# check transactions-3 success: 1 10927DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10928COMMIT WORK; 10929ROLLBACK WORK; 10930 10931# check transactions-4 success: 1 10932INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10933SELECT f_int1, f_int1, '', '', 'was inserted' 10934FROM t0_template source_tab 10935WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10936 10937# check transactions-5 success: 1 10938ROLLBACK WORK; 10939 10940# check transactions-6 success: 1 10941# INFO: Storage engine used for t1 seems to be transactional. 10942COMMIT; 10943 10944# check transactions-7 success: 1 10945DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10946COMMIT WORK; 10947SET @@session.sql_mode = 'traditional'; 10948Warnings: 10949Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10950SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10951INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10952SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10953'', '', 'was inserted' FROM t0_template 10954WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10955ERROR 22012: Division by 0 10956COMMIT; 10957 10958# check transactions-8 success: 1 10959# INFO: Storage engine used for t1 seems to be able to revert 10960# changes made by the failing statement. 10961SET @@session.sql_mode = ''; 10962Warnings: 10963Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10964SET AUTOCOMMIT= 1; 10965DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10966COMMIT WORK; 10967UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10968 10969# check special-1 success: 1 10970UPDATE t1 SET f_charbig = ''; 10971 10972# check special-2 success: 1 10973UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10974INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10975SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10976WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10977INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10978SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10979'just inserted' FROM t0_template 10980WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10981CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10982BEGIN 10983UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10984f_charbig = 'updated by trigger' 10985 WHERE f_int1 = new.f_int1; 10986END| 10987INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10988SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10989WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10990 10991# check trigger-1 success: 1 10992DROP TRIGGER trg_1; 10993UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10994f_int2 = CAST(f_char1 AS SIGNED INT), 10995f_charbig = 'just inserted' 10996 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10997DELETE FROM t0_aux 10998WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10999INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11000SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11001'just inserted' FROM t0_template 11002WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11003CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11004BEGIN 11005UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11006f_charbig = 'updated by trigger' 11007 WHERE f_int1 = new.f_int1; 11008END| 11009INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11010SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11011WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11012 11013# check trigger-2 success: 1 11014DROP TRIGGER trg_1; 11015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11016f_int2 = CAST(f_char1 AS SIGNED INT), 11017f_charbig = 'just inserted' 11018 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11019DELETE FROM t0_aux 11020WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11021INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11022SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11023'just inserted' FROM t0_template 11024WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11025CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11026BEGIN 11027UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11028f_charbig = 'updated by trigger' 11029 WHERE f_int1 = new.f_int1; 11030END| 11031UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11032WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11033 11034# check trigger-3 success: 1 11035DROP TRIGGER trg_1; 11036UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11037f_int2 = CAST(f_char1 AS SIGNED INT), 11038f_charbig = 'just inserted' 11039 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11040DELETE FROM t0_aux 11041WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11042INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11043SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11044'just inserted' FROM t0_template 11045WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11046CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11047BEGIN 11048UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11049f_charbig = 'updated by trigger' 11050 WHERE f_int1 = - old.f_int1; 11051END| 11052UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11053WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11054 11055# check trigger-4 success: 1 11056DROP TRIGGER trg_1; 11057UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11058f_int2 = CAST(f_char1 AS SIGNED INT), 11059f_charbig = 'just inserted' 11060 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11061DELETE FROM t0_aux 11062WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11063INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11064SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11065'just inserted' FROM t0_template 11066WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11067CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11068BEGIN 11069UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11070f_charbig = 'updated by trigger' 11071 WHERE f_int1 = new.f_int1; 11072END| 11073UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11074WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11075 11076# check trigger-5 success: 1 11077DROP TRIGGER trg_1; 11078UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11079f_int2 = CAST(f_char1 AS SIGNED INT), 11080f_charbig = 'just inserted' 11081 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11082DELETE FROM t0_aux 11083WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11084INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11085SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11086'just inserted' FROM t0_template 11087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11088CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11089BEGIN 11090UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11091f_charbig = 'updated by trigger' 11092 WHERE f_int1 = - old.f_int1; 11093END| 11094UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11095WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11096 11097# check trigger-6 success: 1 11098DROP TRIGGER trg_1; 11099UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11100f_int2 = CAST(f_char1 AS SIGNED INT), 11101f_charbig = 'just inserted' 11102 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11103DELETE FROM t0_aux 11104WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11105INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11106SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11107'just inserted' FROM t0_template 11108WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11109CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11110BEGIN 11111UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11112f_charbig = 'updated by trigger' 11113 WHERE f_int1 = - old.f_int1; 11114END| 11115DELETE FROM t0_aux 11116WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11117 11118# check trigger-7 success: 1 11119DROP TRIGGER trg_1; 11120UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11121f_int2 = CAST(f_char1 AS SIGNED INT), 11122f_charbig = 'just inserted' 11123 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11124DELETE FROM t0_aux 11125WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11126INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11127SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11128'just inserted' FROM t0_template 11129WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11130CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11131BEGIN 11132UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11133f_charbig = 'updated by trigger' 11134 WHERE f_int1 = - old.f_int1; 11135END| 11136DELETE FROM t0_aux 11137WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11138 11139# check trigger-8 success: 1 11140DROP TRIGGER trg_1; 11141UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11142f_int2 = CAST(f_char1 AS SIGNED INT), 11143f_charbig = 'just inserted' 11144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11145DELETE FROM t0_aux 11146WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11147DELETE FROM t1 11148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11149CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11150BEGIN 11151SET new.f_int1 = old.f_int1 + @max_row, 11152new.f_int2 = old.f_int2 - @max_row, 11153new.f_charbig = '####updated per update trigger####'; 11154END| 11155UPDATE t1 11156SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11157f_charbig = '####updated per update statement itself####'; 11158 11159# check trigger-9 success: 1 11160DROP TRIGGER trg_2; 11161UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11162f_int2 = CAST(f_char1 AS SIGNED INT), 11163f_charbig = CONCAT('===',f_char1,'==='); 11164CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11165BEGIN 11166SET new.f_int1 = new.f_int1 + @max_row, 11167new.f_int2 = new.f_int2 - @max_row, 11168new.f_charbig = '####updated per update trigger####'; 11169END| 11170UPDATE t1 11171SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11172f_charbig = '####updated per update statement itself####'; 11173 11174# check trigger-10 success: 1 11175DROP TRIGGER trg_2; 11176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11177f_int2 = CAST(f_char1 AS SIGNED INT), 11178f_charbig = CONCAT('===',f_char1,'==='); 11179CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11180BEGIN 11181SET new.f_int1 = @my_max1 + @counter, 11182new.f_int2 = @my_min2 - @counter, 11183new.f_charbig = '####updated per insert trigger####'; 11184SET @counter = @counter + 1; 11185END| 11186SET @counter = 1; 11187SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11188INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11189SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11190CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11191WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11192ORDER BY f_int1; 11193DROP TRIGGER trg_3; 11194 11195# check trigger-11 success: 1 11196DELETE FROM t1 11197WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11198AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11199AND f_charbig = '####updated per insert trigger####'; 11200CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11201BEGIN 11202SET new.f_int1 = @my_max1 + @counter, 11203new.f_int2 = @my_min2 - @counter, 11204new.f_charbig = '####updated per insert trigger####'; 11205SET @counter = @counter + 1; 11206END| 11207SET @counter = 1; 11208SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11209INSERT INTO t1 (f_char1, f_char2, f_charbig) 11210SELECT CAST(f_int1 AS CHAR), 11211CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11212WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11213ORDER BY f_int1; 11214DROP TRIGGER trg_3; 11215 11216# check trigger-12 success: 1 11217DELETE FROM t1 11218WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11219AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11220AND f_charbig = '####updated per insert trigger####'; 11221ANALYZE TABLE t1; 11222Table Op Msg_type Msg_text 11223test.t1 analyze status OK 11224CHECK TABLE t1 EXTENDED; 11225Table Op Msg_type Msg_text 11226test.t1 check status OK 11227CHECKSUM TABLE t1 EXTENDED; 11228Table Checksum 11229test.t1 <some_value> 11230OPTIMIZE TABLE t1; 11231Table Op Msg_type Msg_text 11232test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 11233test.t1 optimize status OK 11234# check layout success: 1 11235REPAIR TABLE t1 EXTENDED; 11236Table Op Msg_type Msg_text 11237test.t1 repair status OK 11238# check layout success: 1 11239TRUNCATE t1; 11240 11241# check TRUNCATE success: 1 11242# check layout success: 1 11243# End usability test (inc/partition_check.inc) 11244DROP TABLE t1; 11245CREATE TABLE t1 ( 11246f_int1 INTEGER, 11247f_int2 INTEGER, 11248f_char1 CHAR(20), 11249f_char2 CHAR(20), 11250f_charbig VARCHAR(1000) 11251, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 11252) 11253PARTITION BY LIST(ABS(MOD(f_int1,2))) 11254SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 11255(PARTITION part1 VALUES IN (0), 11256PARTITION part2 VALUES IN (1), 11257PARTITION part3 VALUES IN (NULL)); 11258INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11259SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 11260# Start usability test (inc/partition_check.inc) 11261create_command 11262SHOW CREATE TABLE t1; 11263Table Create Table 11264t1 CREATE TABLE `t1` ( 11265 `f_int1` int(11) NOT NULL, 11266 `f_int2` int(11) NOT NULL, 11267 `f_char1` char(20) DEFAULT NULL, 11268 `f_char2` char(20) DEFAULT NULL, 11269 `f_charbig` varchar(1000) DEFAULT NULL, 11270 PRIMARY KEY (`f_int2`,`f_int1`), 11271 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 11272) ENGINE=InnoDB DEFAULT CHARSET=latin1 11273/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 11274SUBPARTITION BY KEY (f_int1) 11275SUBPARTITIONS 3 11276(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 11277 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 11278 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 11279 11280unified filelist 11281t1#P#part1#SP#part1sp0.ibd 11282t1#P#part1#SP#part1sp1.ibd 11283t1#P#part1#SP#part1sp2.ibd 11284t1#P#part2#SP#part2sp0.ibd 11285t1#P#part2#SP#part2sp1.ibd 11286t1#P#part2#SP#part2sp2.ibd 11287t1#P#part3#SP#part3sp0.ibd 11288t1#P#part3#SP#part3sp1.ibd 11289t1#P#part3#SP#part3sp2.ibd 11290t1.frm 11291 11292# check prerequisites-1 success: 1 11293# check COUNT(*) success: 1 11294# check MIN/MAX(f_int1) success: 1 11295# check MIN/MAX(f_int2) success: 1 11296INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11297SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11298CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11299WHERE f_int1 IN (2,3); 11300ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 11301# check prerequisites-3 success: 1 11302# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11303INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11304SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11305CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11306WHERE f_int1 IN (2,3); 11307DELETE FROM t1 WHERE f_charbig = 'delete me'; 11308INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11309SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11310CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11311WHERE f_int1 IN (2,3); 11312DELETE FROM t1 WHERE f_charbig = 'delete me'; 11313# check read via f_int1 success: 1 11314# check read via f_int2 success: 1 11315 11316# check multiple-1 success: 1 11317DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11318 11319# check multiple-2 success: 1 11320INSERT INTO t1 SELECT * FROM t0_template 11321WHERE MOD(f_int1,3) = 0; 11322 11323# check multiple-3 success: 1 11324UPDATE t1 SET f_int1 = f_int1 + @max_row 11325WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11326AND @max_row_div2 + @max_row_div4; 11327 11328# check multiple-4 success: 1 11329DELETE FROM t1 11330WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11331AND @max_row_div2 + @max_row_div4 + @max_row; 11332 11333# check multiple-5 success: 1 11334SELECT COUNT(*) INTO @try_count FROM t0_template 11335WHERE MOD(f_int1,3) = 0 11336AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11337SELECT COUNT(*) INTO @clash_count 11338FROM t1 INNER JOIN t0_template USING(f_int1) 11339WHERE MOD(f_int1,3) = 0 11340AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11341SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11342INSERT INTO t1 11343SET f_int1 = @cur_value , f_int2 = @cur_value, 11344f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11345f_charbig = '#SINGLE#'; 11346 11347# check single-1 success: 1 11348SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11349INSERT INTO t1 11350SET f_int1 = @cur_value , f_int2 = @cur_value, 11351f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11352f_charbig = '#SINGLE#'; 11353 11354# check single-2 success: 1 11355SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11356SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11357UPDATE t1 SET f_int1 = @cur_value2 11358WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11359 11360# check single-3 success: 1 11361SET @cur_value1= -1; 11362SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11363UPDATE t1 SET f_int1 = @cur_value1 11364WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11365 11366# check single-4 success: 1 11367SELECT MAX(f_int1) INTO @cur_value FROM t1; 11368DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11369 11370# check single-5 success: 1 11371DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11372 11373# check single-6 success: 1 11374INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11375 11376# check single-7 success: 1 11377DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11378DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11379INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11380f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11381f_charbig = '#NULL#'; 11382INSERT INTO t1 11383SET f_int1 = NULL , f_int2 = -@max_row, 11384f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11385f_charbig = '#NULL#'; 11386ERROR 23000: Column 'f_int1' cannot be null 11387# check null success: 1 11388DELETE FROM t1 11389WHERE f_int1 = 0 AND f_int2 = 0 11390AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11391AND f_charbig = '#NULL#'; 11392INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11393SELECT f_int1, f_int1, '', '', 'was inserted' 11394 FROM t0_template source_tab 11395WHERE MOD(f_int1,3) = 0 11396AND f_int1 BETWEEN @max_row_div2 AND @max_row 11397ON DUPLICATE KEY 11398UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11399f_int2 = 2 * @max_row + source_tab.f_int1, 11400f_charbig = 'was updated'; 11401 11402# check unique-1-a success: 1 11403 11404# check unique-1-b success: 1 11405DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11406UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11407f_int2 = CAST(f_char1 AS SIGNED INT), 11408f_charbig = CONCAT('===',f_char1,'===') 11409WHERE f_charbig = 'was updated'; 11410REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11411SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11412 FROM t0_template source_tab 11413WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11414 11415# check replace success: 1 11416DELETE FROM t1 11417WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11418DELETE FROM t1 11419WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11420f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11421UPDATE t1 SET f_int2 = f_int1, 11422f_char1 = CAST(f_int1 AS CHAR), 11423f_char2 = CAST(f_int1 AS CHAR), 11424f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11425WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11426SET AUTOCOMMIT= 0; 11427INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11428SELECT f_int1, f_int1, '', '', 'was inserted' 11429FROM t0_template source_tab 11430WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11431 11432# check transactions-1 success: 1 11433COMMIT WORK; 11434 11435# check transactions-2 success: 1 11436ROLLBACK WORK; 11437 11438# check transactions-3 success: 1 11439DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11440COMMIT WORK; 11441ROLLBACK WORK; 11442 11443# check transactions-4 success: 1 11444INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11445SELECT f_int1, f_int1, '', '', 'was inserted' 11446FROM t0_template source_tab 11447WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11448 11449# check transactions-5 success: 1 11450ROLLBACK WORK; 11451 11452# check transactions-6 success: 1 11453# INFO: Storage engine used for t1 seems to be transactional. 11454COMMIT; 11455 11456# check transactions-7 success: 1 11457DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11458COMMIT WORK; 11459SET @@session.sql_mode = 'traditional'; 11460Warnings: 11461Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11462SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11463INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11464SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11465'', '', 'was inserted' FROM t0_template 11466WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11467ERROR 22012: Division by 0 11468COMMIT; 11469 11470# check transactions-8 success: 1 11471# INFO: Storage engine used for t1 seems to be able to revert 11472# changes made by the failing statement. 11473SET @@session.sql_mode = ''; 11474Warnings: 11475Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11476SET AUTOCOMMIT= 1; 11477DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11478COMMIT WORK; 11479UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11480 11481# check special-1 success: 1 11482UPDATE t1 SET f_charbig = ''; 11483 11484# check special-2 success: 1 11485UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11486INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11487SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11488WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11489INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11490SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11491'just inserted' FROM t0_template 11492WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11493CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11494BEGIN 11495UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11496f_charbig = 'updated by trigger' 11497 WHERE f_int1 = new.f_int1; 11498END| 11499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11500SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11501WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11502 11503# check trigger-1 success: 1 11504DROP TRIGGER trg_1; 11505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11506f_int2 = CAST(f_char1 AS SIGNED INT), 11507f_charbig = 'just inserted' 11508 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11509DELETE FROM t0_aux 11510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11513'just inserted' FROM t0_template 11514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11515CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11516BEGIN 11517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11518f_charbig = 'updated by trigger' 11519 WHERE f_int1 = new.f_int1; 11520END| 11521INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11522SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11523WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11524 11525# check trigger-2 success: 1 11526DROP TRIGGER trg_1; 11527UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11528f_int2 = CAST(f_char1 AS SIGNED INT), 11529f_charbig = 'just inserted' 11530 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11531DELETE FROM t0_aux 11532WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11533INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11534SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11535'just inserted' FROM t0_template 11536WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11537CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11538BEGIN 11539UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11540f_charbig = 'updated by trigger' 11541 WHERE f_int1 = new.f_int1; 11542END| 11543UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11544WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11545 11546# check trigger-3 success: 1 11547DROP TRIGGER trg_1; 11548UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11549f_int2 = CAST(f_char1 AS SIGNED INT), 11550f_charbig = 'just inserted' 11551 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11552DELETE FROM t0_aux 11553WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11554INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11555SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11556'just inserted' FROM t0_template 11557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11558CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11559BEGIN 11560UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11561f_charbig = 'updated by trigger' 11562 WHERE f_int1 = - old.f_int1; 11563END| 11564UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11565WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11566 11567# check trigger-4 success: 1 11568DROP TRIGGER trg_1; 11569UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11570f_int2 = CAST(f_char1 AS SIGNED INT), 11571f_charbig = 'just inserted' 11572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11573DELETE FROM t0_aux 11574WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11575INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11576SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11577'just inserted' FROM t0_template 11578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11579CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11580BEGIN 11581UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11582f_charbig = 'updated by trigger' 11583 WHERE f_int1 = new.f_int1; 11584END| 11585UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11586WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11587 11588# check trigger-5 success: 1 11589DROP TRIGGER trg_1; 11590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11591f_int2 = CAST(f_char1 AS SIGNED INT), 11592f_charbig = 'just inserted' 11593 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11594DELETE FROM t0_aux 11595WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11596INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11597SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11598'just inserted' FROM t0_template 11599WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11600CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11601BEGIN 11602UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11603f_charbig = 'updated by trigger' 11604 WHERE f_int1 = - old.f_int1; 11605END| 11606UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11607WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11608 11609# check trigger-6 success: 1 11610DROP TRIGGER trg_1; 11611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11612f_int2 = CAST(f_char1 AS SIGNED INT), 11613f_charbig = 'just inserted' 11614 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11615DELETE FROM t0_aux 11616WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11617INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11618SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11619'just inserted' FROM t0_template 11620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11621CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11622BEGIN 11623UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11624f_charbig = 'updated by trigger' 11625 WHERE f_int1 = - old.f_int1; 11626END| 11627DELETE FROM t0_aux 11628WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11629 11630# check trigger-7 success: 1 11631DROP TRIGGER trg_1; 11632UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11633f_int2 = CAST(f_char1 AS SIGNED INT), 11634f_charbig = 'just inserted' 11635 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11636DELETE FROM t0_aux 11637WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11638INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11639SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11640'just inserted' FROM t0_template 11641WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11642CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11643BEGIN 11644UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11645f_charbig = 'updated by trigger' 11646 WHERE f_int1 = - old.f_int1; 11647END| 11648DELETE FROM t0_aux 11649WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11650 11651# check trigger-8 success: 1 11652DROP TRIGGER trg_1; 11653UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11654f_int2 = CAST(f_char1 AS SIGNED INT), 11655f_charbig = 'just inserted' 11656 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11657DELETE FROM t0_aux 11658WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11659DELETE FROM t1 11660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11661CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11662BEGIN 11663SET new.f_int1 = old.f_int1 + @max_row, 11664new.f_int2 = old.f_int2 - @max_row, 11665new.f_charbig = '####updated per update trigger####'; 11666END| 11667UPDATE t1 11668SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11669f_charbig = '####updated per update statement itself####'; 11670 11671# check trigger-9 success: 1 11672DROP TRIGGER trg_2; 11673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11674f_int2 = CAST(f_char1 AS SIGNED INT), 11675f_charbig = CONCAT('===',f_char1,'==='); 11676CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11677BEGIN 11678SET new.f_int1 = new.f_int1 + @max_row, 11679new.f_int2 = new.f_int2 - @max_row, 11680new.f_charbig = '####updated per update trigger####'; 11681END| 11682UPDATE t1 11683SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11684f_charbig = '####updated per update statement itself####'; 11685 11686# check trigger-10 success: 1 11687DROP TRIGGER trg_2; 11688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11689f_int2 = CAST(f_char1 AS SIGNED INT), 11690f_charbig = CONCAT('===',f_char1,'==='); 11691CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11692BEGIN 11693SET new.f_int1 = @my_max1 + @counter, 11694new.f_int2 = @my_min2 - @counter, 11695new.f_charbig = '####updated per insert trigger####'; 11696SET @counter = @counter + 1; 11697END| 11698SET @counter = 1; 11699SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11700INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11701SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11702CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11703WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11704ORDER BY f_int1; 11705DROP TRIGGER trg_3; 11706 11707# check trigger-11 success: 1 11708DELETE FROM t1 11709WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11710AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11711AND f_charbig = '####updated per insert trigger####'; 11712CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11713BEGIN 11714SET new.f_int1 = @my_max1 + @counter, 11715new.f_int2 = @my_min2 - @counter, 11716new.f_charbig = '####updated per insert trigger####'; 11717SET @counter = @counter + 1; 11718END| 11719SET @counter = 1; 11720SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11721INSERT INTO t1 (f_char1, f_char2, f_charbig) 11722SELECT CAST(f_int1 AS CHAR), 11723CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11725ORDER BY f_int1; 11726DROP TRIGGER trg_3; 11727 11728# check trigger-12 success: 1 11729DELETE FROM t1 11730WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11731AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11732AND f_charbig = '####updated per insert trigger####'; 11733ANALYZE TABLE t1; 11734Table Op Msg_type Msg_text 11735test.t1 analyze status OK 11736CHECK TABLE t1 EXTENDED; 11737Table Op Msg_type Msg_text 11738test.t1 check status OK 11739CHECKSUM TABLE t1 EXTENDED; 11740Table Checksum 11741test.t1 <some_value> 11742OPTIMIZE TABLE t1; 11743Table Op Msg_type Msg_text 11744test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 11745test.t1 optimize status OK 11746# check layout success: 1 11747REPAIR TABLE t1 EXTENDED; 11748Table Op Msg_type Msg_text 11749test.t1 repair status OK 11750# check layout success: 1 11751TRUNCATE t1; 11752 11753# check TRUNCATE success: 1 11754# check layout success: 1 11755# End usability test (inc/partition_check.inc) 11756DROP TABLE t1; 11757DROP TABLE IF EXISTS t1; 11758CREATE TABLE t1 ( 11759f_int1 INTEGER, 11760f_int2 INTEGER, 11761f_char1 CHAR(20), 11762f_char2 CHAR(20), 11763f_charbig VARCHAR(1000) 11764, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 11765) 11766PARTITION BY HASH(f_int1) PARTITIONS 2; 11767INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11768SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 11769# Start usability test (inc/partition_check.inc) 11770create_command 11771SHOW CREATE TABLE t1; 11772Table Create Table 11773t1 CREATE TABLE `t1` ( 11774 `f_int1` int(11) NOT NULL, 11775 `f_int2` int(11) NOT NULL, 11776 `f_char1` char(20) DEFAULT NULL, 11777 `f_char2` char(20) DEFAULT NULL, 11778 `f_charbig` varchar(1000) DEFAULT NULL, 11779 PRIMARY KEY (`f_int1`,`f_int2`), 11780 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 11781) ENGINE=InnoDB DEFAULT CHARSET=latin1 11782/*!50100 PARTITION BY HASH (f_int1) 11783PARTITIONS 2 */ 11784 11785unified filelist 11786t1#P#p0.ibd 11787t1#P#p1.ibd 11788t1.frm 11789 11790# check prerequisites-1 success: 1 11791# check COUNT(*) success: 1 11792# check MIN/MAX(f_int1) success: 1 11793# check MIN/MAX(f_int2) success: 1 11794INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11795SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11796CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11797WHERE f_int1 IN (2,3); 11798ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 11799# check prerequisites-3 success: 1 11800# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11801INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11802SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11803CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11804WHERE f_int1 IN (2,3); 11805DELETE FROM t1 WHERE f_charbig = 'delete me'; 11806INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11807SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11808CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11809WHERE f_int1 IN (2,3); 11810DELETE FROM t1 WHERE f_charbig = 'delete me'; 11811# check read via f_int1 success: 1 11812# check read via f_int2 success: 1 11813 11814# check multiple-1 success: 1 11815DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11816 11817# check multiple-2 success: 1 11818INSERT INTO t1 SELECT * FROM t0_template 11819WHERE MOD(f_int1,3) = 0; 11820 11821# check multiple-3 success: 1 11822UPDATE t1 SET f_int1 = f_int1 + @max_row 11823WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11824AND @max_row_div2 + @max_row_div4; 11825 11826# check multiple-4 success: 1 11827DELETE FROM t1 11828WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11829AND @max_row_div2 + @max_row_div4 + @max_row; 11830 11831# check multiple-5 success: 1 11832SELECT COUNT(*) INTO @try_count FROM t0_template 11833WHERE MOD(f_int1,3) = 0 11834AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11835SELECT COUNT(*) INTO @clash_count 11836FROM t1 INNER JOIN t0_template USING(f_int1) 11837WHERE MOD(f_int1,3) = 0 11838AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11839SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11840INSERT INTO t1 11841SET f_int1 = @cur_value , f_int2 = @cur_value, 11842f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11843f_charbig = '#SINGLE#'; 11844 11845# check single-1 success: 1 11846SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11847INSERT INTO t1 11848SET f_int1 = @cur_value , f_int2 = @cur_value, 11849f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11850f_charbig = '#SINGLE#'; 11851 11852# check single-2 success: 1 11853SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11854SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11855UPDATE t1 SET f_int1 = @cur_value2 11856WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11857 11858# check single-3 success: 1 11859SET @cur_value1= -1; 11860SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11861UPDATE t1 SET f_int1 = @cur_value1 11862WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11863 11864# check single-4 success: 1 11865SELECT MAX(f_int1) INTO @cur_value FROM t1; 11866DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11867 11868# check single-5 success: 1 11869DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11870 11871# check single-6 success: 1 11872INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11873 11874# check single-7 success: 1 11875DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11876DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11877INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11878f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11879f_charbig = '#NULL#'; 11880INSERT INTO t1 11881SET f_int1 = NULL , f_int2 = -@max_row, 11882f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11883f_charbig = '#NULL#'; 11884ERROR 23000: Column 'f_int1' cannot be null 11885# check null success: 1 11886DELETE FROM t1 11887WHERE f_int1 = 0 AND f_int2 = 0 11888AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11889AND f_charbig = '#NULL#'; 11890INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11891SELECT f_int1, f_int1, '', '', 'was inserted' 11892 FROM t0_template source_tab 11893WHERE MOD(f_int1,3) = 0 11894AND f_int1 BETWEEN @max_row_div2 AND @max_row 11895ON DUPLICATE KEY 11896UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11897f_int2 = 2 * @max_row + source_tab.f_int1, 11898f_charbig = 'was updated'; 11899 11900# check unique-1-a success: 1 11901 11902# check unique-1-b success: 1 11903DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11904UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11905f_int2 = CAST(f_char1 AS SIGNED INT), 11906f_charbig = CONCAT('===',f_char1,'===') 11907WHERE f_charbig = 'was updated'; 11908REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11909SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11910 FROM t0_template source_tab 11911WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11912 11913# check replace success: 1 11914DELETE FROM t1 11915WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11916DELETE FROM t1 11917WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11918f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11919UPDATE t1 SET f_int2 = f_int1, 11920f_char1 = CAST(f_int1 AS CHAR), 11921f_char2 = CAST(f_int1 AS CHAR), 11922f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11923WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11924SET AUTOCOMMIT= 0; 11925INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11926SELECT f_int1, f_int1, '', '', 'was inserted' 11927FROM t0_template source_tab 11928WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11929 11930# check transactions-1 success: 1 11931COMMIT WORK; 11932 11933# check transactions-2 success: 1 11934ROLLBACK WORK; 11935 11936# check transactions-3 success: 1 11937DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11938COMMIT WORK; 11939ROLLBACK WORK; 11940 11941# check transactions-4 success: 1 11942INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11943SELECT f_int1, f_int1, '', '', 'was inserted' 11944FROM t0_template source_tab 11945WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11946 11947# check transactions-5 success: 1 11948ROLLBACK WORK; 11949 11950# check transactions-6 success: 1 11951# INFO: Storage engine used for t1 seems to be transactional. 11952COMMIT; 11953 11954# check transactions-7 success: 1 11955DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11956COMMIT WORK; 11957SET @@session.sql_mode = 'traditional'; 11958Warnings: 11959Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11960SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11961INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11962SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11963'', '', 'was inserted' FROM t0_template 11964WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11965ERROR 22012: Division by 0 11966COMMIT; 11967 11968# check transactions-8 success: 1 11969# INFO: Storage engine used for t1 seems to be able to revert 11970# changes made by the failing statement. 11971SET @@session.sql_mode = ''; 11972Warnings: 11973Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11974SET AUTOCOMMIT= 1; 11975DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11976COMMIT WORK; 11977UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11978 11979# check special-1 success: 1 11980UPDATE t1 SET f_charbig = ''; 11981 11982# check special-2 success: 1 11983UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11984INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11985SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11987INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11988SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11989'just inserted' FROM t0_template 11990WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11991CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11992BEGIN 11993UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11994f_charbig = 'updated by trigger' 11995 WHERE f_int1 = new.f_int1; 11996END| 11997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11998SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11999WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12000 12001# check trigger-1 success: 1 12002DROP TRIGGER trg_1; 12003UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12004f_int2 = CAST(f_char1 AS SIGNED INT), 12005f_charbig = 'just inserted' 12006 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12007DELETE FROM t0_aux 12008WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12009INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12010SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12011'just inserted' FROM t0_template 12012WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12013CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12014BEGIN 12015UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12016f_charbig = 'updated by trigger' 12017 WHERE f_int1 = new.f_int1; 12018END| 12019INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12020SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12022 12023# check trigger-2 success: 1 12024DROP TRIGGER trg_1; 12025UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12026f_int2 = CAST(f_char1 AS SIGNED INT), 12027f_charbig = 'just inserted' 12028 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12029DELETE FROM t0_aux 12030WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12031INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12032SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12033'just inserted' FROM t0_template 12034WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12035CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12036BEGIN 12037UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12038f_charbig = 'updated by trigger' 12039 WHERE f_int1 = new.f_int1; 12040END| 12041UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12042WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12043 12044# check trigger-3 success: 1 12045DROP TRIGGER trg_1; 12046UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12047f_int2 = CAST(f_char1 AS SIGNED INT), 12048f_charbig = 'just inserted' 12049 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12050DELETE FROM t0_aux 12051WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12052INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12053SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12054'just inserted' FROM t0_template 12055WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12056CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12057BEGIN 12058UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12059f_charbig = 'updated by trigger' 12060 WHERE f_int1 = - old.f_int1; 12061END| 12062UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12063WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12064 12065# check trigger-4 success: 1 12066DROP TRIGGER trg_1; 12067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12068f_int2 = CAST(f_char1 AS SIGNED INT), 12069f_charbig = 'just inserted' 12070 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12071DELETE FROM t0_aux 12072WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12073INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12074SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12075'just inserted' FROM t0_template 12076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12077CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12078BEGIN 12079UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12080f_charbig = 'updated by trigger' 12081 WHERE f_int1 = new.f_int1; 12082END| 12083UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12084WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12085 12086# check trigger-5 success: 1 12087DROP TRIGGER trg_1; 12088UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12089f_int2 = CAST(f_char1 AS SIGNED INT), 12090f_charbig = 'just inserted' 12091 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12092DELETE FROM t0_aux 12093WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12094INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12095SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12096'just inserted' FROM t0_template 12097WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12098CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12099BEGIN 12100UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12101f_charbig = 'updated by trigger' 12102 WHERE f_int1 = - old.f_int1; 12103END| 12104UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12105WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12106 12107# check trigger-6 success: 1 12108DROP TRIGGER trg_1; 12109UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12110f_int2 = CAST(f_char1 AS SIGNED INT), 12111f_charbig = 'just inserted' 12112 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12113DELETE FROM t0_aux 12114WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12115INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12116SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12117'just inserted' FROM t0_template 12118WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12119CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12120BEGIN 12121UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12122f_charbig = 'updated by trigger' 12123 WHERE f_int1 = - old.f_int1; 12124END| 12125DELETE FROM t0_aux 12126WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12127 12128# check trigger-7 success: 1 12129DROP TRIGGER trg_1; 12130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12131f_int2 = CAST(f_char1 AS SIGNED INT), 12132f_charbig = 'just inserted' 12133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12134DELETE FROM t0_aux 12135WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12136INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12137SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12138'just inserted' FROM t0_template 12139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12140CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12141BEGIN 12142UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12143f_charbig = 'updated by trigger' 12144 WHERE f_int1 = - old.f_int1; 12145END| 12146DELETE FROM t0_aux 12147WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12148 12149# check trigger-8 success: 1 12150DROP TRIGGER trg_1; 12151UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12152f_int2 = CAST(f_char1 AS SIGNED INT), 12153f_charbig = 'just inserted' 12154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12155DELETE FROM t0_aux 12156WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12157DELETE FROM t1 12158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12159CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12160BEGIN 12161SET new.f_int1 = old.f_int1 + @max_row, 12162new.f_int2 = old.f_int2 - @max_row, 12163new.f_charbig = '####updated per update trigger####'; 12164END| 12165UPDATE t1 12166SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12167f_charbig = '####updated per update statement itself####'; 12168 12169# check trigger-9 success: 1 12170DROP TRIGGER trg_2; 12171UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12172f_int2 = CAST(f_char1 AS SIGNED INT), 12173f_charbig = CONCAT('===',f_char1,'==='); 12174CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12175BEGIN 12176SET new.f_int1 = new.f_int1 + @max_row, 12177new.f_int2 = new.f_int2 - @max_row, 12178new.f_charbig = '####updated per update trigger####'; 12179END| 12180UPDATE t1 12181SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12182f_charbig = '####updated per update statement itself####'; 12183 12184# check trigger-10 success: 1 12185DROP TRIGGER trg_2; 12186UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12187f_int2 = CAST(f_char1 AS SIGNED INT), 12188f_charbig = CONCAT('===',f_char1,'==='); 12189CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12190BEGIN 12191SET new.f_int1 = @my_max1 + @counter, 12192new.f_int2 = @my_min2 - @counter, 12193new.f_charbig = '####updated per insert trigger####'; 12194SET @counter = @counter + 1; 12195END| 12196SET @counter = 1; 12197SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12198INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12199SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12200CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12202ORDER BY f_int1; 12203DROP TRIGGER trg_3; 12204 12205# check trigger-11 success: 1 12206DELETE FROM t1 12207WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12208AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12209AND f_charbig = '####updated per insert trigger####'; 12210CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12211BEGIN 12212SET new.f_int1 = @my_max1 + @counter, 12213new.f_int2 = @my_min2 - @counter, 12214new.f_charbig = '####updated per insert trigger####'; 12215SET @counter = @counter + 1; 12216END| 12217SET @counter = 1; 12218SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12219INSERT INTO t1 (f_char1, f_char2, f_charbig) 12220SELECT CAST(f_int1 AS CHAR), 12221CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12223ORDER BY f_int1; 12224DROP TRIGGER trg_3; 12225 12226# check trigger-12 success: 1 12227DELETE FROM t1 12228WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12229AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12230AND f_charbig = '####updated per insert trigger####'; 12231ANALYZE TABLE t1; 12232Table Op Msg_type Msg_text 12233test.t1 analyze status OK 12234CHECK TABLE t1 EXTENDED; 12235Table Op Msg_type Msg_text 12236test.t1 check status OK 12237CHECKSUM TABLE t1 EXTENDED; 12238Table Checksum 12239test.t1 <some_value> 12240OPTIMIZE TABLE t1; 12241Table Op Msg_type Msg_text 12242test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 12243test.t1 optimize status OK 12244# check layout success: 1 12245REPAIR TABLE t1 EXTENDED; 12246Table Op Msg_type Msg_text 12247test.t1 repair status OK 12248# check layout success: 1 12249TRUNCATE t1; 12250 12251# check TRUNCATE success: 1 12252# check layout success: 1 12253# End usability test (inc/partition_check.inc) 12254DROP TABLE t1; 12255CREATE TABLE t1 ( 12256f_int1 INTEGER, 12257f_int2 INTEGER, 12258f_char1 CHAR(20), 12259f_char2 CHAR(20), 12260f_charbig VARCHAR(1000) 12261, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 12262) 12263PARTITION BY KEY(f_int1) PARTITIONS 5; 12264INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12265SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 12266# Start usability test (inc/partition_check.inc) 12267create_command 12268SHOW CREATE TABLE t1; 12269Table Create Table 12270t1 CREATE TABLE `t1` ( 12271 `f_int1` int(11) NOT NULL, 12272 `f_int2` int(11) NOT NULL, 12273 `f_char1` char(20) DEFAULT NULL, 12274 `f_char2` char(20) DEFAULT NULL, 12275 `f_charbig` varchar(1000) DEFAULT NULL, 12276 PRIMARY KEY (`f_int1`,`f_int2`), 12277 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 12278) ENGINE=InnoDB DEFAULT CHARSET=latin1 12279/*!50100 PARTITION BY KEY (f_int1) 12280PARTITIONS 5 */ 12281 12282unified filelist 12283t1#P#p0.ibd 12284t1#P#p1.ibd 12285t1#P#p2.ibd 12286t1#P#p3.ibd 12287t1#P#p4.ibd 12288t1.frm 12289 12290# check prerequisites-1 success: 1 12291# check COUNT(*) success: 1 12292# check MIN/MAX(f_int1) success: 1 12293# check MIN/MAX(f_int2) success: 1 12294INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12295SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12296CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12297WHERE f_int1 IN (2,3); 12298ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 12299# check prerequisites-3 success: 1 12300# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12301INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12302SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12303CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12304WHERE f_int1 IN (2,3); 12305DELETE FROM t1 WHERE f_charbig = 'delete me'; 12306INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12307SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12308CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12309WHERE f_int1 IN (2,3); 12310DELETE FROM t1 WHERE f_charbig = 'delete me'; 12311# check read via f_int1 success: 1 12312# check read via f_int2 success: 1 12313 12314# check multiple-1 success: 1 12315DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12316 12317# check multiple-2 success: 1 12318INSERT INTO t1 SELECT * FROM t0_template 12319WHERE MOD(f_int1,3) = 0; 12320 12321# check multiple-3 success: 1 12322UPDATE t1 SET f_int1 = f_int1 + @max_row 12323WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12324AND @max_row_div2 + @max_row_div4; 12325 12326# check multiple-4 success: 1 12327DELETE FROM t1 12328WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12329AND @max_row_div2 + @max_row_div4 + @max_row; 12330 12331# check multiple-5 success: 1 12332SELECT COUNT(*) INTO @try_count FROM t0_template 12333WHERE MOD(f_int1,3) = 0 12334AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12335SELECT COUNT(*) INTO @clash_count 12336FROM t1 INNER JOIN t0_template USING(f_int1) 12337WHERE MOD(f_int1,3) = 0 12338AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12339SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12340INSERT INTO t1 12341SET f_int1 = @cur_value , f_int2 = @cur_value, 12342f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12343f_charbig = '#SINGLE#'; 12344 12345# check single-1 success: 1 12346SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12347INSERT INTO t1 12348SET f_int1 = @cur_value , f_int2 = @cur_value, 12349f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12350f_charbig = '#SINGLE#'; 12351 12352# check single-2 success: 1 12353SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12354SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12355UPDATE t1 SET f_int1 = @cur_value2 12356WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12357 12358# check single-3 success: 1 12359SET @cur_value1= -1; 12360SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12361UPDATE t1 SET f_int1 = @cur_value1 12362WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12363 12364# check single-4 success: 1 12365SELECT MAX(f_int1) INTO @cur_value FROM t1; 12366DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12367 12368# check single-5 success: 1 12369DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12370 12371# check single-6 success: 1 12372INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12373 12374# check single-7 success: 1 12375DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12376DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12377INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12378f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12379f_charbig = '#NULL#'; 12380INSERT INTO t1 12381SET f_int1 = NULL , f_int2 = -@max_row, 12382f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12383f_charbig = '#NULL#'; 12384ERROR 23000: Column 'f_int1' cannot be null 12385# check null success: 1 12386DELETE FROM t1 12387WHERE f_int1 = 0 AND f_int2 = 0 12388AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12389AND f_charbig = '#NULL#'; 12390INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12391SELECT f_int1, f_int1, '', '', 'was inserted' 12392 FROM t0_template source_tab 12393WHERE MOD(f_int1,3) = 0 12394AND f_int1 BETWEEN @max_row_div2 AND @max_row 12395ON DUPLICATE KEY 12396UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12397f_int2 = 2 * @max_row + source_tab.f_int1, 12398f_charbig = 'was updated'; 12399 12400# check unique-1-a success: 1 12401 12402# check unique-1-b success: 1 12403DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12404UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12405f_int2 = CAST(f_char1 AS SIGNED INT), 12406f_charbig = CONCAT('===',f_char1,'===') 12407WHERE f_charbig = 'was updated'; 12408REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12409SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12410 FROM t0_template source_tab 12411WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12412 12413# check replace success: 1 12414DELETE FROM t1 12415WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12416DELETE FROM t1 12417WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12418f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12419UPDATE t1 SET f_int2 = f_int1, 12420f_char1 = CAST(f_int1 AS CHAR), 12421f_char2 = CAST(f_int1 AS CHAR), 12422f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12423WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12424SET AUTOCOMMIT= 0; 12425INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12426SELECT f_int1, f_int1, '', '', 'was inserted' 12427FROM t0_template source_tab 12428WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12429 12430# check transactions-1 success: 1 12431COMMIT WORK; 12432 12433# check transactions-2 success: 1 12434ROLLBACK WORK; 12435 12436# check transactions-3 success: 1 12437DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12438COMMIT WORK; 12439ROLLBACK WORK; 12440 12441# check transactions-4 success: 1 12442INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12443SELECT f_int1, f_int1, '', '', 'was inserted' 12444FROM t0_template source_tab 12445WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12446 12447# check transactions-5 success: 1 12448ROLLBACK WORK; 12449 12450# check transactions-6 success: 1 12451# INFO: Storage engine used for t1 seems to be transactional. 12452COMMIT; 12453 12454# check transactions-7 success: 1 12455DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12456COMMIT WORK; 12457SET @@session.sql_mode = 'traditional'; 12458Warnings: 12459Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12460SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12461INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12462SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12463'', '', 'was inserted' FROM t0_template 12464WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12465ERROR 22012: Division by 0 12466COMMIT; 12467 12468# check transactions-8 success: 1 12469# INFO: Storage engine used for t1 seems to be able to revert 12470# changes made by the failing statement. 12471SET @@session.sql_mode = ''; 12472Warnings: 12473Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12474SET AUTOCOMMIT= 1; 12475DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12476COMMIT WORK; 12477UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12478 12479# check special-1 success: 1 12480UPDATE t1 SET f_charbig = ''; 12481 12482# check special-2 success: 1 12483UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 12484INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12485SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 12486WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12488SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12489'just inserted' FROM t0_template 12490WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12491CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 12492BEGIN 12493UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12494f_charbig = 'updated by trigger' 12495 WHERE f_int1 = new.f_int1; 12496END| 12497INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12498SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12499WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12500 12501# check trigger-1 success: 1 12502DROP TRIGGER trg_1; 12503UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12504f_int2 = CAST(f_char1 AS SIGNED INT), 12505f_charbig = 'just inserted' 12506 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12507DELETE FROM t0_aux 12508WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12510SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12511'just inserted' FROM t0_template 12512WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12513CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12514BEGIN 12515UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12516f_charbig = 'updated by trigger' 12517 WHERE f_int1 = new.f_int1; 12518END| 12519INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12520SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12522 12523# check trigger-2 success: 1 12524DROP TRIGGER trg_1; 12525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12526f_int2 = CAST(f_char1 AS SIGNED INT), 12527f_charbig = 'just inserted' 12528 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12529DELETE FROM t0_aux 12530WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12532SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12533'just inserted' FROM t0_template 12534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12535CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12536BEGIN 12537UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12538f_charbig = 'updated by trigger' 12539 WHERE f_int1 = new.f_int1; 12540END| 12541UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12542WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12543 12544# check trigger-3 success: 1 12545DROP TRIGGER trg_1; 12546UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12547f_int2 = CAST(f_char1 AS SIGNED INT), 12548f_charbig = 'just inserted' 12549 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12550DELETE FROM t0_aux 12551WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12552INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12553SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12554'just inserted' FROM t0_template 12555WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12556CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12557BEGIN 12558UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12559f_charbig = 'updated by trigger' 12560 WHERE f_int1 = - old.f_int1; 12561END| 12562UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12563WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12564 12565# check trigger-4 success: 1 12566DROP TRIGGER trg_1; 12567UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12568f_int2 = CAST(f_char1 AS SIGNED INT), 12569f_charbig = 'just inserted' 12570 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12571DELETE FROM t0_aux 12572WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12573INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12574SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12575'just inserted' FROM t0_template 12576WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12577CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12578BEGIN 12579UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12580f_charbig = 'updated by trigger' 12581 WHERE f_int1 = new.f_int1; 12582END| 12583UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12584WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12585 12586# check trigger-5 success: 1 12587DROP TRIGGER trg_1; 12588UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12589f_int2 = CAST(f_char1 AS SIGNED INT), 12590f_charbig = 'just inserted' 12591 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12592DELETE FROM t0_aux 12593WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12594INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12595SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12596'just inserted' FROM t0_template 12597WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12598CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12599BEGIN 12600UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12601f_charbig = 'updated by trigger' 12602 WHERE f_int1 = - old.f_int1; 12603END| 12604UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12605WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12606 12607# check trigger-6 success: 1 12608DROP TRIGGER trg_1; 12609UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12610f_int2 = CAST(f_char1 AS SIGNED INT), 12611f_charbig = 'just inserted' 12612 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12613DELETE FROM t0_aux 12614WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12615INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12616SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12617'just inserted' FROM t0_template 12618WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12619CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12620BEGIN 12621UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12622f_charbig = 'updated by trigger' 12623 WHERE f_int1 = - old.f_int1; 12624END| 12625DELETE FROM t0_aux 12626WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12627 12628# check trigger-7 success: 1 12629DROP TRIGGER trg_1; 12630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12631f_int2 = CAST(f_char1 AS SIGNED INT), 12632f_charbig = 'just inserted' 12633 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12634DELETE FROM t0_aux 12635WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12636INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12637SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12638'just inserted' FROM t0_template 12639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12640CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12641BEGIN 12642UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12643f_charbig = 'updated by trigger' 12644 WHERE f_int1 = - old.f_int1; 12645END| 12646DELETE FROM t0_aux 12647WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12648 12649# check trigger-8 success: 1 12650DROP TRIGGER trg_1; 12651UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12652f_int2 = CAST(f_char1 AS SIGNED INT), 12653f_charbig = 'just inserted' 12654 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12655DELETE FROM t0_aux 12656WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12657DELETE FROM t1 12658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12659CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12660BEGIN 12661SET new.f_int1 = old.f_int1 + @max_row, 12662new.f_int2 = old.f_int2 - @max_row, 12663new.f_charbig = '####updated per update trigger####'; 12664END| 12665UPDATE t1 12666SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12667f_charbig = '####updated per update statement itself####'; 12668 12669# check trigger-9 success: 1 12670DROP TRIGGER trg_2; 12671UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12672f_int2 = CAST(f_char1 AS SIGNED INT), 12673f_charbig = CONCAT('===',f_char1,'==='); 12674CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12675BEGIN 12676SET new.f_int1 = new.f_int1 + @max_row, 12677new.f_int2 = new.f_int2 - @max_row, 12678new.f_charbig = '####updated per update trigger####'; 12679END| 12680UPDATE t1 12681SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12682f_charbig = '####updated per update statement itself####'; 12683 12684# check trigger-10 success: 1 12685DROP TRIGGER trg_2; 12686UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12687f_int2 = CAST(f_char1 AS SIGNED INT), 12688f_charbig = CONCAT('===',f_char1,'==='); 12689CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12690BEGIN 12691SET new.f_int1 = @my_max1 + @counter, 12692new.f_int2 = @my_min2 - @counter, 12693new.f_charbig = '####updated per insert trigger####'; 12694SET @counter = @counter + 1; 12695END| 12696SET @counter = 1; 12697SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12698INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12699SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12700CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12702ORDER BY f_int1; 12703DROP TRIGGER trg_3; 12704 12705# check trigger-11 success: 1 12706DELETE FROM t1 12707WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12708AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12709AND f_charbig = '####updated per insert trigger####'; 12710CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12711BEGIN 12712SET new.f_int1 = @my_max1 + @counter, 12713new.f_int2 = @my_min2 - @counter, 12714new.f_charbig = '####updated per insert trigger####'; 12715SET @counter = @counter + 1; 12716END| 12717SET @counter = 1; 12718SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12719INSERT INTO t1 (f_char1, f_char2, f_charbig) 12720SELECT CAST(f_int1 AS CHAR), 12721CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12723ORDER BY f_int1; 12724DROP TRIGGER trg_3; 12725 12726# check trigger-12 success: 1 12727DELETE FROM t1 12728WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12729AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12730AND f_charbig = '####updated per insert trigger####'; 12731ANALYZE TABLE t1; 12732Table Op Msg_type Msg_text 12733test.t1 analyze status OK 12734CHECK TABLE t1 EXTENDED; 12735Table Op Msg_type Msg_text 12736test.t1 check status OK 12737CHECKSUM TABLE t1 EXTENDED; 12738Table Checksum 12739test.t1 <some_value> 12740OPTIMIZE TABLE t1; 12741Table Op Msg_type Msg_text 12742test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 12743test.t1 optimize status OK 12744# check layout success: 1 12745REPAIR TABLE t1 EXTENDED; 12746Table Op Msg_type Msg_text 12747test.t1 repair status OK 12748# check layout success: 1 12749TRUNCATE t1; 12750 12751# check TRUNCATE success: 1 12752# check layout success: 1 12753# End usability test (inc/partition_check.inc) 12754DROP TABLE t1; 12755CREATE TABLE t1 ( 12756f_int1 INTEGER, 12757f_int2 INTEGER, 12758f_char1 CHAR(20), 12759f_char2 CHAR(20), 12760f_charbig VARCHAR(1000) 12761, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 12762) 12763PARTITION BY LIST(MOD(f_int1,4)) 12764(PARTITION part_3 VALUES IN (-3), 12765PARTITION part_2 VALUES IN (-2), 12766PARTITION part_1 VALUES IN (-1), 12767PARTITION part_N VALUES IN (NULL), 12768PARTITION part0 VALUES IN (0), 12769PARTITION part1 VALUES IN (1), 12770PARTITION part2 VALUES IN (2), 12771PARTITION part3 VALUES IN (3)); 12772INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12773SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 12774# Start usability test (inc/partition_check.inc) 12775create_command 12776SHOW CREATE TABLE t1; 12777Table Create Table 12778t1 CREATE TABLE `t1` ( 12779 `f_int1` int(11) NOT NULL, 12780 `f_int2` int(11) NOT NULL, 12781 `f_char1` char(20) DEFAULT NULL, 12782 `f_char2` char(20) DEFAULT NULL, 12783 `f_charbig` varchar(1000) DEFAULT NULL, 12784 PRIMARY KEY (`f_int1`,`f_int2`), 12785 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 12786) ENGINE=InnoDB DEFAULT CHARSET=latin1 12787/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 12788(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 12789 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 12790 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 12791 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 12792 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 12793 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 12794 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 12795 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 12796 12797unified filelist 12798t1#P#part0.ibd 12799t1#P#part1.ibd 12800t1#P#part2.ibd 12801t1#P#part3.ibd 12802t1#P#part_1.ibd 12803t1#P#part_2.ibd 12804t1#P#part_3.ibd 12805t1#P#part_N.ibd 12806t1.frm 12807 12808# check prerequisites-1 success: 1 12809# check COUNT(*) success: 1 12810# check MIN/MAX(f_int1) success: 1 12811# check MIN/MAX(f_int2) success: 1 12812INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12813SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12814CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12815WHERE f_int1 IN (2,3); 12816ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 12817# check prerequisites-3 success: 1 12818# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12819INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12820SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12821CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12822WHERE f_int1 IN (2,3); 12823DELETE FROM t1 WHERE f_charbig = 'delete me'; 12824INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12825SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12826CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12827WHERE f_int1 IN (2,3); 12828DELETE FROM t1 WHERE f_charbig = 'delete me'; 12829# check read via f_int1 success: 1 12830# check read via f_int2 success: 1 12831 12832# check multiple-1 success: 1 12833DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12834 12835# check multiple-2 success: 1 12836INSERT INTO t1 SELECT * FROM t0_template 12837WHERE MOD(f_int1,3) = 0; 12838 12839# check multiple-3 success: 1 12840UPDATE t1 SET f_int1 = f_int1 + @max_row 12841WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12842AND @max_row_div2 + @max_row_div4; 12843 12844# check multiple-4 success: 1 12845DELETE FROM t1 12846WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12847AND @max_row_div2 + @max_row_div4 + @max_row; 12848 12849# check multiple-5 success: 1 12850SELECT COUNT(*) INTO @try_count FROM t0_template 12851WHERE MOD(f_int1,3) = 0 12852AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12853SELECT COUNT(*) INTO @clash_count 12854FROM t1 INNER JOIN t0_template USING(f_int1) 12855WHERE MOD(f_int1,3) = 0 12856AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12857SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12858INSERT INTO t1 12859SET f_int1 = @cur_value , f_int2 = @cur_value, 12860f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12861f_charbig = '#SINGLE#'; 12862 12863# check single-1 success: 1 12864SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12865INSERT INTO t1 12866SET f_int1 = @cur_value , f_int2 = @cur_value, 12867f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12868f_charbig = '#SINGLE#'; 12869 12870# check single-2 success: 1 12871SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12872SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12873UPDATE t1 SET f_int1 = @cur_value2 12874WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12875 12876# check single-3 success: 1 12877SET @cur_value1= -1; 12878SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12879UPDATE t1 SET f_int1 = @cur_value1 12880WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12881 12882# check single-4 success: 1 12883SELECT MAX(f_int1) INTO @cur_value FROM t1; 12884DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12885 12886# check single-5 success: 1 12887DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12888 12889# check single-6 success: 1 12890INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12891 12892# check single-7 success: 1 12893DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12894DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12895INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12896f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12897f_charbig = '#NULL#'; 12898INSERT INTO t1 12899SET f_int1 = NULL , f_int2 = -@max_row, 12900f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12901f_charbig = '#NULL#'; 12902ERROR 23000: Column 'f_int1' cannot be null 12903# check null success: 1 12904DELETE FROM t1 12905WHERE f_int1 = 0 AND f_int2 = 0 12906AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12907AND f_charbig = '#NULL#'; 12908INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12909SELECT f_int1, f_int1, '', '', 'was inserted' 12910 FROM t0_template source_tab 12911WHERE MOD(f_int1,3) = 0 12912AND f_int1 BETWEEN @max_row_div2 AND @max_row 12913ON DUPLICATE KEY 12914UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12915f_int2 = 2 * @max_row + source_tab.f_int1, 12916f_charbig = 'was updated'; 12917 12918# check unique-1-a success: 1 12919 12920# check unique-1-b success: 1 12921DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12922UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12923f_int2 = CAST(f_char1 AS SIGNED INT), 12924f_charbig = CONCAT('===',f_char1,'===') 12925WHERE f_charbig = 'was updated'; 12926REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12927SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12928 FROM t0_template source_tab 12929WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12930 12931# check replace success: 1 12932DELETE FROM t1 12933WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12934DELETE FROM t1 12935WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12936f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12937UPDATE t1 SET f_int2 = f_int1, 12938f_char1 = CAST(f_int1 AS CHAR), 12939f_char2 = CAST(f_int1 AS CHAR), 12940f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12941WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12942SET AUTOCOMMIT= 0; 12943INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12944SELECT f_int1, f_int1, '', '', 'was inserted' 12945FROM t0_template source_tab 12946WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12947 12948# check transactions-1 success: 1 12949COMMIT WORK; 12950 12951# check transactions-2 success: 1 12952ROLLBACK WORK; 12953 12954# check transactions-3 success: 1 12955DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12956COMMIT WORK; 12957ROLLBACK WORK; 12958 12959# check transactions-4 success: 1 12960INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12961SELECT f_int1, f_int1, '', '', 'was inserted' 12962FROM t0_template source_tab 12963WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12964 12965# check transactions-5 success: 1 12966ROLLBACK WORK; 12967 12968# check transactions-6 success: 1 12969# INFO: Storage engine used for t1 seems to be transactional. 12970COMMIT; 12971 12972# check transactions-7 success: 1 12973DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12974COMMIT WORK; 12975SET @@session.sql_mode = 'traditional'; 12976Warnings: 12977Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12978SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12980SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12981'', '', 'was inserted' FROM t0_template 12982WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12983ERROR 22012: Division by 0 12984COMMIT; 12985 12986# check transactions-8 success: 1 12987# INFO: Storage engine used for t1 seems to be able to revert 12988# changes made by the failing statement. 12989SET @@session.sql_mode = ''; 12990Warnings: 12991Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12992SET AUTOCOMMIT= 1; 12993DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12994COMMIT WORK; 12995UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12996 12997# check special-1 success: 1 12998UPDATE t1 SET f_charbig = ''; 12999 13000# check special-2 success: 1 13001UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13002INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13003SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13005INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13006SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13007'just inserted' FROM t0_template 13008WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13009CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13010BEGIN 13011UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13012f_charbig = 'updated by trigger' 13013 WHERE f_int1 = new.f_int1; 13014END| 13015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13016SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13017WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13018 13019# check trigger-1 success: 1 13020DROP TRIGGER trg_1; 13021UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13022f_int2 = CAST(f_char1 AS SIGNED INT), 13023f_charbig = 'just inserted' 13024 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13025DELETE FROM t0_aux 13026WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13027INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13028SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13029'just inserted' FROM t0_template 13030WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13031CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13032BEGIN 13033UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13034f_charbig = 'updated by trigger' 13035 WHERE f_int1 = new.f_int1; 13036END| 13037INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13038SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13040 13041# check trigger-2 success: 1 13042DROP TRIGGER trg_1; 13043UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13044f_int2 = CAST(f_char1 AS SIGNED INT), 13045f_charbig = 'just inserted' 13046 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13047DELETE FROM t0_aux 13048WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13049INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13050SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13051'just inserted' FROM t0_template 13052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13053CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13054BEGIN 13055UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13056f_charbig = 'updated by trigger' 13057 WHERE f_int1 = new.f_int1; 13058END| 13059UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13060WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13061 13062# check trigger-3 success: 1 13063DROP TRIGGER trg_1; 13064UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13065f_int2 = CAST(f_char1 AS SIGNED INT), 13066f_charbig = 'just inserted' 13067 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13068DELETE FROM t0_aux 13069WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13070INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13071SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13072'just inserted' FROM t0_template 13073WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13074CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13075BEGIN 13076UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13077f_charbig = 'updated by trigger' 13078 WHERE f_int1 = - old.f_int1; 13079END| 13080UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13081WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13082 13083# check trigger-4 success: 1 13084DROP TRIGGER trg_1; 13085UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13086f_int2 = CAST(f_char1 AS SIGNED INT), 13087f_charbig = 'just inserted' 13088 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13089DELETE FROM t0_aux 13090WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13091INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13092SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13093'just inserted' FROM t0_template 13094WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13095CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13096BEGIN 13097UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13098f_charbig = 'updated by trigger' 13099 WHERE f_int1 = new.f_int1; 13100END| 13101UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13102WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13103 13104# check trigger-5 success: 1 13105DROP TRIGGER trg_1; 13106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13107f_int2 = CAST(f_char1 AS SIGNED INT), 13108f_charbig = 'just inserted' 13109 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13110DELETE FROM t0_aux 13111WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13112INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13113SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13114'just inserted' FROM t0_template 13115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13116CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13117BEGIN 13118UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13119f_charbig = 'updated by trigger' 13120 WHERE f_int1 = - old.f_int1; 13121END| 13122UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13123WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13124 13125# check trigger-6 success: 1 13126DROP TRIGGER trg_1; 13127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13128f_int2 = CAST(f_char1 AS SIGNED INT), 13129f_charbig = 'just inserted' 13130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13131DELETE FROM t0_aux 13132WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13133INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13134SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13135'just inserted' FROM t0_template 13136WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13137CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13138BEGIN 13139UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13140f_charbig = 'updated by trigger' 13141 WHERE f_int1 = - old.f_int1; 13142END| 13143DELETE FROM t0_aux 13144WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13145 13146# check trigger-7 success: 1 13147DROP TRIGGER trg_1; 13148UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13149f_int2 = CAST(f_char1 AS SIGNED INT), 13150f_charbig = 'just inserted' 13151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13152DELETE FROM t0_aux 13153WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13154INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13155SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13156'just inserted' FROM t0_template 13157WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13158CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13159BEGIN 13160UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13161f_charbig = 'updated by trigger' 13162 WHERE f_int1 = - old.f_int1; 13163END| 13164DELETE FROM t0_aux 13165WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13166 13167# check trigger-8 success: 1 13168DROP TRIGGER trg_1; 13169UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13170f_int2 = CAST(f_char1 AS SIGNED INT), 13171f_charbig = 'just inserted' 13172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13173DELETE FROM t0_aux 13174WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13175DELETE FROM t1 13176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13177CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13178BEGIN 13179SET new.f_int1 = old.f_int1 + @max_row, 13180new.f_int2 = old.f_int2 - @max_row, 13181new.f_charbig = '####updated per update trigger####'; 13182END| 13183UPDATE t1 13184SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13185f_charbig = '####updated per update statement itself####'; 13186 13187# check trigger-9 success: 1 13188DROP TRIGGER trg_2; 13189UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13190f_int2 = CAST(f_char1 AS SIGNED INT), 13191f_charbig = CONCAT('===',f_char1,'==='); 13192CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13193BEGIN 13194SET new.f_int1 = new.f_int1 + @max_row, 13195new.f_int2 = new.f_int2 - @max_row, 13196new.f_charbig = '####updated per update trigger####'; 13197END| 13198UPDATE t1 13199SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13200f_charbig = '####updated per update statement itself####'; 13201 13202# check trigger-10 success: 1 13203DROP TRIGGER trg_2; 13204UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13205f_int2 = CAST(f_char1 AS SIGNED INT), 13206f_charbig = CONCAT('===',f_char1,'==='); 13207CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13208BEGIN 13209SET new.f_int1 = @my_max1 + @counter, 13210new.f_int2 = @my_min2 - @counter, 13211new.f_charbig = '####updated per insert trigger####'; 13212SET @counter = @counter + 1; 13213END| 13214SET @counter = 1; 13215SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13216INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13217SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13218CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13219WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13220ORDER BY f_int1; 13221DROP TRIGGER trg_3; 13222 13223# check trigger-11 success: 1 13224DELETE FROM t1 13225WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13226AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13227AND f_charbig = '####updated per insert trigger####'; 13228CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13229BEGIN 13230SET new.f_int1 = @my_max1 + @counter, 13231new.f_int2 = @my_min2 - @counter, 13232new.f_charbig = '####updated per insert trigger####'; 13233SET @counter = @counter + 1; 13234END| 13235SET @counter = 1; 13236SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13237INSERT INTO t1 (f_char1, f_char2, f_charbig) 13238SELECT CAST(f_int1 AS CHAR), 13239CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13240WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13241ORDER BY f_int1; 13242DROP TRIGGER trg_3; 13243 13244# check trigger-12 success: 1 13245DELETE FROM t1 13246WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13247AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13248AND f_charbig = '####updated per insert trigger####'; 13249ANALYZE TABLE t1; 13250Table Op Msg_type Msg_text 13251test.t1 analyze status OK 13252CHECK TABLE t1 EXTENDED; 13253Table Op Msg_type Msg_text 13254test.t1 check status OK 13255CHECKSUM TABLE t1 EXTENDED; 13256Table Checksum 13257test.t1 <some_value> 13258OPTIMIZE TABLE t1; 13259Table Op Msg_type Msg_text 13260test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 13261test.t1 optimize status OK 13262# check layout success: 1 13263REPAIR TABLE t1 EXTENDED; 13264Table Op Msg_type Msg_text 13265test.t1 repair status OK 13266# check layout success: 1 13267TRUNCATE t1; 13268 13269# check TRUNCATE success: 1 13270# check layout success: 1 13271# End usability test (inc/partition_check.inc) 13272DROP TABLE t1; 13273CREATE TABLE t1 ( 13274f_int1 INTEGER, 13275f_int2 INTEGER, 13276f_char1 CHAR(20), 13277f_char2 CHAR(20), 13278f_charbig VARCHAR(1000) 13279, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 13280) 13281PARTITION BY RANGE(f_int1) 13282(PARTITION parta VALUES LESS THAN (0), 13283PARTITION partb VALUES LESS THAN (5), 13284PARTITION partc VALUES LESS THAN (10), 13285PARTITION partd VALUES LESS THAN (10 + 5), 13286PARTITION parte VALUES LESS THAN (20), 13287PARTITION partf VALUES LESS THAN (2147483646)); 13288INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13289SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 13290# Start usability test (inc/partition_check.inc) 13291create_command 13292SHOW CREATE TABLE t1; 13293Table Create Table 13294t1 CREATE TABLE `t1` ( 13295 `f_int1` int(11) NOT NULL, 13296 `f_int2` int(11) NOT NULL, 13297 `f_char1` char(20) DEFAULT NULL, 13298 `f_char2` char(20) DEFAULT NULL, 13299 `f_charbig` varchar(1000) DEFAULT NULL, 13300 PRIMARY KEY (`f_int1`,`f_int2`), 13301 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 13302) ENGINE=InnoDB DEFAULT CHARSET=latin1 13303/*!50100 PARTITION BY RANGE (f_int1) 13304(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 13305 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 13306 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 13307 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 13308 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 13309 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 13310 13311unified filelist 13312t1#P#parta.ibd 13313t1#P#partb.ibd 13314t1#P#partc.ibd 13315t1#P#partd.ibd 13316t1#P#parte.ibd 13317t1#P#partf.ibd 13318t1.frm 13319 13320# check prerequisites-1 success: 1 13321# check COUNT(*) success: 1 13322# check MIN/MAX(f_int1) success: 1 13323# check MIN/MAX(f_int2) success: 1 13324INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13325SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13326CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13327WHERE f_int1 IN (2,3); 13328ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 13329# check prerequisites-3 success: 1 13330# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 13331INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13332SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13333CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13334WHERE f_int1 IN (2,3); 13335DELETE FROM t1 WHERE f_charbig = 'delete me'; 13336INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13337SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13338CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13339WHERE f_int1 IN (2,3); 13340DELETE FROM t1 WHERE f_charbig = 'delete me'; 13341# check read via f_int1 success: 1 13342# check read via f_int2 success: 1 13343 13344# check multiple-1 success: 1 13345DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13346 13347# check multiple-2 success: 1 13348INSERT INTO t1 SELECT * FROM t0_template 13349WHERE MOD(f_int1,3) = 0; 13350 13351# check multiple-3 success: 1 13352UPDATE t1 SET f_int1 = f_int1 + @max_row 13353WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13354AND @max_row_div2 + @max_row_div4; 13355 13356# check multiple-4 success: 1 13357DELETE FROM t1 13358WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13359AND @max_row_div2 + @max_row_div4 + @max_row; 13360 13361# check multiple-5 success: 1 13362SELECT COUNT(*) INTO @try_count FROM t0_template 13363WHERE MOD(f_int1,3) = 0 13364AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13365SELECT COUNT(*) INTO @clash_count 13366FROM t1 INNER JOIN t0_template USING(f_int1) 13367WHERE MOD(f_int1,3) = 0 13368AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13369SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13370INSERT INTO t1 13371SET f_int1 = @cur_value , f_int2 = @cur_value, 13372f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13373f_charbig = '#SINGLE#'; 13374 13375# check single-1 success: 1 13376SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13377INSERT INTO t1 13378SET f_int1 = @cur_value , f_int2 = @cur_value, 13379f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13380f_charbig = '#SINGLE#'; 13381 13382# check single-2 success: 1 13383SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13384SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13385UPDATE t1 SET f_int1 = @cur_value2 13386WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13387 13388# check single-3 success: 1 13389SET @cur_value1= -1; 13390SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13391UPDATE t1 SET f_int1 = @cur_value1 13392WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13393 13394# check single-4 success: 1 13395SELECT MAX(f_int1) INTO @cur_value FROM t1; 13396DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13397 13398# check single-5 success: 1 13399DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13400 13401# check single-6 success: 1 13402INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13403ERROR HY000: Table has no partition for value 2147483647 13404DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13405INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13406f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13407f_charbig = '#NULL#'; 13408INSERT INTO t1 13409SET f_int1 = NULL , f_int2 = -@max_row, 13410f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13411f_charbig = '#NULL#'; 13412ERROR 23000: Column 'f_int1' cannot be null 13413# check null success: 1 13414DELETE FROM t1 13415WHERE f_int1 = 0 AND f_int2 = 0 13416AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13417AND f_charbig = '#NULL#'; 13418INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13419SELECT f_int1, f_int1, '', '', 'was inserted' 13420 FROM t0_template source_tab 13421WHERE MOD(f_int1,3) = 0 13422AND f_int1 BETWEEN @max_row_div2 AND @max_row 13423ON DUPLICATE KEY 13424UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 13425f_int2 = 2 * @max_row + source_tab.f_int1, 13426f_charbig = 'was updated'; 13427 13428# check unique-1-a success: 1 13429 13430# check unique-1-b success: 1 13431DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13432UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13433f_int2 = CAST(f_char1 AS SIGNED INT), 13434f_charbig = CONCAT('===',f_char1,'===') 13435WHERE f_charbig = 'was updated'; 13436REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13437SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 13438 FROM t0_template source_tab 13439WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13440 13441# check replace success: 1 13442DELETE FROM t1 13443WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13444DELETE FROM t1 13445WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13446f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13447UPDATE t1 SET f_int2 = f_int1, 13448f_char1 = CAST(f_int1 AS CHAR), 13449f_char2 = CAST(f_int1 AS CHAR), 13450f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13451WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13452SET AUTOCOMMIT= 0; 13453INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13454SELECT f_int1, f_int1, '', '', 'was inserted' 13455FROM t0_template source_tab 13456WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13457 13458# check transactions-1 success: 1 13459COMMIT WORK; 13460 13461# check transactions-2 success: 1 13462ROLLBACK WORK; 13463 13464# check transactions-3 success: 1 13465DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13466COMMIT WORK; 13467ROLLBACK WORK; 13468 13469# check transactions-4 success: 1 13470INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13471SELECT f_int1, f_int1, '', '', 'was inserted' 13472FROM t0_template source_tab 13473WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13474 13475# check transactions-5 success: 1 13476ROLLBACK WORK; 13477 13478# check transactions-6 success: 1 13479# INFO: Storage engine used for t1 seems to be transactional. 13480COMMIT; 13481 13482# check transactions-7 success: 1 13483DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13484COMMIT WORK; 13485SET @@session.sql_mode = 'traditional'; 13486Warnings: 13487Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13488SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13489INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13490SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13491'', '', 'was inserted' FROM t0_template 13492WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13493ERROR 22012: Division by 0 13494COMMIT; 13495 13496# check transactions-8 success: 1 13497# INFO: Storage engine used for t1 seems to be able to revert 13498# changes made by the failing statement. 13499SET @@session.sql_mode = ''; 13500Warnings: 13501Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13502SET AUTOCOMMIT= 1; 13503DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13504COMMIT WORK; 13505UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13506 13507# check special-1 success: 1 13508UPDATE t1 SET f_charbig = ''; 13509 13510# check special-2 success: 1 13511UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13512INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13513SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13515INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13516SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13517'just inserted' FROM t0_template 13518WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13519CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13520BEGIN 13521UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13522f_charbig = 'updated by trigger' 13523 WHERE f_int1 = new.f_int1; 13524END| 13525INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13526SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13527WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13528 13529# check trigger-1 success: 1 13530DROP TRIGGER trg_1; 13531UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13532f_int2 = CAST(f_char1 AS SIGNED INT), 13533f_charbig = 'just inserted' 13534 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13535DELETE FROM t0_aux 13536WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13537INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13538SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13539'just inserted' FROM t0_template 13540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13541CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13542BEGIN 13543UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13544f_charbig = 'updated by trigger' 13545 WHERE f_int1 = new.f_int1; 13546END| 13547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13548SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13549WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13550 13551# check trigger-2 success: 1 13552DROP TRIGGER trg_1; 13553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13554f_int2 = CAST(f_char1 AS SIGNED INT), 13555f_charbig = 'just inserted' 13556 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13557DELETE FROM t0_aux 13558WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13559INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13560SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13561'just inserted' FROM t0_template 13562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13563CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13564BEGIN 13565UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13566f_charbig = 'updated by trigger' 13567 WHERE f_int1 = new.f_int1; 13568END| 13569UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13570WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13571 13572# check trigger-3 success: 1 13573DROP TRIGGER trg_1; 13574UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13575f_int2 = CAST(f_char1 AS SIGNED INT), 13576f_charbig = 'just inserted' 13577 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13578DELETE FROM t0_aux 13579WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13580INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13581SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13582'just inserted' FROM t0_template 13583WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13584CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13585BEGIN 13586UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13587f_charbig = 'updated by trigger' 13588 WHERE f_int1 = - old.f_int1; 13589END| 13590UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13591WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13592 13593# check trigger-4 success: 1 13594DROP TRIGGER trg_1; 13595UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13596f_int2 = CAST(f_char1 AS SIGNED INT), 13597f_charbig = 'just inserted' 13598 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13599DELETE FROM t0_aux 13600WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13601INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13602SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13603'just inserted' FROM t0_template 13604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13605CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13606BEGIN 13607UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13608f_charbig = 'updated by trigger' 13609 WHERE f_int1 = new.f_int1; 13610END| 13611UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13612WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13613 13614# check trigger-5 success: 1 13615DROP TRIGGER trg_1; 13616UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13617f_int2 = CAST(f_char1 AS SIGNED INT), 13618f_charbig = 'just inserted' 13619 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13620DELETE FROM t0_aux 13621WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13622INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13623SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13624'just inserted' FROM t0_template 13625WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13626CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13627BEGIN 13628UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13629f_charbig = 'updated by trigger' 13630 WHERE f_int1 = - old.f_int1; 13631END| 13632UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13633WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13634 13635# check trigger-6 success: 1 13636DROP TRIGGER trg_1; 13637UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13638f_int2 = CAST(f_char1 AS SIGNED INT), 13639f_charbig = 'just inserted' 13640 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13641DELETE FROM t0_aux 13642WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13643INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13644SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13645'just inserted' FROM t0_template 13646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13647CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13648BEGIN 13649UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13650f_charbig = 'updated by trigger' 13651 WHERE f_int1 = - old.f_int1; 13652END| 13653DELETE FROM t0_aux 13654WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13655 13656# check trigger-7 success: 1 13657DROP TRIGGER trg_1; 13658UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13659f_int2 = CAST(f_char1 AS SIGNED INT), 13660f_charbig = 'just inserted' 13661 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13662DELETE FROM t0_aux 13663WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13664INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13665SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13666'just inserted' FROM t0_template 13667WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13668CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13669BEGIN 13670UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13671f_charbig = 'updated by trigger' 13672 WHERE f_int1 = - old.f_int1; 13673END| 13674DELETE FROM t0_aux 13675WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13676 13677# check trigger-8 success: 1 13678DROP TRIGGER trg_1; 13679UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13680f_int2 = CAST(f_char1 AS SIGNED INT), 13681f_charbig = 'just inserted' 13682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13683DELETE FROM t0_aux 13684WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13685DELETE FROM t1 13686WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13687CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13688BEGIN 13689SET new.f_int1 = old.f_int1 + @max_row, 13690new.f_int2 = old.f_int2 - @max_row, 13691new.f_charbig = '####updated per update trigger####'; 13692END| 13693UPDATE t1 13694SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13695f_charbig = '####updated per update statement itself####'; 13696 13697# check trigger-9 success: 1 13698DROP TRIGGER trg_2; 13699UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13700f_int2 = CAST(f_char1 AS SIGNED INT), 13701f_charbig = CONCAT('===',f_char1,'==='); 13702CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13703BEGIN 13704SET new.f_int1 = new.f_int1 + @max_row, 13705new.f_int2 = new.f_int2 - @max_row, 13706new.f_charbig = '####updated per update trigger####'; 13707END| 13708UPDATE t1 13709SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13710f_charbig = '####updated per update statement itself####'; 13711 13712# check trigger-10 success: 1 13713DROP TRIGGER trg_2; 13714UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13715f_int2 = CAST(f_char1 AS SIGNED INT), 13716f_charbig = CONCAT('===',f_char1,'==='); 13717CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13718BEGIN 13719SET new.f_int1 = @my_max1 + @counter, 13720new.f_int2 = @my_min2 - @counter, 13721new.f_charbig = '####updated per insert trigger####'; 13722SET @counter = @counter + 1; 13723END| 13724SET @counter = 1; 13725SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13726INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13727SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13728CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13729WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13730ORDER BY f_int1; 13731DROP TRIGGER trg_3; 13732 13733# check trigger-11 success: 1 13734DELETE FROM t1 13735WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13736AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13737AND f_charbig = '####updated per insert trigger####'; 13738CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13739BEGIN 13740SET new.f_int1 = @my_max1 + @counter, 13741new.f_int2 = @my_min2 - @counter, 13742new.f_charbig = '####updated per insert trigger####'; 13743SET @counter = @counter + 1; 13744END| 13745SET @counter = 1; 13746SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13747INSERT INTO t1 (f_char1, f_char2, f_charbig) 13748SELECT CAST(f_int1 AS CHAR), 13749CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13750WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13751ORDER BY f_int1; 13752DROP TRIGGER trg_3; 13753 13754# check trigger-12 success: 1 13755DELETE FROM t1 13756WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13757AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13758AND f_charbig = '####updated per insert trigger####'; 13759ANALYZE TABLE t1; 13760Table Op Msg_type Msg_text 13761test.t1 analyze status OK 13762CHECK TABLE t1 EXTENDED; 13763Table Op Msg_type Msg_text 13764test.t1 check status OK 13765CHECKSUM TABLE t1 EXTENDED; 13766Table Checksum 13767test.t1 <some_value> 13768OPTIMIZE TABLE t1; 13769Table Op Msg_type Msg_text 13770test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 13771test.t1 optimize status OK 13772# check layout success: 1 13773REPAIR TABLE t1 EXTENDED; 13774Table Op Msg_type Msg_text 13775test.t1 repair status OK 13776# check layout success: 1 13777TRUNCATE t1; 13778 13779# check TRUNCATE success: 1 13780# check layout success: 1 13781# End usability test (inc/partition_check.inc) 13782DROP TABLE t1; 13783CREATE TABLE t1 ( 13784f_int1 INTEGER, 13785f_int2 INTEGER, 13786f_char1 CHAR(20), 13787f_char2 CHAR(20), 13788f_charbig VARCHAR(1000) 13789, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 13790) 13791PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 13792(PARTITION parta VALUES LESS THAN (0), 13793PARTITION partb VALUES LESS THAN (5), 13794PARTITION partc VALUES LESS THAN (10), 13795PARTITION partd VALUES LESS THAN (2147483646)); 13796INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13797SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 13798# Start usability test (inc/partition_check.inc) 13799create_command 13800SHOW CREATE TABLE t1; 13801Table Create Table 13802t1 CREATE TABLE `t1` ( 13803 `f_int1` int(11) NOT NULL, 13804 `f_int2` int(11) NOT NULL, 13805 `f_char1` char(20) DEFAULT NULL, 13806 `f_char2` char(20) DEFAULT NULL, 13807 `f_charbig` varchar(1000) DEFAULT NULL, 13808 PRIMARY KEY (`f_int1`,`f_int2`), 13809 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 13810) ENGINE=InnoDB DEFAULT CHARSET=latin1 13811/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 13812SUBPARTITION BY HASH (f_int1) 13813SUBPARTITIONS 2 13814(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 13815 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 13816 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 13817 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 13818 13819unified filelist 13820t1#P#parta#SP#partasp0.ibd 13821t1#P#parta#SP#partasp1.ibd 13822t1#P#partb#SP#partbsp0.ibd 13823t1#P#partb#SP#partbsp1.ibd 13824t1#P#partc#SP#partcsp0.ibd 13825t1#P#partc#SP#partcsp1.ibd 13826t1#P#partd#SP#partdsp0.ibd 13827t1#P#partd#SP#partdsp1.ibd 13828t1.frm 13829 13830# check prerequisites-1 success: 1 13831# check COUNT(*) success: 1 13832# check MIN/MAX(f_int1) success: 1 13833# check MIN/MAX(f_int2) success: 1 13834INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13835SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13836CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13837WHERE f_int1 IN (2,3); 13838ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 13839# check prerequisites-3 success: 1 13840# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 13841INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13842SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13843CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13844WHERE f_int1 IN (2,3); 13845DELETE FROM t1 WHERE f_charbig = 'delete me'; 13846INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13847SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13848CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13849WHERE f_int1 IN (2,3); 13850DELETE FROM t1 WHERE f_charbig = 'delete me'; 13851# check read via f_int1 success: 1 13852# check read via f_int2 success: 1 13853 13854# check multiple-1 success: 1 13855DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13856 13857# check multiple-2 success: 1 13858INSERT INTO t1 SELECT * FROM t0_template 13859WHERE MOD(f_int1,3) = 0; 13860 13861# check multiple-3 success: 1 13862UPDATE t1 SET f_int1 = f_int1 + @max_row 13863WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13864AND @max_row_div2 + @max_row_div4; 13865 13866# check multiple-4 success: 1 13867DELETE FROM t1 13868WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13869AND @max_row_div2 + @max_row_div4 + @max_row; 13870 13871# check multiple-5 success: 1 13872SELECT COUNT(*) INTO @try_count FROM t0_template 13873WHERE MOD(f_int1,3) = 0 13874AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13875SELECT COUNT(*) INTO @clash_count 13876FROM t1 INNER JOIN t0_template USING(f_int1) 13877WHERE MOD(f_int1,3) = 0 13878AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13879SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13880INSERT INTO t1 13881SET f_int1 = @cur_value , f_int2 = @cur_value, 13882f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13883f_charbig = '#SINGLE#'; 13884 13885# check single-1 success: 1 13886SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13887INSERT INTO t1 13888SET f_int1 = @cur_value , f_int2 = @cur_value, 13889f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13890f_charbig = '#SINGLE#'; 13891 13892# check single-2 success: 1 13893SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13894SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13895UPDATE t1 SET f_int1 = @cur_value2 13896WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13897 13898# check single-3 success: 1 13899SET @cur_value1= -1; 13900SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13901UPDATE t1 SET f_int1 = @cur_value1 13902WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13903 13904# check single-4 success: 1 13905SELECT MAX(f_int1) INTO @cur_value FROM t1; 13906DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13907 13908# check single-5 success: 1 13909DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13910 13911# check single-6 success: 1 13912INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13913 13914# check single-7 success: 1 13915DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 13916DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13917INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13918f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13919f_charbig = '#NULL#'; 13920INSERT INTO t1 13921SET f_int1 = NULL , f_int2 = -@max_row, 13922f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13923f_charbig = '#NULL#'; 13924ERROR 23000: Column 'f_int1' cannot be null 13925# check null success: 1 13926DELETE FROM t1 13927WHERE f_int1 = 0 AND f_int2 = 0 13928AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13929AND f_charbig = '#NULL#'; 13930INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13931SELECT f_int1, f_int1, '', '', 'was inserted' 13932 FROM t0_template source_tab 13933WHERE MOD(f_int1,3) = 0 13934AND f_int1 BETWEEN @max_row_div2 AND @max_row 13935ON DUPLICATE KEY 13936UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 13937f_int2 = 2 * @max_row + source_tab.f_int1, 13938f_charbig = 'was updated'; 13939 13940# check unique-1-a success: 1 13941 13942# check unique-1-b success: 1 13943DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13944UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13945f_int2 = CAST(f_char1 AS SIGNED INT), 13946f_charbig = CONCAT('===',f_char1,'===') 13947WHERE f_charbig = 'was updated'; 13948REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13949SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 13950 FROM t0_template source_tab 13951WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13952 13953# check replace success: 1 13954DELETE FROM t1 13955WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13956DELETE FROM t1 13957WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13958f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13959UPDATE t1 SET f_int2 = f_int1, 13960f_char1 = CAST(f_int1 AS CHAR), 13961f_char2 = CAST(f_int1 AS CHAR), 13962f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13963WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13964SET AUTOCOMMIT= 0; 13965INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13966SELECT f_int1, f_int1, '', '', 'was inserted' 13967FROM t0_template source_tab 13968WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13969 13970# check transactions-1 success: 1 13971COMMIT WORK; 13972 13973# check transactions-2 success: 1 13974ROLLBACK WORK; 13975 13976# check transactions-3 success: 1 13977DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13978COMMIT WORK; 13979ROLLBACK WORK; 13980 13981# check transactions-4 success: 1 13982INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13983SELECT f_int1, f_int1, '', '', 'was inserted' 13984FROM t0_template source_tab 13985WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13986 13987# check transactions-5 success: 1 13988ROLLBACK WORK; 13989 13990# check transactions-6 success: 1 13991# INFO: Storage engine used for t1 seems to be transactional. 13992COMMIT; 13993 13994# check transactions-7 success: 1 13995DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13996COMMIT WORK; 13997SET @@session.sql_mode = 'traditional'; 13998Warnings: 13999Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14000SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14001INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14002SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14003'', '', 'was inserted' FROM t0_template 14004WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14005ERROR 22012: Division by 0 14006COMMIT; 14007 14008# check transactions-8 success: 1 14009# INFO: Storage engine used for t1 seems to be able to revert 14010# changes made by the failing statement. 14011SET @@session.sql_mode = ''; 14012Warnings: 14013Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14014SET AUTOCOMMIT= 1; 14015DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14016COMMIT WORK; 14017UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14018 14019# check special-1 success: 1 14020UPDATE t1 SET f_charbig = ''; 14021 14022# check special-2 success: 1 14023UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14024INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14025SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14027INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14028SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14029'just inserted' FROM t0_template 14030WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14031CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14032BEGIN 14033UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14034f_charbig = 'updated by trigger' 14035 WHERE f_int1 = new.f_int1; 14036END| 14037INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14038SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14040 14041# check trigger-1 success: 1 14042DROP TRIGGER trg_1; 14043UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14044f_int2 = CAST(f_char1 AS SIGNED INT), 14045f_charbig = 'just inserted' 14046 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14047DELETE FROM t0_aux 14048WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14049INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14050SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14051'just inserted' FROM t0_template 14052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14053CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14054BEGIN 14055UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14056f_charbig = 'updated by trigger' 14057 WHERE f_int1 = new.f_int1; 14058END| 14059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14060SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14062 14063# check trigger-2 success: 1 14064DROP TRIGGER trg_1; 14065UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14066f_int2 = CAST(f_char1 AS SIGNED INT), 14067f_charbig = 'just inserted' 14068 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14069DELETE FROM t0_aux 14070WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14071INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14072SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14073'just inserted' FROM t0_template 14074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14075CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14076BEGIN 14077UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14078f_charbig = 'updated by trigger' 14079 WHERE f_int1 = new.f_int1; 14080END| 14081UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14082WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14083 14084# check trigger-3 success: 1 14085DROP TRIGGER trg_1; 14086UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14087f_int2 = CAST(f_char1 AS SIGNED INT), 14088f_charbig = 'just inserted' 14089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14090DELETE FROM t0_aux 14091WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14093SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14094'just inserted' FROM t0_template 14095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14096CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14097BEGIN 14098UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14099f_charbig = 'updated by trigger' 14100 WHERE f_int1 = - old.f_int1; 14101END| 14102UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14103WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14104 14105# check trigger-4 success: 1 14106DROP TRIGGER trg_1; 14107UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14108f_int2 = CAST(f_char1 AS SIGNED INT), 14109f_charbig = 'just inserted' 14110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14111DELETE FROM t0_aux 14112WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14113INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14114SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14115'just inserted' FROM t0_template 14116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14117CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14118BEGIN 14119UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14120f_charbig = 'updated by trigger' 14121 WHERE f_int1 = new.f_int1; 14122END| 14123UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14124WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14125 14126# check trigger-5 success: 1 14127DROP TRIGGER trg_1; 14128UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14129f_int2 = CAST(f_char1 AS SIGNED INT), 14130f_charbig = 'just inserted' 14131 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14132DELETE FROM t0_aux 14133WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14134INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14135SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14136'just inserted' FROM t0_template 14137WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14138CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14139BEGIN 14140UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14141f_charbig = 'updated by trigger' 14142 WHERE f_int1 = - old.f_int1; 14143END| 14144UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14145WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14146 14147# check trigger-6 success: 1 14148DROP TRIGGER trg_1; 14149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14150f_int2 = CAST(f_char1 AS SIGNED INT), 14151f_charbig = 'just inserted' 14152 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14153DELETE FROM t0_aux 14154WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14155INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14156SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14157'just inserted' FROM t0_template 14158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14159CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14160BEGIN 14161UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14162f_charbig = 'updated by trigger' 14163 WHERE f_int1 = - old.f_int1; 14164END| 14165DELETE FROM t0_aux 14166WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14167 14168# check trigger-7 success: 1 14169DROP TRIGGER trg_1; 14170UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14171f_int2 = CAST(f_char1 AS SIGNED INT), 14172f_charbig = 'just inserted' 14173 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14174DELETE FROM t0_aux 14175WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14176INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14177SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14178'just inserted' FROM t0_template 14179WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14180CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14181BEGIN 14182UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14183f_charbig = 'updated by trigger' 14184 WHERE f_int1 = - old.f_int1; 14185END| 14186DELETE FROM t0_aux 14187WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14188 14189# check trigger-8 success: 1 14190DROP TRIGGER trg_1; 14191UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14192f_int2 = CAST(f_char1 AS SIGNED INT), 14193f_charbig = 'just inserted' 14194 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14195DELETE FROM t0_aux 14196WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14197DELETE FROM t1 14198WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14199CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14200BEGIN 14201SET new.f_int1 = old.f_int1 + @max_row, 14202new.f_int2 = old.f_int2 - @max_row, 14203new.f_charbig = '####updated per update trigger####'; 14204END| 14205UPDATE t1 14206SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14207f_charbig = '####updated per update statement itself####'; 14208 14209# check trigger-9 success: 1 14210DROP TRIGGER trg_2; 14211UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14212f_int2 = CAST(f_char1 AS SIGNED INT), 14213f_charbig = CONCAT('===',f_char1,'==='); 14214CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14215BEGIN 14216SET new.f_int1 = new.f_int1 + @max_row, 14217new.f_int2 = new.f_int2 - @max_row, 14218new.f_charbig = '####updated per update trigger####'; 14219END| 14220UPDATE t1 14221SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14222f_charbig = '####updated per update statement itself####'; 14223 14224# check trigger-10 success: 1 14225DROP TRIGGER trg_2; 14226UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14227f_int2 = CAST(f_char1 AS SIGNED INT), 14228f_charbig = CONCAT('===',f_char1,'==='); 14229CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14230BEGIN 14231SET new.f_int1 = @my_max1 + @counter, 14232new.f_int2 = @my_min2 - @counter, 14233new.f_charbig = '####updated per insert trigger####'; 14234SET @counter = @counter + 1; 14235END| 14236SET @counter = 1; 14237SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14239SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14240CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14242ORDER BY f_int1; 14243DROP TRIGGER trg_3; 14244 14245# check trigger-11 success: 1 14246DELETE FROM t1 14247WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14248AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14249AND f_charbig = '####updated per insert trigger####'; 14250CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14251BEGIN 14252SET new.f_int1 = @my_max1 + @counter, 14253new.f_int2 = @my_min2 - @counter, 14254new.f_charbig = '####updated per insert trigger####'; 14255SET @counter = @counter + 1; 14256END| 14257SET @counter = 1; 14258SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14259INSERT INTO t1 (f_char1, f_char2, f_charbig) 14260SELECT CAST(f_int1 AS CHAR), 14261CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14263ORDER BY f_int1; 14264DROP TRIGGER trg_3; 14265 14266# check trigger-12 success: 1 14267DELETE FROM t1 14268WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14269AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14270AND f_charbig = '####updated per insert trigger####'; 14271ANALYZE TABLE t1; 14272Table Op Msg_type Msg_text 14273test.t1 analyze status OK 14274CHECK TABLE t1 EXTENDED; 14275Table Op Msg_type Msg_text 14276test.t1 check status OK 14277CHECKSUM TABLE t1 EXTENDED; 14278Table Checksum 14279test.t1 <some_value> 14280OPTIMIZE TABLE t1; 14281Table Op Msg_type Msg_text 14282test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 14283test.t1 optimize status OK 14284# check layout success: 1 14285REPAIR TABLE t1 EXTENDED; 14286Table Op Msg_type Msg_text 14287test.t1 repair status OK 14288# check layout success: 1 14289TRUNCATE t1; 14290 14291# check TRUNCATE success: 1 14292# check layout success: 1 14293# End usability test (inc/partition_check.inc) 14294DROP TABLE t1; 14295CREATE TABLE t1 ( 14296f_int1 INTEGER, 14297f_int2 INTEGER, 14298f_char1 CHAR(20), 14299f_char2 CHAR(20), 14300f_charbig VARCHAR(1000) 14301, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 14302) 14303PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 14304(PARTITION part1 VALUES LESS THAN (0) 14305(SUBPARTITION subpart11, SUBPARTITION subpart12), 14306PARTITION part2 VALUES LESS THAN (5) 14307(SUBPARTITION subpart21, SUBPARTITION subpart22), 14308PARTITION part3 VALUES LESS THAN (10) 14309(SUBPARTITION subpart31, SUBPARTITION subpart32), 14310PARTITION part4 VALUES LESS THAN (2147483646) 14311(SUBPARTITION subpart41, SUBPARTITION subpart42)); 14312INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14313SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 14314# Start usability test (inc/partition_check.inc) 14315create_command 14316SHOW CREATE TABLE t1; 14317Table Create Table 14318t1 CREATE TABLE `t1` ( 14319 `f_int1` int(11) NOT NULL, 14320 `f_int2` int(11) NOT NULL, 14321 `f_char1` char(20) DEFAULT NULL, 14322 `f_char2` char(20) DEFAULT NULL, 14323 `f_charbig` varchar(1000) DEFAULT NULL, 14324 PRIMARY KEY (`f_int1`,`f_int2`), 14325 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 14326) ENGINE=InnoDB DEFAULT CHARSET=latin1 14327/*!50100 PARTITION BY RANGE (f_int1) 14328SUBPARTITION BY KEY (f_int1) 14329(PARTITION part1 VALUES LESS THAN (0) 14330 (SUBPARTITION subpart11 ENGINE = InnoDB, 14331 SUBPARTITION subpart12 ENGINE = InnoDB), 14332 PARTITION part2 VALUES LESS THAN (5) 14333 (SUBPARTITION subpart21 ENGINE = InnoDB, 14334 SUBPARTITION subpart22 ENGINE = InnoDB), 14335 PARTITION part3 VALUES LESS THAN (10) 14336 (SUBPARTITION subpart31 ENGINE = InnoDB, 14337 SUBPARTITION subpart32 ENGINE = InnoDB), 14338 PARTITION part4 VALUES LESS THAN (2147483646) 14339 (SUBPARTITION subpart41 ENGINE = InnoDB, 14340 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 14341 14342unified filelist 14343t1#P#part1#SP#subpart11.ibd 14344t1#P#part1#SP#subpart12.ibd 14345t1#P#part2#SP#subpart21.ibd 14346t1#P#part2#SP#subpart22.ibd 14347t1#P#part3#SP#subpart31.ibd 14348t1#P#part3#SP#subpart32.ibd 14349t1#P#part4#SP#subpart41.ibd 14350t1#P#part4#SP#subpart42.ibd 14351t1.frm 14352 14353# check prerequisites-1 success: 1 14354# check COUNT(*) success: 1 14355# check MIN/MAX(f_int1) success: 1 14356# check MIN/MAX(f_int2) success: 1 14357INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14358SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14359CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14360WHERE f_int1 IN (2,3); 14361ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 14362# check prerequisites-3 success: 1 14363# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 14364INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14365SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14366CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14367WHERE f_int1 IN (2,3); 14368DELETE FROM t1 WHERE f_charbig = 'delete me'; 14369INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14370SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14371CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14372WHERE f_int1 IN (2,3); 14373DELETE FROM t1 WHERE f_charbig = 'delete me'; 14374# check read via f_int1 success: 1 14375# check read via f_int2 success: 1 14376 14377# check multiple-1 success: 1 14378DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14379 14380# check multiple-2 success: 1 14381INSERT INTO t1 SELECT * FROM t0_template 14382WHERE MOD(f_int1,3) = 0; 14383 14384# check multiple-3 success: 1 14385UPDATE t1 SET f_int1 = f_int1 + @max_row 14386WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14387AND @max_row_div2 + @max_row_div4; 14388 14389# check multiple-4 success: 1 14390DELETE FROM t1 14391WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14392AND @max_row_div2 + @max_row_div4 + @max_row; 14393 14394# check multiple-5 success: 1 14395SELECT COUNT(*) INTO @try_count FROM t0_template 14396WHERE MOD(f_int1,3) = 0 14397AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14398SELECT COUNT(*) INTO @clash_count 14399FROM t1 INNER JOIN t0_template USING(f_int1) 14400WHERE MOD(f_int1,3) = 0 14401AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14402SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14403INSERT INTO t1 14404SET f_int1 = @cur_value , f_int2 = @cur_value, 14405f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14406f_charbig = '#SINGLE#'; 14407 14408# check single-1 success: 1 14409SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14410INSERT INTO t1 14411SET f_int1 = @cur_value , f_int2 = @cur_value, 14412f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14413f_charbig = '#SINGLE#'; 14414 14415# check single-2 success: 1 14416SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14417SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14418UPDATE t1 SET f_int1 = @cur_value2 14419WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14420 14421# check single-3 success: 1 14422SET @cur_value1= -1; 14423SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14424UPDATE t1 SET f_int1 = @cur_value1 14425WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14426 14427# check single-4 success: 1 14428SELECT MAX(f_int1) INTO @cur_value FROM t1; 14429DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14430 14431# check single-5 success: 1 14432DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14433 14434# check single-6 success: 1 14435INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14436ERROR HY000: Table has no partition for value 2147483647 14437DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14438INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14439f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14440f_charbig = '#NULL#'; 14441INSERT INTO t1 14442SET f_int1 = NULL , f_int2 = -@max_row, 14443f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14444f_charbig = '#NULL#'; 14445ERROR 23000: Column 'f_int1' cannot be null 14446# check null success: 1 14447DELETE FROM t1 14448WHERE f_int1 = 0 AND f_int2 = 0 14449AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14450AND f_charbig = '#NULL#'; 14451INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14452SELECT f_int1, f_int1, '', '', 'was inserted' 14453 FROM t0_template source_tab 14454WHERE MOD(f_int1,3) = 0 14455AND f_int1 BETWEEN @max_row_div2 AND @max_row 14456ON DUPLICATE KEY 14457UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14458f_int2 = 2 * @max_row + source_tab.f_int1, 14459f_charbig = 'was updated'; 14460 14461# check unique-1-a success: 1 14462 14463# check unique-1-b success: 1 14464DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14465UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14466f_int2 = CAST(f_char1 AS SIGNED INT), 14467f_charbig = CONCAT('===',f_char1,'===') 14468WHERE f_charbig = 'was updated'; 14469REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14470SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14471 FROM t0_template source_tab 14472WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14473 14474# check replace success: 1 14475DELETE FROM t1 14476WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 14477DELETE FROM t1 14478WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 14479f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 14480UPDATE t1 SET f_int2 = f_int1, 14481f_char1 = CAST(f_int1 AS CHAR), 14482f_char2 = CAST(f_int1 AS CHAR), 14483f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 14484WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 14485SET AUTOCOMMIT= 0; 14486INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14487SELECT f_int1, f_int1, '', '', 'was inserted' 14488FROM t0_template source_tab 14489WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14490 14491# check transactions-1 success: 1 14492COMMIT WORK; 14493 14494# check transactions-2 success: 1 14495ROLLBACK WORK; 14496 14497# check transactions-3 success: 1 14498DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14499COMMIT WORK; 14500ROLLBACK WORK; 14501 14502# check transactions-4 success: 1 14503INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14504SELECT f_int1, f_int1, '', '', 'was inserted' 14505FROM t0_template source_tab 14506WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14507 14508# check transactions-5 success: 1 14509ROLLBACK WORK; 14510 14511# check transactions-6 success: 1 14512# INFO: Storage engine used for t1 seems to be transactional. 14513COMMIT; 14514 14515# check transactions-7 success: 1 14516DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14517COMMIT WORK; 14518SET @@session.sql_mode = 'traditional'; 14519Warnings: 14520Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14521SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14522INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14523SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14524'', '', 'was inserted' FROM t0_template 14525WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14526ERROR 22012: Division by 0 14527COMMIT; 14528 14529# check transactions-8 success: 1 14530# INFO: Storage engine used for t1 seems to be able to revert 14531# changes made by the failing statement. 14532SET @@session.sql_mode = ''; 14533Warnings: 14534Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14535SET AUTOCOMMIT= 1; 14536DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14537COMMIT WORK; 14538UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14539 14540# check special-1 success: 1 14541UPDATE t1 SET f_charbig = ''; 14542 14543# check special-2 success: 1 14544UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14545INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14546SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14547WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14548INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14549SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14550'just inserted' FROM t0_template 14551WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14552CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14553BEGIN 14554UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14555f_charbig = 'updated by trigger' 14556 WHERE f_int1 = new.f_int1; 14557END| 14558INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14559SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14560WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14561 14562# check trigger-1 success: 1 14563DROP TRIGGER trg_1; 14564UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14565f_int2 = CAST(f_char1 AS SIGNED INT), 14566f_charbig = 'just inserted' 14567 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14568DELETE FROM t0_aux 14569WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14570INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14571SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14572'just inserted' FROM t0_template 14573WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14574CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14575BEGIN 14576UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14577f_charbig = 'updated by trigger' 14578 WHERE f_int1 = new.f_int1; 14579END| 14580INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14581SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14583 14584# check trigger-2 success: 1 14585DROP TRIGGER trg_1; 14586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14587f_int2 = CAST(f_char1 AS SIGNED INT), 14588f_charbig = 'just inserted' 14589 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14590DELETE FROM t0_aux 14591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14594'just inserted' FROM t0_template 14595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14596CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14597BEGIN 14598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14599f_charbig = 'updated by trigger' 14600 WHERE f_int1 = new.f_int1; 14601END| 14602UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14603WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14604 14605# check trigger-3 success: 1 14606DROP TRIGGER trg_1; 14607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14608f_int2 = CAST(f_char1 AS SIGNED INT), 14609f_charbig = 'just inserted' 14610 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14611DELETE FROM t0_aux 14612WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14613INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14614SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14615'just inserted' FROM t0_template 14616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14617CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14618BEGIN 14619UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14620f_charbig = 'updated by trigger' 14621 WHERE f_int1 = - old.f_int1; 14622END| 14623UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14624WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14625 14626# check trigger-4 success: 1 14627DROP TRIGGER trg_1; 14628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14629f_int2 = CAST(f_char1 AS SIGNED INT), 14630f_charbig = 'just inserted' 14631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14632DELETE FROM t0_aux 14633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14636'just inserted' FROM t0_template 14637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14638CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14639BEGIN 14640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14641f_charbig = 'updated by trigger' 14642 WHERE f_int1 = new.f_int1; 14643END| 14644UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14645WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14646 14647# check trigger-5 success: 1 14648DROP TRIGGER trg_1; 14649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14650f_int2 = CAST(f_char1 AS SIGNED INT), 14651f_charbig = 'just inserted' 14652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14653DELETE FROM t0_aux 14654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14657'just inserted' FROM t0_template 14658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14659CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14660BEGIN 14661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14662f_charbig = 'updated by trigger' 14663 WHERE f_int1 = - old.f_int1; 14664END| 14665UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14667 14668# check trigger-6 success: 1 14669DROP TRIGGER trg_1; 14670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14671f_int2 = CAST(f_char1 AS SIGNED INT), 14672f_charbig = 'just inserted' 14673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14674DELETE FROM t0_aux 14675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14676INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14677SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14678'just inserted' FROM t0_template 14679WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14680CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14681BEGIN 14682UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14683f_charbig = 'updated by trigger' 14684 WHERE f_int1 = - old.f_int1; 14685END| 14686DELETE FROM t0_aux 14687WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14688 14689# check trigger-7 success: 1 14690DROP TRIGGER trg_1; 14691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14692f_int2 = CAST(f_char1 AS SIGNED INT), 14693f_charbig = 'just inserted' 14694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14695DELETE FROM t0_aux 14696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14699'just inserted' FROM t0_template 14700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14701CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14702BEGIN 14703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14704f_charbig = 'updated by trigger' 14705 WHERE f_int1 = - old.f_int1; 14706END| 14707DELETE FROM t0_aux 14708WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14709 14710# check trigger-8 success: 1 14711DROP TRIGGER trg_1; 14712UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14713f_int2 = CAST(f_char1 AS SIGNED INT), 14714f_charbig = 'just inserted' 14715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14716DELETE FROM t0_aux 14717WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14718DELETE FROM t1 14719WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14720CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14721BEGIN 14722SET new.f_int1 = old.f_int1 + @max_row, 14723new.f_int2 = old.f_int2 - @max_row, 14724new.f_charbig = '####updated per update trigger####'; 14725END| 14726UPDATE t1 14727SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14728f_charbig = '####updated per update statement itself####'; 14729 14730# check trigger-9 success: 1 14731DROP TRIGGER trg_2; 14732UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14733f_int2 = CAST(f_char1 AS SIGNED INT), 14734f_charbig = CONCAT('===',f_char1,'==='); 14735CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14736BEGIN 14737SET new.f_int1 = new.f_int1 + @max_row, 14738new.f_int2 = new.f_int2 - @max_row, 14739new.f_charbig = '####updated per update trigger####'; 14740END| 14741UPDATE t1 14742SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14743f_charbig = '####updated per update statement itself####'; 14744 14745# check trigger-10 success: 1 14746DROP TRIGGER trg_2; 14747UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14748f_int2 = CAST(f_char1 AS SIGNED INT), 14749f_charbig = CONCAT('===',f_char1,'==='); 14750CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14751BEGIN 14752SET new.f_int1 = @my_max1 + @counter, 14753new.f_int2 = @my_min2 - @counter, 14754new.f_charbig = '####updated per insert trigger####'; 14755SET @counter = @counter + 1; 14756END| 14757SET @counter = 1; 14758SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14759INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14760SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14761CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14762WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14763ORDER BY f_int1; 14764DROP TRIGGER trg_3; 14765 14766# check trigger-11 success: 1 14767DELETE FROM t1 14768WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14769AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14770AND f_charbig = '####updated per insert trigger####'; 14771CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14772BEGIN 14773SET new.f_int1 = @my_max1 + @counter, 14774new.f_int2 = @my_min2 - @counter, 14775new.f_charbig = '####updated per insert trigger####'; 14776SET @counter = @counter + 1; 14777END| 14778SET @counter = 1; 14779SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14780INSERT INTO t1 (f_char1, f_char2, f_charbig) 14781SELECT CAST(f_int1 AS CHAR), 14782CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14784ORDER BY f_int1; 14785DROP TRIGGER trg_3; 14786 14787# check trigger-12 success: 1 14788DELETE FROM t1 14789WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14790AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14791AND f_charbig = '####updated per insert trigger####'; 14792ANALYZE TABLE t1; 14793Table Op Msg_type Msg_text 14794test.t1 analyze status OK 14795CHECK TABLE t1 EXTENDED; 14796Table Op Msg_type Msg_text 14797test.t1 check status OK 14798CHECKSUM TABLE t1 EXTENDED; 14799Table Checksum 14800test.t1 <some_value> 14801OPTIMIZE TABLE t1; 14802Table Op Msg_type Msg_text 14803test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 14804test.t1 optimize status OK 14805# check layout success: 1 14806REPAIR TABLE t1 EXTENDED; 14807Table Op Msg_type Msg_text 14808test.t1 repair status OK 14809# check layout success: 1 14810TRUNCATE t1; 14811 14812# check TRUNCATE success: 1 14813# check layout success: 1 14814# End usability test (inc/partition_check.inc) 14815DROP TABLE t1; 14816CREATE TABLE t1 ( 14817f_int1 INTEGER, 14818f_int2 INTEGER, 14819f_char1 CHAR(20), 14820f_char2 CHAR(20), 14821f_charbig VARCHAR(1000) 14822, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 14823) 14824PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 14825(PARTITION part1 VALUES IN (0) 14826(SUBPARTITION sp11, 14827SUBPARTITION sp12), 14828PARTITION part2 VALUES IN (1) 14829(SUBPARTITION sp21, 14830SUBPARTITION sp22), 14831PARTITION part3 VALUES IN (2) 14832(SUBPARTITION sp31, 14833SUBPARTITION sp32), 14834PARTITION part4 VALUES IN (NULL) 14835(SUBPARTITION sp41, 14836SUBPARTITION sp42)); 14837INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14838SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 14839# Start usability test (inc/partition_check.inc) 14840create_command 14841SHOW CREATE TABLE t1; 14842Table Create Table 14843t1 CREATE TABLE `t1` ( 14844 `f_int1` int(11) NOT NULL, 14845 `f_int2` int(11) NOT NULL, 14846 `f_char1` char(20) DEFAULT NULL, 14847 `f_char2` char(20) DEFAULT NULL, 14848 `f_charbig` varchar(1000) DEFAULT NULL, 14849 PRIMARY KEY (`f_int1`,`f_int2`), 14850 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 14851) ENGINE=InnoDB DEFAULT CHARSET=latin1 14852/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 14853SUBPARTITION BY HASH (f_int1 + 1) 14854(PARTITION part1 VALUES IN (0) 14855 (SUBPARTITION sp11 ENGINE = InnoDB, 14856 SUBPARTITION sp12 ENGINE = InnoDB), 14857 PARTITION part2 VALUES IN (1) 14858 (SUBPARTITION sp21 ENGINE = InnoDB, 14859 SUBPARTITION sp22 ENGINE = InnoDB), 14860 PARTITION part3 VALUES IN (2) 14861 (SUBPARTITION sp31 ENGINE = InnoDB, 14862 SUBPARTITION sp32 ENGINE = InnoDB), 14863 PARTITION part4 VALUES IN (NULL) 14864 (SUBPARTITION sp41 ENGINE = InnoDB, 14865 SUBPARTITION sp42 ENGINE = InnoDB)) */ 14866 14867unified filelist 14868t1#P#part1#SP#sp11.ibd 14869t1#P#part1#SP#sp12.ibd 14870t1#P#part2#SP#sp21.ibd 14871t1#P#part2#SP#sp22.ibd 14872t1#P#part3#SP#sp31.ibd 14873t1#P#part3#SP#sp32.ibd 14874t1#P#part4#SP#sp41.ibd 14875t1#P#part4#SP#sp42.ibd 14876t1.frm 14877 14878# check prerequisites-1 success: 1 14879# check COUNT(*) success: 1 14880# check MIN/MAX(f_int1) success: 1 14881# check MIN/MAX(f_int2) success: 1 14882INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14883SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14884CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14885WHERE f_int1 IN (2,3); 14886ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 14887# check prerequisites-3 success: 1 14888# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 14889INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14890SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14891CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14892WHERE f_int1 IN (2,3); 14893DELETE FROM t1 WHERE f_charbig = 'delete me'; 14894INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14895SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14896CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14897WHERE f_int1 IN (2,3); 14898DELETE FROM t1 WHERE f_charbig = 'delete me'; 14899# check read via f_int1 success: 1 14900# check read via f_int2 success: 1 14901 14902# check multiple-1 success: 1 14903DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14904 14905# check multiple-2 success: 1 14906INSERT INTO t1 SELECT * FROM t0_template 14907WHERE MOD(f_int1,3) = 0; 14908 14909# check multiple-3 success: 1 14910UPDATE t1 SET f_int1 = f_int1 + @max_row 14911WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14912AND @max_row_div2 + @max_row_div4; 14913 14914# check multiple-4 success: 1 14915DELETE FROM t1 14916WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14917AND @max_row_div2 + @max_row_div4 + @max_row; 14918 14919# check multiple-5 success: 1 14920SELECT COUNT(*) INTO @try_count FROM t0_template 14921WHERE MOD(f_int1,3) = 0 14922AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14923SELECT COUNT(*) INTO @clash_count 14924FROM t1 INNER JOIN t0_template USING(f_int1) 14925WHERE MOD(f_int1,3) = 0 14926AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14927SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14928INSERT INTO t1 14929SET f_int1 = @cur_value , f_int2 = @cur_value, 14930f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14931f_charbig = '#SINGLE#'; 14932 14933# check single-1 success: 1 14934SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14935INSERT INTO t1 14936SET f_int1 = @cur_value , f_int2 = @cur_value, 14937f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14938f_charbig = '#SINGLE#'; 14939 14940# check single-2 success: 1 14941SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14942SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14943UPDATE t1 SET f_int1 = @cur_value2 14944WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14945 14946# check single-3 success: 1 14947SET @cur_value1= -1; 14948SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14949UPDATE t1 SET f_int1 = @cur_value1 14950WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14951 14952# check single-4 success: 1 14953SELECT MAX(f_int1) INTO @cur_value FROM t1; 14954DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14955 14956# check single-5 success: 1 14957DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14958 14959# check single-6 success: 1 14960INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14961 14962# check single-7 success: 1 14963DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 14964DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14965INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14966f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14967f_charbig = '#NULL#'; 14968INSERT INTO t1 14969SET f_int1 = NULL , f_int2 = -@max_row, 14970f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14971f_charbig = '#NULL#'; 14972ERROR 23000: Column 'f_int1' cannot be null 14973# check null success: 1 14974DELETE FROM t1 14975WHERE f_int1 = 0 AND f_int2 = 0 14976AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14977AND f_charbig = '#NULL#'; 14978INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14979SELECT f_int1, f_int1, '', '', 'was inserted' 14980 FROM t0_template source_tab 14981WHERE MOD(f_int1,3) = 0 14982AND f_int1 BETWEEN @max_row_div2 AND @max_row 14983ON DUPLICATE KEY 14984UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14985f_int2 = 2 * @max_row + source_tab.f_int1, 14986f_charbig = 'was updated'; 14987 14988# check unique-1-a success: 1 14989 14990# check unique-1-b success: 1 14991DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14992UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14993f_int2 = CAST(f_char1 AS SIGNED INT), 14994f_charbig = CONCAT('===',f_char1,'===') 14995WHERE f_charbig = 'was updated'; 14996REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14997SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14998 FROM t0_template source_tab 14999WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15000 15001# check replace success: 1 15002DELETE FROM t1 15003WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15004DELETE FROM t1 15005WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15006f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15007UPDATE t1 SET f_int2 = f_int1, 15008f_char1 = CAST(f_int1 AS CHAR), 15009f_char2 = CAST(f_int1 AS CHAR), 15010f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15011WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15012SET AUTOCOMMIT= 0; 15013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15014SELECT f_int1, f_int1, '', '', 'was inserted' 15015FROM t0_template source_tab 15016WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15017 15018# check transactions-1 success: 1 15019COMMIT WORK; 15020 15021# check transactions-2 success: 1 15022ROLLBACK WORK; 15023 15024# check transactions-3 success: 1 15025DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15026COMMIT WORK; 15027ROLLBACK WORK; 15028 15029# check transactions-4 success: 1 15030INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15031SELECT f_int1, f_int1, '', '', 'was inserted' 15032FROM t0_template source_tab 15033WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15034 15035# check transactions-5 success: 1 15036ROLLBACK WORK; 15037 15038# check transactions-6 success: 1 15039# INFO: Storage engine used for t1 seems to be transactional. 15040COMMIT; 15041 15042# check transactions-7 success: 1 15043DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15044COMMIT WORK; 15045SET @@session.sql_mode = 'traditional'; 15046Warnings: 15047Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15048SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15049INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15050SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15051'', '', 'was inserted' FROM t0_template 15052WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15053ERROR 22012: Division by 0 15054COMMIT; 15055 15056# check transactions-8 success: 1 15057# INFO: Storage engine used for t1 seems to be able to revert 15058# changes made by the failing statement. 15059SET @@session.sql_mode = ''; 15060Warnings: 15061Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15062SET AUTOCOMMIT= 1; 15063DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15064COMMIT WORK; 15065UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15066 15067# check special-1 success: 1 15068UPDATE t1 SET f_charbig = ''; 15069 15070# check special-2 success: 1 15071UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15073SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15077'just inserted' FROM t0_template 15078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15079CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15080BEGIN 15081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15082f_charbig = 'updated by trigger' 15083 WHERE f_int1 = new.f_int1; 15084END| 15085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15088 15089# check trigger-1 success: 1 15090DROP TRIGGER trg_1; 15091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15092f_int2 = CAST(f_char1 AS SIGNED INT), 15093f_charbig = 'just inserted' 15094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15095DELETE FROM t0_aux 15096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15099'just inserted' FROM t0_template 15100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15101CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15102BEGIN 15103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15104f_charbig = 'updated by trigger' 15105 WHERE f_int1 = new.f_int1; 15106END| 15107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15108SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15110 15111# check trigger-2 success: 1 15112DROP TRIGGER trg_1; 15113UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15114f_int2 = CAST(f_char1 AS SIGNED INT), 15115f_charbig = 'just inserted' 15116 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15117DELETE FROM t0_aux 15118WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15119INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15120SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15121'just inserted' FROM t0_template 15122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15123CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15124BEGIN 15125UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15126f_charbig = 'updated by trigger' 15127 WHERE f_int1 = new.f_int1; 15128END| 15129UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15130WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15131 15132# check trigger-3 success: 1 15133DROP TRIGGER trg_1; 15134UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15135f_int2 = CAST(f_char1 AS SIGNED INT), 15136f_charbig = 'just inserted' 15137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15138DELETE FROM t0_aux 15139WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15142'just inserted' FROM t0_template 15143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15144CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15145BEGIN 15146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15147f_charbig = 'updated by trigger' 15148 WHERE f_int1 = - old.f_int1; 15149END| 15150UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15151WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15152 15153# check trigger-4 success: 1 15154DROP TRIGGER trg_1; 15155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15156f_int2 = CAST(f_char1 AS SIGNED INT), 15157f_charbig = 'just inserted' 15158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15159DELETE FROM t0_aux 15160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15163'just inserted' FROM t0_template 15164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15165CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15166BEGIN 15167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15168f_charbig = 'updated by trigger' 15169 WHERE f_int1 = new.f_int1; 15170END| 15171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15173 15174# check trigger-5 success: 1 15175DROP TRIGGER trg_1; 15176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15177f_int2 = CAST(f_char1 AS SIGNED INT), 15178f_charbig = 'just inserted' 15179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15180DELETE FROM t0_aux 15181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15184'just inserted' FROM t0_template 15185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15186CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15187BEGIN 15188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15189f_charbig = 'updated by trigger' 15190 WHERE f_int1 = - old.f_int1; 15191END| 15192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15194 15195# check trigger-6 success: 1 15196DROP TRIGGER trg_1; 15197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15198f_int2 = CAST(f_char1 AS SIGNED INT), 15199f_charbig = 'just inserted' 15200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15201DELETE FROM t0_aux 15202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15205'just inserted' FROM t0_template 15206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15207CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15208BEGIN 15209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15210f_charbig = 'updated by trigger' 15211 WHERE f_int1 = - old.f_int1; 15212END| 15213DELETE FROM t0_aux 15214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15215 15216# check trigger-7 success: 1 15217DROP TRIGGER trg_1; 15218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15219f_int2 = CAST(f_char1 AS SIGNED INT), 15220f_charbig = 'just inserted' 15221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15222DELETE FROM t0_aux 15223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15226'just inserted' FROM t0_template 15227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15228CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15229BEGIN 15230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15231f_charbig = 'updated by trigger' 15232 WHERE f_int1 = - old.f_int1; 15233END| 15234DELETE FROM t0_aux 15235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15236 15237# check trigger-8 success: 1 15238DROP TRIGGER trg_1; 15239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15240f_int2 = CAST(f_char1 AS SIGNED INT), 15241f_charbig = 'just inserted' 15242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15243DELETE FROM t0_aux 15244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15245DELETE FROM t1 15246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15247CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15248BEGIN 15249SET new.f_int1 = old.f_int1 + @max_row, 15250new.f_int2 = old.f_int2 - @max_row, 15251new.f_charbig = '####updated per update trigger####'; 15252END| 15253UPDATE t1 15254SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15255f_charbig = '####updated per update statement itself####'; 15256 15257# check trigger-9 success: 1 15258DROP TRIGGER trg_2; 15259UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15260f_int2 = CAST(f_char1 AS SIGNED INT), 15261f_charbig = CONCAT('===',f_char1,'==='); 15262CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15263BEGIN 15264SET new.f_int1 = new.f_int1 + @max_row, 15265new.f_int2 = new.f_int2 - @max_row, 15266new.f_charbig = '####updated per update trigger####'; 15267END| 15268UPDATE t1 15269SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15270f_charbig = '####updated per update statement itself####'; 15271 15272# check trigger-10 success: 1 15273DROP TRIGGER trg_2; 15274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15275f_int2 = CAST(f_char1 AS SIGNED INT), 15276f_charbig = CONCAT('===',f_char1,'==='); 15277CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15278BEGIN 15279SET new.f_int1 = @my_max1 + @counter, 15280new.f_int2 = @my_min2 - @counter, 15281new.f_charbig = '####updated per insert trigger####'; 15282SET @counter = @counter + 1; 15283END| 15284SET @counter = 1; 15285SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15286INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15287SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15288CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15290ORDER BY f_int1; 15291DROP TRIGGER trg_3; 15292 15293# check trigger-11 success: 1 15294DELETE FROM t1 15295WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15296AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15297AND f_charbig = '####updated per insert trigger####'; 15298CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15299BEGIN 15300SET new.f_int1 = @my_max1 + @counter, 15301new.f_int2 = @my_min2 - @counter, 15302new.f_charbig = '####updated per insert trigger####'; 15303SET @counter = @counter + 1; 15304END| 15305SET @counter = 1; 15306SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15307INSERT INTO t1 (f_char1, f_char2, f_charbig) 15308SELECT CAST(f_int1 AS CHAR), 15309CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15310WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15311ORDER BY f_int1; 15312DROP TRIGGER trg_3; 15313 15314# check trigger-12 success: 1 15315DELETE FROM t1 15316WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15317AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15318AND f_charbig = '####updated per insert trigger####'; 15319ANALYZE TABLE t1; 15320Table Op Msg_type Msg_text 15321test.t1 analyze status OK 15322CHECK TABLE t1 EXTENDED; 15323Table Op Msg_type Msg_text 15324test.t1 check status OK 15325CHECKSUM TABLE t1 EXTENDED; 15326Table Checksum 15327test.t1 <some_value> 15328OPTIMIZE TABLE t1; 15329Table Op Msg_type Msg_text 15330test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 15331test.t1 optimize status OK 15332# check layout success: 1 15333REPAIR TABLE t1 EXTENDED; 15334Table Op Msg_type Msg_text 15335test.t1 repair status OK 15336# check layout success: 1 15337TRUNCATE t1; 15338 15339# check TRUNCATE success: 1 15340# check layout success: 1 15341# End usability test (inc/partition_check.inc) 15342DROP TABLE t1; 15343CREATE TABLE t1 ( 15344f_int1 INTEGER, 15345f_int2 INTEGER, 15346f_char1 CHAR(20), 15347f_char2 CHAR(20), 15348f_charbig VARCHAR(1000) 15349, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 15350) 15351PARTITION BY LIST(ABS(MOD(f_int1,2))) 15352SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 15353(PARTITION part1 VALUES IN (0), 15354PARTITION part2 VALUES IN (1), 15355PARTITION part3 VALUES IN (NULL)); 15356INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15357SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 15358# Start usability test (inc/partition_check.inc) 15359create_command 15360SHOW CREATE TABLE t1; 15361Table Create Table 15362t1 CREATE TABLE `t1` ( 15363 `f_int1` int(11) NOT NULL, 15364 `f_int2` int(11) NOT NULL, 15365 `f_char1` char(20) DEFAULT NULL, 15366 `f_char2` char(20) DEFAULT NULL, 15367 `f_charbig` varchar(1000) DEFAULT NULL, 15368 PRIMARY KEY (`f_int1`,`f_int2`), 15369 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 15370) ENGINE=InnoDB DEFAULT CHARSET=latin1 15371/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 15372SUBPARTITION BY KEY (f_int1) 15373SUBPARTITIONS 3 15374(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 15375 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 15376 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 15377 15378unified filelist 15379t1#P#part1#SP#part1sp0.ibd 15380t1#P#part1#SP#part1sp1.ibd 15381t1#P#part1#SP#part1sp2.ibd 15382t1#P#part2#SP#part2sp0.ibd 15383t1#P#part2#SP#part2sp1.ibd 15384t1#P#part2#SP#part2sp2.ibd 15385t1#P#part3#SP#part3sp0.ibd 15386t1#P#part3#SP#part3sp1.ibd 15387t1#P#part3#SP#part3sp2.ibd 15388t1.frm 15389 15390# check prerequisites-1 success: 1 15391# check COUNT(*) success: 1 15392# check MIN/MAX(f_int1) success: 1 15393# check MIN/MAX(f_int2) success: 1 15394INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15395SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15396CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15397WHERE f_int1 IN (2,3); 15398ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 15399# check prerequisites-3 success: 1 15400# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15401INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15402SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15403CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15404WHERE f_int1 IN (2,3); 15405DELETE FROM t1 WHERE f_charbig = 'delete me'; 15406INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15407SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15408CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15409WHERE f_int1 IN (2,3); 15410DELETE FROM t1 WHERE f_charbig = 'delete me'; 15411# check read via f_int1 success: 1 15412# check read via f_int2 success: 1 15413 15414# check multiple-1 success: 1 15415DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15416 15417# check multiple-2 success: 1 15418INSERT INTO t1 SELECT * FROM t0_template 15419WHERE MOD(f_int1,3) = 0; 15420 15421# check multiple-3 success: 1 15422UPDATE t1 SET f_int1 = f_int1 + @max_row 15423WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15424AND @max_row_div2 + @max_row_div4; 15425 15426# check multiple-4 success: 1 15427DELETE FROM t1 15428WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15429AND @max_row_div2 + @max_row_div4 + @max_row; 15430 15431# check multiple-5 success: 1 15432SELECT COUNT(*) INTO @try_count FROM t0_template 15433WHERE MOD(f_int1,3) = 0 15434AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15435SELECT COUNT(*) INTO @clash_count 15436FROM t1 INNER JOIN t0_template USING(f_int1) 15437WHERE MOD(f_int1,3) = 0 15438AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15439SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15440INSERT INTO t1 15441SET f_int1 = @cur_value , f_int2 = @cur_value, 15442f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15443f_charbig = '#SINGLE#'; 15444 15445# check single-1 success: 1 15446SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15447INSERT INTO t1 15448SET f_int1 = @cur_value , f_int2 = @cur_value, 15449f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15450f_charbig = '#SINGLE#'; 15451 15452# check single-2 success: 1 15453SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15454SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15455UPDATE t1 SET f_int1 = @cur_value2 15456WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15457 15458# check single-3 success: 1 15459SET @cur_value1= -1; 15460SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15461UPDATE t1 SET f_int1 = @cur_value1 15462WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15463 15464# check single-4 success: 1 15465SELECT MAX(f_int1) INTO @cur_value FROM t1; 15466DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15467 15468# check single-5 success: 1 15469DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15470 15471# check single-6 success: 1 15472INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15473 15474# check single-7 success: 1 15475DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15476DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15477INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15478f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15479f_charbig = '#NULL#'; 15480INSERT INTO t1 15481SET f_int1 = NULL , f_int2 = -@max_row, 15482f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15483f_charbig = '#NULL#'; 15484ERROR 23000: Column 'f_int1' cannot be null 15485# check null success: 1 15486DELETE FROM t1 15487WHERE f_int1 = 0 AND f_int2 = 0 15488AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15489AND f_charbig = '#NULL#'; 15490INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15491SELECT f_int1, f_int1, '', '', 'was inserted' 15492 FROM t0_template source_tab 15493WHERE MOD(f_int1,3) = 0 15494AND f_int1 BETWEEN @max_row_div2 AND @max_row 15495ON DUPLICATE KEY 15496UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 15497f_int2 = 2 * @max_row + source_tab.f_int1, 15498f_charbig = 'was updated'; 15499 15500# check unique-1-a success: 1 15501 15502# check unique-1-b success: 1 15503DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15504UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15505f_int2 = CAST(f_char1 AS SIGNED INT), 15506f_charbig = CONCAT('===',f_char1,'===') 15507WHERE f_charbig = 'was updated'; 15508REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15509SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 15510 FROM t0_template source_tab 15511WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15512 15513# check replace success: 1 15514DELETE FROM t1 15515WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15516DELETE FROM t1 15517WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15518f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15519UPDATE t1 SET f_int2 = f_int1, 15520f_char1 = CAST(f_int1 AS CHAR), 15521f_char2 = CAST(f_int1 AS CHAR), 15522f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15523WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15524SET AUTOCOMMIT= 0; 15525INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15526SELECT f_int1, f_int1, '', '', 'was inserted' 15527FROM t0_template source_tab 15528WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15529 15530# check transactions-1 success: 1 15531COMMIT WORK; 15532 15533# check transactions-2 success: 1 15534ROLLBACK WORK; 15535 15536# check transactions-3 success: 1 15537DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15538COMMIT WORK; 15539ROLLBACK WORK; 15540 15541# check transactions-4 success: 1 15542INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15543SELECT f_int1, f_int1, '', '', 'was inserted' 15544FROM t0_template source_tab 15545WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15546 15547# check transactions-5 success: 1 15548ROLLBACK WORK; 15549 15550# check transactions-6 success: 1 15551# INFO: Storage engine used for t1 seems to be transactional. 15552COMMIT; 15553 15554# check transactions-7 success: 1 15555DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15556COMMIT WORK; 15557SET @@session.sql_mode = 'traditional'; 15558Warnings: 15559Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15560SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15561INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15562SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15563'', '', 'was inserted' FROM t0_template 15564WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15565ERROR 22012: Division by 0 15566COMMIT; 15567 15568# check transactions-8 success: 1 15569# INFO: Storage engine used for t1 seems to be able to revert 15570# changes made by the failing statement. 15571SET @@session.sql_mode = ''; 15572Warnings: 15573Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15574SET AUTOCOMMIT= 1; 15575DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15576COMMIT WORK; 15577UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15578 15579# check special-1 success: 1 15580UPDATE t1 SET f_charbig = ''; 15581 15582# check special-2 success: 1 15583UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15584INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15585SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15586WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15587INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15588SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15589'just inserted' FROM t0_template 15590WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15591CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15592BEGIN 15593UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15594f_charbig = 'updated by trigger' 15595 WHERE f_int1 = new.f_int1; 15596END| 15597INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15598SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15599WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15600 15601# check trigger-1 success: 1 15602DROP TRIGGER trg_1; 15603UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15604f_int2 = CAST(f_char1 AS SIGNED INT), 15605f_charbig = 'just inserted' 15606 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15607DELETE FROM t0_aux 15608WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15609INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15610SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15611'just inserted' FROM t0_template 15612WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15613CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15614BEGIN 15615UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15616f_charbig = 'updated by trigger' 15617 WHERE f_int1 = new.f_int1; 15618END| 15619INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15620SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15622 15623# check trigger-2 success: 1 15624DROP TRIGGER trg_1; 15625UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15626f_int2 = CAST(f_char1 AS SIGNED INT), 15627f_charbig = 'just inserted' 15628 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15629DELETE FROM t0_aux 15630WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15631INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15632SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15633'just inserted' FROM t0_template 15634WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15635CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15636BEGIN 15637UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15638f_charbig = 'updated by trigger' 15639 WHERE f_int1 = new.f_int1; 15640END| 15641UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15642WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15643 15644# check trigger-3 success: 1 15645DROP TRIGGER trg_1; 15646UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15647f_int2 = CAST(f_char1 AS SIGNED INT), 15648f_charbig = 'just inserted' 15649 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15650DELETE FROM t0_aux 15651WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15652INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15653SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15654'just inserted' FROM t0_template 15655WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15656CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15657BEGIN 15658UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15659f_charbig = 'updated by trigger' 15660 WHERE f_int1 = - old.f_int1; 15661END| 15662UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15663WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15664 15665# check trigger-4 success: 1 15666DROP TRIGGER trg_1; 15667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15668f_int2 = CAST(f_char1 AS SIGNED INT), 15669f_charbig = 'just inserted' 15670 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15671DELETE FROM t0_aux 15672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15675'just inserted' FROM t0_template 15676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15677CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15678BEGIN 15679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15680f_charbig = 'updated by trigger' 15681 WHERE f_int1 = new.f_int1; 15682END| 15683UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15685 15686# check trigger-5 success: 1 15687DROP TRIGGER trg_1; 15688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15689f_int2 = CAST(f_char1 AS SIGNED INT), 15690f_charbig = 'just inserted' 15691 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15692DELETE FROM t0_aux 15693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15696'just inserted' FROM t0_template 15697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15698CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15699BEGIN 15700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15701f_charbig = 'updated by trigger' 15702 WHERE f_int1 = - old.f_int1; 15703END| 15704UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15706 15707# check trigger-6 success: 1 15708DROP TRIGGER trg_1; 15709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15710f_int2 = CAST(f_char1 AS SIGNED INT), 15711f_charbig = 'just inserted' 15712 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15713DELETE FROM t0_aux 15714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15715INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15716SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15717'just inserted' FROM t0_template 15718WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15719CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15720BEGIN 15721UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15722f_charbig = 'updated by trigger' 15723 WHERE f_int1 = - old.f_int1; 15724END| 15725DELETE FROM t0_aux 15726WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15727 15728# check trigger-7 success: 1 15729DROP TRIGGER trg_1; 15730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15731f_int2 = CAST(f_char1 AS SIGNED INT), 15732f_charbig = 'just inserted' 15733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15734DELETE FROM t0_aux 15735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15738'just inserted' FROM t0_template 15739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15740CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15741BEGIN 15742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15743f_charbig = 'updated by trigger' 15744 WHERE f_int1 = - old.f_int1; 15745END| 15746DELETE FROM t0_aux 15747WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15748 15749# check trigger-8 success: 1 15750DROP TRIGGER trg_1; 15751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15752f_int2 = CAST(f_char1 AS SIGNED INT), 15753f_charbig = 'just inserted' 15754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15755DELETE FROM t0_aux 15756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15757DELETE FROM t1 15758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15759CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15760BEGIN 15761SET new.f_int1 = old.f_int1 + @max_row, 15762new.f_int2 = old.f_int2 - @max_row, 15763new.f_charbig = '####updated per update trigger####'; 15764END| 15765UPDATE t1 15766SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15767f_charbig = '####updated per update statement itself####'; 15768 15769# check trigger-9 success: 1 15770DROP TRIGGER trg_2; 15771UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15772f_int2 = CAST(f_char1 AS SIGNED INT), 15773f_charbig = CONCAT('===',f_char1,'==='); 15774CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15775BEGIN 15776SET new.f_int1 = new.f_int1 + @max_row, 15777new.f_int2 = new.f_int2 - @max_row, 15778new.f_charbig = '####updated per update trigger####'; 15779END| 15780UPDATE t1 15781SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15782f_charbig = '####updated per update statement itself####'; 15783 15784# check trigger-10 success: 1 15785DROP TRIGGER trg_2; 15786UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15787f_int2 = CAST(f_char1 AS SIGNED INT), 15788f_charbig = CONCAT('===',f_char1,'==='); 15789CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15790BEGIN 15791SET new.f_int1 = @my_max1 + @counter, 15792new.f_int2 = @my_min2 - @counter, 15793new.f_charbig = '####updated per insert trigger####'; 15794SET @counter = @counter + 1; 15795END| 15796SET @counter = 1; 15797SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15798INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15799SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15800CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15801WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15802ORDER BY f_int1; 15803DROP TRIGGER trg_3; 15804 15805# check trigger-11 success: 1 15806DELETE FROM t1 15807WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15808AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15809AND f_charbig = '####updated per insert trigger####'; 15810CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15811BEGIN 15812SET new.f_int1 = @my_max1 + @counter, 15813new.f_int2 = @my_min2 - @counter, 15814new.f_charbig = '####updated per insert trigger####'; 15815SET @counter = @counter + 1; 15816END| 15817SET @counter = 1; 15818SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15819INSERT INTO t1 (f_char1, f_char2, f_charbig) 15820SELECT CAST(f_int1 AS CHAR), 15821CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15822WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15823ORDER BY f_int1; 15824DROP TRIGGER trg_3; 15825 15826# check trigger-12 success: 1 15827DELETE FROM t1 15828WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15829AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15830AND f_charbig = '####updated per insert trigger####'; 15831ANALYZE TABLE t1; 15832Table Op Msg_type Msg_text 15833test.t1 analyze status OK 15834CHECK TABLE t1 EXTENDED; 15835Table Op Msg_type Msg_text 15836test.t1 check status OK 15837CHECKSUM TABLE t1 EXTENDED; 15838Table Checksum 15839test.t1 <some_value> 15840OPTIMIZE TABLE t1; 15841Table Op Msg_type Msg_text 15842test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 15843test.t1 optimize status OK 15844# check layout success: 1 15845REPAIR TABLE t1 EXTENDED; 15846Table Op Msg_type Msg_text 15847test.t1 repair status OK 15848# check layout success: 1 15849TRUNCATE t1; 15850 15851# check TRUNCATE success: 1 15852# check layout success: 1 15853# End usability test (inc/partition_check.inc) 15854DROP TABLE t1; 15855DROP TABLE IF EXISTS t1; 15856CREATE TABLE t1 ( 15857f_int1 INTEGER, 15858f_int2 INTEGER, 15859f_char1 CHAR(20), 15860f_char2 CHAR(20), 15861f_charbig VARCHAR(1000) 15862, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 15863) 15864PARTITION BY HASH(f_int1) PARTITIONS 2; 15865INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15866SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 15867# Start usability test (inc/partition_check.inc) 15868create_command 15869SHOW CREATE TABLE t1; 15870Table Create Table 15871t1 CREATE TABLE `t1` ( 15872 `f_int1` int(11) DEFAULT NULL, 15873 `f_int2` int(11) DEFAULT NULL, 15874 `f_char1` char(20) DEFAULT NULL, 15875 `f_char2` char(20) DEFAULT NULL, 15876 `f_charbig` varchar(1000) DEFAULT NULL, 15877 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 15878 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 15879) ENGINE=InnoDB DEFAULT CHARSET=latin1 15880/*!50100 PARTITION BY HASH (f_int1) 15881PARTITIONS 2 */ 15882 15883unified filelist 15884t1#P#p0.ibd 15885t1#P#p1.ibd 15886t1.frm 15887 15888# check prerequisites-1 success: 1 15889# check COUNT(*) success: 1 15890# check MIN/MAX(f_int1) success: 1 15891# check MIN/MAX(f_int2) success: 1 15892INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15893SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15894CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15895WHERE f_int1 IN (2,3); 15896ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 15897# check prerequisites-3 success: 1 15898# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15899INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15900SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15901CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15902WHERE f_int1 IN (2,3); 15903DELETE FROM t1 WHERE f_charbig = 'delete me'; 15904INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15905SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15906CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15907WHERE f_int1 IN (2,3); 15908DELETE FROM t1 WHERE f_charbig = 'delete me'; 15909# check read via f_int1 success: 1 15910# check read via f_int2 success: 1 15911 15912# check multiple-1 success: 1 15913DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15914 15915# check multiple-2 success: 1 15916INSERT INTO t1 SELECT * FROM t0_template 15917WHERE MOD(f_int1,3) = 0; 15918 15919# check multiple-3 success: 1 15920UPDATE t1 SET f_int1 = f_int1 + @max_row 15921WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15922AND @max_row_div2 + @max_row_div4; 15923 15924# check multiple-4 success: 1 15925DELETE FROM t1 15926WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15927AND @max_row_div2 + @max_row_div4 + @max_row; 15928 15929# check multiple-5 success: 1 15930SELECT COUNT(*) INTO @try_count FROM t0_template 15931WHERE MOD(f_int1,3) = 0 15932AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15933SELECT COUNT(*) INTO @clash_count 15934FROM t1 INNER JOIN t0_template USING(f_int1) 15935WHERE MOD(f_int1,3) = 0 15936AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15937SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15938INSERT INTO t1 15939SET f_int1 = @cur_value , f_int2 = @cur_value, 15940f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15941f_charbig = '#SINGLE#'; 15942 15943# check single-1 success: 1 15944SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15945INSERT INTO t1 15946SET f_int1 = @cur_value , f_int2 = @cur_value, 15947f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15948f_charbig = '#SINGLE#'; 15949 15950# check single-2 success: 1 15951SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15952SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15953UPDATE t1 SET f_int1 = @cur_value2 15954WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15955 15956# check single-3 success: 1 15957SET @cur_value1= -1; 15958SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15959UPDATE t1 SET f_int1 = @cur_value1 15960WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15961 15962# check single-4 success: 1 15963SELECT MAX(f_int1) INTO @cur_value FROM t1; 15964DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15965 15966# check single-5 success: 1 15967DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15968 15969# check single-6 success: 1 15970INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15971 15972# check single-7 success: 1 15973DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15974DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15975INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15976f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15977f_charbig = '#NULL#'; 15978INSERT INTO t1 15979SET f_int1 = NULL , f_int2 = -@max_row, 15980f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15981f_charbig = '#NULL#'; 15982# check null success: 1 15983 15984# check null-1 success: 1 15985UPDATE t1 SET f_int1 = -@max_row 15986WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15987AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15988 15989# check null-2 success: 1 15990UPDATE t1 SET f_int1 = NULL 15991WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15992AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15993 15994# check null-3 success: 1 15995DELETE FROM t1 15996WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15997AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15998 15999# check null-4 success: 1 16000DELETE FROM t1 16001WHERE f_int1 = 0 AND f_int2 = 0 16002AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16003AND f_charbig = '#NULL#'; 16004INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16005SELECT f_int1, f_int1, '', '', 'was inserted' 16006 FROM t0_template source_tab 16007WHERE MOD(f_int1,3) = 0 16008AND f_int1 BETWEEN @max_row_div2 AND @max_row 16009ON DUPLICATE KEY 16010UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 16011f_int2 = 2 * @max_row + source_tab.f_int1, 16012f_charbig = 'was updated'; 16013 16014# check unique-1-a success: 1 16015 16016# check unique-1-b success: 1 16017DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16018UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16019f_int2 = CAST(f_char1 AS SIGNED INT), 16020f_charbig = CONCAT('===',f_char1,'===') 16021WHERE f_charbig = 'was updated'; 16022REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16023SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 16024 FROM t0_template source_tab 16025WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16026 16027# check replace success: 1 16028DELETE FROM t1 16029WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 16030DELETE FROM t1 16031WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 16032f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 16033UPDATE t1 SET f_int2 = f_int1, 16034f_char1 = CAST(f_int1 AS CHAR), 16035f_char2 = CAST(f_int1 AS CHAR), 16036f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 16037WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 16038SET AUTOCOMMIT= 0; 16039INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16040SELECT f_int1, f_int1, '', '', 'was inserted' 16041FROM t0_template source_tab 16042WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16043 16044# check transactions-1 success: 1 16045COMMIT WORK; 16046 16047# check transactions-2 success: 1 16048ROLLBACK WORK; 16049 16050# check transactions-3 success: 1 16051DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16052COMMIT WORK; 16053ROLLBACK WORK; 16054 16055# check transactions-4 success: 1 16056INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16057SELECT f_int1, f_int1, '', '', 'was inserted' 16058FROM t0_template source_tab 16059WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16060 16061# check transactions-5 success: 1 16062ROLLBACK WORK; 16063 16064# check transactions-6 success: 1 16065# INFO: Storage engine used for t1 seems to be transactional. 16066COMMIT; 16067 16068# check transactions-7 success: 1 16069DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16070COMMIT WORK; 16071SET @@session.sql_mode = 'traditional'; 16072Warnings: 16073Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16074SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16075INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16076SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16077'', '', 'was inserted' FROM t0_template 16078WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16079ERROR 22012: Division by 0 16080COMMIT; 16081 16082# check transactions-8 success: 1 16083# INFO: Storage engine used for t1 seems to be able to revert 16084# changes made by the failing statement. 16085SET @@session.sql_mode = ''; 16086Warnings: 16087Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16088SET AUTOCOMMIT= 1; 16089DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16090COMMIT WORK; 16091UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16092 16093# check special-1 success: 1 16094UPDATE t1 SET f_charbig = ''; 16095 16096# check special-2 success: 1 16097UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16098INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16099SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16103'just inserted' FROM t0_template 16104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16105CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16106BEGIN 16107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16108f_charbig = 'updated by trigger' 16109 WHERE f_int1 = new.f_int1; 16110END| 16111INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16112SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16114 16115# check trigger-1 success: 1 16116DROP TRIGGER trg_1; 16117UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16118f_int2 = CAST(f_char1 AS SIGNED INT), 16119f_charbig = 'just inserted' 16120 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16121DELETE FROM t0_aux 16122WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16123INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16124SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16125'just inserted' FROM t0_template 16126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16127CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16128BEGIN 16129UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16130f_charbig = 'updated by trigger' 16131 WHERE f_int1 = new.f_int1; 16132END| 16133INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16134SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16135WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16136 16137# check trigger-2 success: 1 16138DROP TRIGGER trg_1; 16139UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16140f_int2 = CAST(f_char1 AS SIGNED INT), 16141f_charbig = 'just inserted' 16142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16143DELETE FROM t0_aux 16144WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16145INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16146SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16147'just inserted' FROM t0_template 16148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16149CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16150BEGIN 16151UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16152f_charbig = 'updated by trigger' 16153 WHERE f_int1 = new.f_int1; 16154END| 16155UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16156WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16157 16158# check trigger-3 success: 1 16159DROP TRIGGER trg_1; 16160UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16161f_int2 = CAST(f_char1 AS SIGNED INT), 16162f_charbig = 'just inserted' 16163 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16164DELETE FROM t0_aux 16165WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16166INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16167SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16168'just inserted' FROM t0_template 16169WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16170CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16171BEGIN 16172UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16173f_charbig = 'updated by trigger' 16174 WHERE f_int1 = - old.f_int1; 16175END| 16176UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16177WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16178 16179# check trigger-4 success: 1 16180DROP TRIGGER trg_1; 16181UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16182f_int2 = CAST(f_char1 AS SIGNED INT), 16183f_charbig = 'just inserted' 16184 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16185DELETE FROM t0_aux 16186WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16187INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16188SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16189'just inserted' FROM t0_template 16190WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16191CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16192BEGIN 16193UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16194f_charbig = 'updated by trigger' 16195 WHERE f_int1 = new.f_int1; 16196END| 16197UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16198WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16199 16200# check trigger-5 success: 1 16201DROP TRIGGER trg_1; 16202UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16203f_int2 = CAST(f_char1 AS SIGNED INT), 16204f_charbig = 'just inserted' 16205 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16206DELETE FROM t0_aux 16207WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16208INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16209SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16210'just inserted' FROM t0_template 16211WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16212CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16213BEGIN 16214UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16215f_charbig = 'updated by trigger' 16216 WHERE f_int1 = - old.f_int1; 16217END| 16218UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16219WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16220 16221# check trigger-6 success: 1 16222DROP TRIGGER trg_1; 16223UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16224f_int2 = CAST(f_char1 AS SIGNED INT), 16225f_charbig = 'just inserted' 16226 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16227DELETE FROM t0_aux 16228WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16229INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16230SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16231'just inserted' FROM t0_template 16232WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16233CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16234BEGIN 16235UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16236f_charbig = 'updated by trigger' 16237 WHERE f_int1 = - old.f_int1; 16238END| 16239DELETE FROM t0_aux 16240WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16241 16242# check trigger-7 success: 1 16243DROP TRIGGER trg_1; 16244UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16245f_int2 = CAST(f_char1 AS SIGNED INT), 16246f_charbig = 'just inserted' 16247 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16248DELETE FROM t0_aux 16249WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16250INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16251SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16252'just inserted' FROM t0_template 16253WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16254CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16255BEGIN 16256UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16257f_charbig = 'updated by trigger' 16258 WHERE f_int1 = - old.f_int1; 16259END| 16260DELETE FROM t0_aux 16261WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16262 16263# check trigger-8 success: 1 16264DROP TRIGGER trg_1; 16265UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16266f_int2 = CAST(f_char1 AS SIGNED INT), 16267f_charbig = 'just inserted' 16268 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16269DELETE FROM t0_aux 16270WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16271DELETE FROM t1 16272WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16273CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16274BEGIN 16275SET new.f_int1 = old.f_int1 + @max_row, 16276new.f_int2 = old.f_int2 - @max_row, 16277new.f_charbig = '####updated per update trigger####'; 16278END| 16279UPDATE t1 16280SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16281f_charbig = '####updated per update statement itself####'; 16282 16283# check trigger-9 success: 1 16284DROP TRIGGER trg_2; 16285UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16286f_int2 = CAST(f_char1 AS SIGNED INT), 16287f_charbig = CONCAT('===',f_char1,'==='); 16288CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16289BEGIN 16290SET new.f_int1 = new.f_int1 + @max_row, 16291new.f_int2 = new.f_int2 - @max_row, 16292new.f_charbig = '####updated per update trigger####'; 16293END| 16294UPDATE t1 16295SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16296f_charbig = '####updated per update statement itself####'; 16297 16298# check trigger-10 success: 1 16299DROP TRIGGER trg_2; 16300UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16301f_int2 = CAST(f_char1 AS SIGNED INT), 16302f_charbig = CONCAT('===',f_char1,'==='); 16303CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16304BEGIN 16305SET new.f_int1 = @my_max1 + @counter, 16306new.f_int2 = @my_min2 - @counter, 16307new.f_charbig = '####updated per insert trigger####'; 16308SET @counter = @counter + 1; 16309END| 16310SET @counter = 1; 16311SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16313SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16314CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16315WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16316ORDER BY f_int1; 16317DROP TRIGGER trg_3; 16318 16319# check trigger-11 success: 1 16320DELETE FROM t1 16321WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16322AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16323AND f_charbig = '####updated per insert trigger####'; 16324CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16325BEGIN 16326SET new.f_int1 = @my_max1 + @counter, 16327new.f_int2 = @my_min2 - @counter, 16328new.f_charbig = '####updated per insert trigger####'; 16329SET @counter = @counter + 1; 16330END| 16331SET @counter = 1; 16332SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16333INSERT INTO t1 (f_char1, f_char2, f_charbig) 16334SELECT CAST(f_int1 AS CHAR), 16335CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16337ORDER BY f_int1; 16338DROP TRIGGER trg_3; 16339 16340# check trigger-12 success: 1 16341DELETE FROM t1 16342WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16343AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16344AND f_charbig = '####updated per insert trigger####'; 16345ANALYZE TABLE t1; 16346Table Op Msg_type Msg_text 16347test.t1 analyze status OK 16348CHECK TABLE t1 EXTENDED; 16349Table Op Msg_type Msg_text 16350test.t1 check status OK 16351CHECKSUM TABLE t1 EXTENDED; 16352Table Checksum 16353test.t1 <some_value> 16354OPTIMIZE TABLE t1; 16355Table Op Msg_type Msg_text 16356test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 16357test.t1 optimize status OK 16358# check layout success: 1 16359REPAIR TABLE t1 EXTENDED; 16360Table Op Msg_type Msg_text 16361test.t1 repair status OK 16362# check layout success: 1 16363TRUNCATE t1; 16364 16365# check TRUNCATE success: 1 16366# check layout success: 1 16367# End usability test (inc/partition_check.inc) 16368DROP TABLE t1; 16369CREATE TABLE t1 ( 16370f_int1 INTEGER, 16371f_int2 INTEGER, 16372f_char1 CHAR(20), 16373f_char2 CHAR(20), 16374f_charbig VARCHAR(1000) 16375, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 16376) 16377PARTITION BY KEY(f_int1) PARTITIONS 5; 16378INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16379SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 16380# Start usability test (inc/partition_check.inc) 16381create_command 16382SHOW CREATE TABLE t1; 16383Table Create Table 16384t1 CREATE TABLE `t1` ( 16385 `f_int1` int(11) DEFAULT NULL, 16386 `f_int2` int(11) DEFAULT NULL, 16387 `f_char1` char(20) DEFAULT NULL, 16388 `f_char2` char(20) DEFAULT NULL, 16389 `f_charbig` varchar(1000) DEFAULT NULL, 16390 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 16391 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 16392) ENGINE=InnoDB DEFAULT CHARSET=latin1 16393/*!50100 PARTITION BY KEY (f_int1) 16394PARTITIONS 5 */ 16395 16396unified filelist 16397t1#P#p0.ibd 16398t1#P#p1.ibd 16399t1#P#p2.ibd 16400t1#P#p3.ibd 16401t1#P#p4.ibd 16402t1.frm 16403 16404# check prerequisites-1 success: 1 16405# check COUNT(*) success: 1 16406# check MIN/MAX(f_int1) success: 1 16407# check MIN/MAX(f_int2) success: 1 16408INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16409SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16410CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16411WHERE f_int1 IN (2,3); 16412ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16413# check prerequisites-3 success: 1 16414# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16415INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16416SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16417CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16418WHERE f_int1 IN (2,3); 16419DELETE FROM t1 WHERE f_charbig = 'delete me'; 16420INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16421SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16422CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16423WHERE f_int1 IN (2,3); 16424DELETE FROM t1 WHERE f_charbig = 'delete me'; 16425# check read via f_int1 success: 1 16426# check read via f_int2 success: 1 16427 16428# check multiple-1 success: 1 16429DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16430 16431# check multiple-2 success: 1 16432INSERT INTO t1 SELECT * FROM t0_template 16433WHERE MOD(f_int1,3) = 0; 16434 16435# check multiple-3 success: 1 16436UPDATE t1 SET f_int1 = f_int1 + @max_row 16437WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16438AND @max_row_div2 + @max_row_div4; 16439 16440# check multiple-4 success: 1 16441DELETE FROM t1 16442WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16443AND @max_row_div2 + @max_row_div4 + @max_row; 16444 16445# check multiple-5 success: 1 16446SELECT COUNT(*) INTO @try_count FROM t0_template 16447WHERE MOD(f_int1,3) = 0 16448AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16449SELECT COUNT(*) INTO @clash_count 16450FROM t1 INNER JOIN t0_template USING(f_int1) 16451WHERE MOD(f_int1,3) = 0 16452AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16453SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16454INSERT INTO t1 16455SET f_int1 = @cur_value , f_int2 = @cur_value, 16456f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16457f_charbig = '#SINGLE#'; 16458 16459# check single-1 success: 1 16460SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16461INSERT INTO t1 16462SET f_int1 = @cur_value , f_int2 = @cur_value, 16463f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16464f_charbig = '#SINGLE#'; 16465 16466# check single-2 success: 1 16467SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16468SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16469UPDATE t1 SET f_int1 = @cur_value2 16470WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16471 16472# check single-3 success: 1 16473SET @cur_value1= -1; 16474SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16475UPDATE t1 SET f_int1 = @cur_value1 16476WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16477 16478# check single-4 success: 1 16479SELECT MAX(f_int1) INTO @cur_value FROM t1; 16480DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16481 16482# check single-5 success: 1 16483DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16484 16485# check single-6 success: 1 16486INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16487 16488# check single-7 success: 1 16489DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16490DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16491INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16492f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16493f_charbig = '#NULL#'; 16494INSERT INTO t1 16495SET f_int1 = NULL , f_int2 = -@max_row, 16496f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16497f_charbig = '#NULL#'; 16498# check null success: 1 16499 16500# check null-1 success: 1 16501UPDATE t1 SET f_int1 = -@max_row 16502WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16503AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16504 16505# check null-2 success: 1 16506UPDATE t1 SET f_int1 = NULL 16507WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16508AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16509 16510# check null-3 success: 1 16511DELETE FROM t1 16512WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16513AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16514 16515# check null-4 success: 1 16516DELETE FROM t1 16517WHERE f_int1 = 0 AND f_int2 = 0 16518AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16519AND f_charbig = '#NULL#'; 16520INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16521SELECT f_int1, f_int1, '', '', 'was inserted' 16522 FROM t0_template source_tab 16523WHERE MOD(f_int1,3) = 0 16524AND f_int1 BETWEEN @max_row_div2 AND @max_row 16525ON DUPLICATE KEY 16526UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 16527f_int2 = 2 * @max_row + source_tab.f_int1, 16528f_charbig = 'was updated'; 16529 16530# check unique-1-a success: 1 16531 16532# check unique-1-b success: 1 16533DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16534UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16535f_int2 = CAST(f_char1 AS SIGNED INT), 16536f_charbig = CONCAT('===',f_char1,'===') 16537WHERE f_charbig = 'was updated'; 16538REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16539SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 16540 FROM t0_template source_tab 16541WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16542 16543# check replace success: 1 16544DELETE FROM t1 16545WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 16546DELETE FROM t1 16547WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 16548f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 16549UPDATE t1 SET f_int2 = f_int1, 16550f_char1 = CAST(f_int1 AS CHAR), 16551f_char2 = CAST(f_int1 AS CHAR), 16552f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 16553WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 16554SET AUTOCOMMIT= 0; 16555INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16556SELECT f_int1, f_int1, '', '', 'was inserted' 16557FROM t0_template source_tab 16558WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16559 16560# check transactions-1 success: 1 16561COMMIT WORK; 16562 16563# check transactions-2 success: 1 16564ROLLBACK WORK; 16565 16566# check transactions-3 success: 1 16567DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16568COMMIT WORK; 16569ROLLBACK WORK; 16570 16571# check transactions-4 success: 1 16572INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16573SELECT f_int1, f_int1, '', '', 'was inserted' 16574FROM t0_template source_tab 16575WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16576 16577# check transactions-5 success: 1 16578ROLLBACK WORK; 16579 16580# check transactions-6 success: 1 16581# INFO: Storage engine used for t1 seems to be transactional. 16582COMMIT; 16583 16584# check transactions-7 success: 1 16585DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16586COMMIT WORK; 16587SET @@session.sql_mode = 'traditional'; 16588Warnings: 16589Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16590SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16591INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16592SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16593'', '', 'was inserted' FROM t0_template 16594WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16595ERROR 22012: Division by 0 16596COMMIT; 16597 16598# check transactions-8 success: 1 16599# INFO: Storage engine used for t1 seems to be able to revert 16600# changes made by the failing statement. 16601SET @@session.sql_mode = ''; 16602Warnings: 16603Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16604SET AUTOCOMMIT= 1; 16605DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16606COMMIT WORK; 16607UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16608 16609# check special-1 success: 1 16610UPDATE t1 SET f_charbig = ''; 16611 16612# check special-2 success: 1 16613UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16614INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16615SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16617INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16618SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16619'just inserted' FROM t0_template 16620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16621CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16622BEGIN 16623UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16624f_charbig = 'updated by trigger' 16625 WHERE f_int1 = new.f_int1; 16626END| 16627INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16628SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16630 16631# check trigger-1 success: 1 16632DROP TRIGGER trg_1; 16633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16634f_int2 = CAST(f_char1 AS SIGNED INT), 16635f_charbig = 'just inserted' 16636 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16637DELETE FROM t0_aux 16638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16641'just inserted' FROM t0_template 16642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16643CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16644BEGIN 16645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16646f_charbig = 'updated by trigger' 16647 WHERE f_int1 = new.f_int1; 16648END| 16649INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16650SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16651WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16652 16653# check trigger-2 success: 1 16654DROP TRIGGER trg_1; 16655UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16656f_int2 = CAST(f_char1 AS SIGNED INT), 16657f_charbig = 'just inserted' 16658 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16659DELETE FROM t0_aux 16660WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16661INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16662SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16663'just inserted' FROM t0_template 16664WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16665CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16666BEGIN 16667UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16668f_charbig = 'updated by trigger' 16669 WHERE f_int1 = new.f_int1; 16670END| 16671UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16672WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16673 16674# check trigger-3 success: 1 16675DROP TRIGGER trg_1; 16676UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16677f_int2 = CAST(f_char1 AS SIGNED INT), 16678f_charbig = 'just inserted' 16679 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16680DELETE FROM t0_aux 16681WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16682INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16683SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16684'just inserted' FROM t0_template 16685WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16686CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16687BEGIN 16688UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16689f_charbig = 'updated by trigger' 16690 WHERE f_int1 = - old.f_int1; 16691END| 16692UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16693WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16694 16695# check trigger-4 success: 1 16696DROP TRIGGER trg_1; 16697UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16698f_int2 = CAST(f_char1 AS SIGNED INT), 16699f_charbig = 'just inserted' 16700 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16701DELETE FROM t0_aux 16702WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16703INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16704SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16705'just inserted' FROM t0_template 16706WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16707CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16708BEGIN 16709UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16710f_charbig = 'updated by trigger' 16711 WHERE f_int1 = new.f_int1; 16712END| 16713UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16714WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16715 16716# check trigger-5 success: 1 16717DROP TRIGGER trg_1; 16718UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16719f_int2 = CAST(f_char1 AS SIGNED INT), 16720f_charbig = 'just inserted' 16721 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16722DELETE FROM t0_aux 16723WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16724INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16725SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16726'just inserted' FROM t0_template 16727WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16728CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16729BEGIN 16730UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16731f_charbig = 'updated by trigger' 16732 WHERE f_int1 = - old.f_int1; 16733END| 16734UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16735WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16736 16737# check trigger-6 success: 1 16738DROP TRIGGER trg_1; 16739UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16740f_int2 = CAST(f_char1 AS SIGNED INT), 16741f_charbig = 'just inserted' 16742 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16743DELETE FROM t0_aux 16744WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16745INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16746SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16747'just inserted' FROM t0_template 16748WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16749CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16750BEGIN 16751UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16752f_charbig = 'updated by trigger' 16753 WHERE f_int1 = - old.f_int1; 16754END| 16755DELETE FROM t0_aux 16756WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16757 16758# check trigger-7 success: 1 16759DROP TRIGGER trg_1; 16760UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16761f_int2 = CAST(f_char1 AS SIGNED INT), 16762f_charbig = 'just inserted' 16763 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16764DELETE FROM t0_aux 16765WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16766INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16767SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16768'just inserted' FROM t0_template 16769WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16770CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16771BEGIN 16772UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16773f_charbig = 'updated by trigger' 16774 WHERE f_int1 = - old.f_int1; 16775END| 16776DELETE FROM t0_aux 16777WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16778 16779# check trigger-8 success: 1 16780DROP TRIGGER trg_1; 16781UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16782f_int2 = CAST(f_char1 AS SIGNED INT), 16783f_charbig = 'just inserted' 16784 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16785DELETE FROM t0_aux 16786WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16787DELETE FROM t1 16788WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16789CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16790BEGIN 16791SET new.f_int1 = old.f_int1 + @max_row, 16792new.f_int2 = old.f_int2 - @max_row, 16793new.f_charbig = '####updated per update trigger####'; 16794END| 16795UPDATE t1 16796SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16797f_charbig = '####updated per update statement itself####'; 16798 16799# check trigger-9 success: 1 16800DROP TRIGGER trg_2; 16801UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16802f_int2 = CAST(f_char1 AS SIGNED INT), 16803f_charbig = CONCAT('===',f_char1,'==='); 16804CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16805BEGIN 16806SET new.f_int1 = new.f_int1 + @max_row, 16807new.f_int2 = new.f_int2 - @max_row, 16808new.f_charbig = '####updated per update trigger####'; 16809END| 16810UPDATE t1 16811SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16812f_charbig = '####updated per update statement itself####'; 16813 16814# check trigger-10 success: 1 16815DROP TRIGGER trg_2; 16816UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16817f_int2 = CAST(f_char1 AS SIGNED INT), 16818f_charbig = CONCAT('===',f_char1,'==='); 16819CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16820BEGIN 16821SET new.f_int1 = @my_max1 + @counter, 16822new.f_int2 = @my_min2 - @counter, 16823new.f_charbig = '####updated per insert trigger####'; 16824SET @counter = @counter + 1; 16825END| 16826SET @counter = 1; 16827SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16828INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16829SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16830CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16832ORDER BY f_int1; 16833DROP TRIGGER trg_3; 16834 16835# check trigger-11 success: 1 16836DELETE FROM t1 16837WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16838AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16839AND f_charbig = '####updated per insert trigger####'; 16840CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16841BEGIN 16842SET new.f_int1 = @my_max1 + @counter, 16843new.f_int2 = @my_min2 - @counter, 16844new.f_charbig = '####updated per insert trigger####'; 16845SET @counter = @counter + 1; 16846END| 16847SET @counter = 1; 16848SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16849INSERT INTO t1 (f_char1, f_char2, f_charbig) 16850SELECT CAST(f_int1 AS CHAR), 16851CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16852WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16853ORDER BY f_int1; 16854DROP TRIGGER trg_3; 16855 16856# check trigger-12 success: 1 16857DELETE FROM t1 16858WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16859AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16860AND f_charbig = '####updated per insert trigger####'; 16861ANALYZE TABLE t1; 16862Table Op Msg_type Msg_text 16863test.t1 analyze status OK 16864CHECK TABLE t1 EXTENDED; 16865Table Op Msg_type Msg_text 16866test.t1 check status OK 16867CHECKSUM TABLE t1 EXTENDED; 16868Table Checksum 16869test.t1 <some_value> 16870OPTIMIZE TABLE t1; 16871Table Op Msg_type Msg_text 16872test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 16873test.t1 optimize status OK 16874# check layout success: 1 16875REPAIR TABLE t1 EXTENDED; 16876Table Op Msg_type Msg_text 16877test.t1 repair status OK 16878# check layout success: 1 16879TRUNCATE t1; 16880 16881# check TRUNCATE success: 1 16882# check layout success: 1 16883# End usability test (inc/partition_check.inc) 16884DROP TABLE t1; 16885CREATE TABLE t1 ( 16886f_int1 INTEGER, 16887f_int2 INTEGER, 16888f_char1 CHAR(20), 16889f_char2 CHAR(20), 16890f_charbig VARCHAR(1000) 16891, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 16892) 16893PARTITION BY LIST(MOD(f_int1,4)) 16894(PARTITION part_3 VALUES IN (-3), 16895PARTITION part_2 VALUES IN (-2), 16896PARTITION part_1 VALUES IN (-1), 16897PARTITION part_N VALUES IN (NULL), 16898PARTITION part0 VALUES IN (0), 16899PARTITION part1 VALUES IN (1), 16900PARTITION part2 VALUES IN (2), 16901PARTITION part3 VALUES IN (3)); 16902INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16903SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 16904# Start usability test (inc/partition_check.inc) 16905create_command 16906SHOW CREATE TABLE t1; 16907Table Create Table 16908t1 CREATE TABLE `t1` ( 16909 `f_int1` int(11) DEFAULT NULL, 16910 `f_int2` int(11) DEFAULT NULL, 16911 `f_char1` char(20) DEFAULT NULL, 16912 `f_char2` char(20) DEFAULT NULL, 16913 `f_charbig` varchar(1000) DEFAULT NULL, 16914 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 16915 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 16916) ENGINE=InnoDB DEFAULT CHARSET=latin1 16917/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 16918(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 16919 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 16920 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 16921 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 16922 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 16923 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 16924 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 16925 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 16926 16927unified filelist 16928t1#P#part0.ibd 16929t1#P#part1.ibd 16930t1#P#part2.ibd 16931t1#P#part3.ibd 16932t1#P#part_1.ibd 16933t1#P#part_2.ibd 16934t1#P#part_3.ibd 16935t1#P#part_N.ibd 16936t1.frm 16937 16938# check prerequisites-1 success: 1 16939# check COUNT(*) success: 1 16940# check MIN/MAX(f_int1) success: 1 16941# check MIN/MAX(f_int2) success: 1 16942INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16943SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16944CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16945WHERE f_int1 IN (2,3); 16946ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16947# check prerequisites-3 success: 1 16948# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16949INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16950SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16951CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16952WHERE f_int1 IN (2,3); 16953DELETE FROM t1 WHERE f_charbig = 'delete me'; 16954INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16955SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16956CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16957WHERE f_int1 IN (2,3); 16958DELETE FROM t1 WHERE f_charbig = 'delete me'; 16959# check read via f_int1 success: 1 16960# check read via f_int2 success: 1 16961 16962# check multiple-1 success: 1 16963DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16964 16965# check multiple-2 success: 1 16966INSERT INTO t1 SELECT * FROM t0_template 16967WHERE MOD(f_int1,3) = 0; 16968 16969# check multiple-3 success: 1 16970UPDATE t1 SET f_int1 = f_int1 + @max_row 16971WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16972AND @max_row_div2 + @max_row_div4; 16973 16974# check multiple-4 success: 1 16975DELETE FROM t1 16976WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16977AND @max_row_div2 + @max_row_div4 + @max_row; 16978 16979# check multiple-5 success: 1 16980SELECT COUNT(*) INTO @try_count FROM t0_template 16981WHERE MOD(f_int1,3) = 0 16982AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16983SELECT COUNT(*) INTO @clash_count 16984FROM t1 INNER JOIN t0_template USING(f_int1) 16985WHERE MOD(f_int1,3) = 0 16986AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16987SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16988INSERT INTO t1 16989SET f_int1 = @cur_value , f_int2 = @cur_value, 16990f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16991f_charbig = '#SINGLE#'; 16992 16993# check single-1 success: 1 16994SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16995INSERT INTO t1 16996SET f_int1 = @cur_value , f_int2 = @cur_value, 16997f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16998f_charbig = '#SINGLE#'; 16999 17000# check single-2 success: 1 17001SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17002SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17003UPDATE t1 SET f_int1 = @cur_value2 17004WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17005 17006# check single-3 success: 1 17007SET @cur_value1= -1; 17008SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17009UPDATE t1 SET f_int1 = @cur_value1 17010WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17011 17012# check single-4 success: 1 17013SELECT MAX(f_int1) INTO @cur_value FROM t1; 17014DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17015 17016# check single-5 success: 1 17017DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17018 17019# check single-6 success: 1 17020INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17021 17022# check single-7 success: 1 17023DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 17024DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17025INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17026f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17027f_charbig = '#NULL#'; 17028INSERT INTO t1 17029SET f_int1 = NULL , f_int2 = -@max_row, 17030f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17031f_charbig = '#NULL#'; 17032# check null success: 1 17033 17034# check null-1 success: 1 17035UPDATE t1 SET f_int1 = -@max_row 17036WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17037AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17038 17039# check null-2 success: 1 17040UPDATE t1 SET f_int1 = NULL 17041WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17042AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17043 17044# check null-3 success: 1 17045DELETE FROM t1 17046WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17047AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17048 17049# check null-4 success: 1 17050DELETE FROM t1 17051WHERE f_int1 = 0 AND f_int2 = 0 17052AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17053AND f_charbig = '#NULL#'; 17054INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17055SELECT f_int1, f_int1, '', '', 'was inserted' 17056 FROM t0_template source_tab 17057WHERE MOD(f_int1,3) = 0 17058AND f_int1 BETWEEN @max_row_div2 AND @max_row 17059ON DUPLICATE KEY 17060UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17061f_int2 = 2 * @max_row + source_tab.f_int1, 17062f_charbig = 'was updated'; 17063 17064# check unique-1-a success: 1 17065 17066# check unique-1-b success: 1 17067DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17068UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17069f_int2 = CAST(f_char1 AS SIGNED INT), 17070f_charbig = CONCAT('===',f_char1,'===') 17071WHERE f_charbig = 'was updated'; 17072REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17073SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17074 FROM t0_template source_tab 17075WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17076 17077# check replace success: 1 17078DELETE FROM t1 17079WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17080DELETE FROM t1 17081WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17082f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17083UPDATE t1 SET f_int2 = f_int1, 17084f_char1 = CAST(f_int1 AS CHAR), 17085f_char2 = CAST(f_int1 AS CHAR), 17086f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17087WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17088SET AUTOCOMMIT= 0; 17089INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17090SELECT f_int1, f_int1, '', '', 'was inserted' 17091FROM t0_template source_tab 17092WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17093 17094# check transactions-1 success: 1 17095COMMIT WORK; 17096 17097# check transactions-2 success: 1 17098ROLLBACK WORK; 17099 17100# check transactions-3 success: 1 17101DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17102COMMIT WORK; 17103ROLLBACK WORK; 17104 17105# check transactions-4 success: 1 17106INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17107SELECT f_int1, f_int1, '', '', 'was inserted' 17108FROM t0_template source_tab 17109WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17110 17111# check transactions-5 success: 1 17112ROLLBACK WORK; 17113 17114# check transactions-6 success: 1 17115# INFO: Storage engine used for t1 seems to be transactional. 17116COMMIT; 17117 17118# check transactions-7 success: 1 17119DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17120COMMIT WORK; 17121SET @@session.sql_mode = 'traditional'; 17122Warnings: 17123Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17124SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17125INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17126SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17127'', '', 'was inserted' FROM t0_template 17128WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17129ERROR 22012: Division by 0 17130COMMIT; 17131 17132# check transactions-8 success: 1 17133# INFO: Storage engine used for t1 seems to be able to revert 17134# changes made by the failing statement. 17135SET @@session.sql_mode = ''; 17136Warnings: 17137Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17138SET AUTOCOMMIT= 1; 17139DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17140COMMIT WORK; 17141UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17142 17143# check special-1 success: 1 17144UPDATE t1 SET f_charbig = ''; 17145 17146# check special-2 success: 1 17147UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17148INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17149SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17150WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17151INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17152SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17153'just inserted' FROM t0_template 17154WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17155CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17156BEGIN 17157UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17158f_charbig = 'updated by trigger' 17159 WHERE f_int1 = new.f_int1; 17160END| 17161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17162SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17163WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17164 17165# check trigger-1 success: 1 17166DROP TRIGGER trg_1; 17167UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17168f_int2 = CAST(f_char1 AS SIGNED INT), 17169f_charbig = 'just inserted' 17170 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17171DELETE FROM t0_aux 17172WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17173INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17174SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17175'just inserted' FROM t0_template 17176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17177CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17178BEGIN 17179UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17180f_charbig = 'updated by trigger' 17181 WHERE f_int1 = new.f_int1; 17182END| 17183INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17184SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17186 17187# check trigger-2 success: 1 17188DROP TRIGGER trg_1; 17189UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17190f_int2 = CAST(f_char1 AS SIGNED INT), 17191f_charbig = 'just inserted' 17192 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17193DELETE FROM t0_aux 17194WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17195INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17196SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17197'just inserted' FROM t0_template 17198WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17199CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17200BEGIN 17201UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17202f_charbig = 'updated by trigger' 17203 WHERE f_int1 = new.f_int1; 17204END| 17205UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17206WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17207 17208# check trigger-3 success: 1 17209DROP TRIGGER trg_1; 17210UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17211f_int2 = CAST(f_char1 AS SIGNED INT), 17212f_charbig = 'just inserted' 17213 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17214DELETE FROM t0_aux 17215WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17216INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17217SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17218'just inserted' FROM t0_template 17219WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17220CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17221BEGIN 17222UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17223f_charbig = 'updated by trigger' 17224 WHERE f_int1 = - old.f_int1; 17225END| 17226UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17227WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17228 17229# check trigger-4 success: 1 17230DROP TRIGGER trg_1; 17231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17232f_int2 = CAST(f_char1 AS SIGNED INT), 17233f_charbig = 'just inserted' 17234 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17235DELETE FROM t0_aux 17236WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17237INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17238SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17239'just inserted' FROM t0_template 17240WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17241CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17242BEGIN 17243UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17244f_charbig = 'updated by trigger' 17245 WHERE f_int1 = new.f_int1; 17246END| 17247UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17248WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17249 17250# check trigger-5 success: 1 17251DROP TRIGGER trg_1; 17252UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17253f_int2 = CAST(f_char1 AS SIGNED INT), 17254f_charbig = 'just inserted' 17255 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17256DELETE FROM t0_aux 17257WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17258INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17259SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17260'just inserted' FROM t0_template 17261WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17262CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17263BEGIN 17264UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17265f_charbig = 'updated by trigger' 17266 WHERE f_int1 = - old.f_int1; 17267END| 17268UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17269WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17270 17271# check trigger-6 success: 1 17272DROP TRIGGER trg_1; 17273UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17274f_int2 = CAST(f_char1 AS SIGNED INT), 17275f_charbig = 'just inserted' 17276 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17277DELETE FROM t0_aux 17278WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17279INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17280SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17281'just inserted' FROM t0_template 17282WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17283CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17284BEGIN 17285UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17286f_charbig = 'updated by trigger' 17287 WHERE f_int1 = - old.f_int1; 17288END| 17289DELETE FROM t0_aux 17290WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17291 17292# check trigger-7 success: 1 17293DROP TRIGGER trg_1; 17294UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17295f_int2 = CAST(f_char1 AS SIGNED INT), 17296f_charbig = 'just inserted' 17297 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17298DELETE FROM t0_aux 17299WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17300INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17301SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17302'just inserted' FROM t0_template 17303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17304CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17305BEGIN 17306UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17307f_charbig = 'updated by trigger' 17308 WHERE f_int1 = - old.f_int1; 17309END| 17310DELETE FROM t0_aux 17311WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17312 17313# check trigger-8 success: 1 17314DROP TRIGGER trg_1; 17315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17316f_int2 = CAST(f_char1 AS SIGNED INT), 17317f_charbig = 'just inserted' 17318 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17319DELETE FROM t0_aux 17320WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17321DELETE FROM t1 17322WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17323CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17324BEGIN 17325SET new.f_int1 = old.f_int1 + @max_row, 17326new.f_int2 = old.f_int2 - @max_row, 17327new.f_charbig = '####updated per update trigger####'; 17328END| 17329UPDATE t1 17330SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17331f_charbig = '####updated per update statement itself####'; 17332 17333# check trigger-9 success: 1 17334DROP TRIGGER trg_2; 17335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17336f_int2 = CAST(f_char1 AS SIGNED INT), 17337f_charbig = CONCAT('===',f_char1,'==='); 17338CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17339BEGIN 17340SET new.f_int1 = new.f_int1 + @max_row, 17341new.f_int2 = new.f_int2 - @max_row, 17342new.f_charbig = '####updated per update trigger####'; 17343END| 17344UPDATE t1 17345SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17346f_charbig = '####updated per update statement itself####'; 17347 17348# check trigger-10 success: 1 17349DROP TRIGGER trg_2; 17350UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17351f_int2 = CAST(f_char1 AS SIGNED INT), 17352f_charbig = CONCAT('===',f_char1,'==='); 17353CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17354BEGIN 17355SET new.f_int1 = @my_max1 + @counter, 17356new.f_int2 = @my_min2 - @counter, 17357new.f_charbig = '####updated per insert trigger####'; 17358SET @counter = @counter + 1; 17359END| 17360SET @counter = 1; 17361SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17362INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17363SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17364CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17365WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17366ORDER BY f_int1; 17367DROP TRIGGER trg_3; 17368 17369# check trigger-11 success: 1 17370DELETE FROM t1 17371WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17372AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17373AND f_charbig = '####updated per insert trigger####'; 17374CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17375BEGIN 17376SET new.f_int1 = @my_max1 + @counter, 17377new.f_int2 = @my_min2 - @counter, 17378new.f_charbig = '####updated per insert trigger####'; 17379SET @counter = @counter + 1; 17380END| 17381SET @counter = 1; 17382SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17383INSERT INTO t1 (f_char1, f_char2, f_charbig) 17384SELECT CAST(f_int1 AS CHAR), 17385CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17387ORDER BY f_int1; 17388DROP TRIGGER trg_3; 17389 17390# check trigger-12 success: 1 17391DELETE FROM t1 17392WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17393AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17394AND f_charbig = '####updated per insert trigger####'; 17395ANALYZE TABLE t1; 17396Table Op Msg_type Msg_text 17397test.t1 analyze status OK 17398CHECK TABLE t1 EXTENDED; 17399Table Op Msg_type Msg_text 17400test.t1 check status OK 17401CHECKSUM TABLE t1 EXTENDED; 17402Table Checksum 17403test.t1 <some_value> 17404OPTIMIZE TABLE t1; 17405Table Op Msg_type Msg_text 17406test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 17407test.t1 optimize status OK 17408# check layout success: 1 17409REPAIR TABLE t1 EXTENDED; 17410Table Op Msg_type Msg_text 17411test.t1 repair status OK 17412# check layout success: 1 17413TRUNCATE t1; 17414 17415# check TRUNCATE success: 1 17416# check layout success: 1 17417# End usability test (inc/partition_check.inc) 17418DROP TABLE t1; 17419CREATE TABLE t1 ( 17420f_int1 INTEGER, 17421f_int2 INTEGER, 17422f_char1 CHAR(20), 17423f_char2 CHAR(20), 17424f_charbig VARCHAR(1000) 17425, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 17426) 17427PARTITION BY RANGE(f_int1) 17428(PARTITION parta VALUES LESS THAN (0), 17429PARTITION partb VALUES LESS THAN (5), 17430PARTITION partc VALUES LESS THAN (10), 17431PARTITION partd VALUES LESS THAN (10 + 5), 17432PARTITION parte VALUES LESS THAN (20), 17433PARTITION partf VALUES LESS THAN (2147483646)); 17434INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17435SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 17436# Start usability test (inc/partition_check.inc) 17437create_command 17438SHOW CREATE TABLE t1; 17439Table Create Table 17440t1 CREATE TABLE `t1` ( 17441 `f_int1` int(11) DEFAULT NULL, 17442 `f_int2` int(11) DEFAULT NULL, 17443 `f_char1` char(20) DEFAULT NULL, 17444 `f_char2` char(20) DEFAULT NULL, 17445 `f_charbig` varchar(1000) DEFAULT NULL, 17446 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 17447 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 17448) ENGINE=InnoDB DEFAULT CHARSET=latin1 17449/*!50100 PARTITION BY RANGE (f_int1) 17450(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 17451 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 17452 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 17453 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 17454 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 17455 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 17456 17457unified filelist 17458t1#P#parta.ibd 17459t1#P#partb.ibd 17460t1#P#partc.ibd 17461t1#P#partd.ibd 17462t1#P#parte.ibd 17463t1#P#partf.ibd 17464t1.frm 17465 17466# check prerequisites-1 success: 1 17467# check COUNT(*) success: 1 17468# check MIN/MAX(f_int1) success: 1 17469# check MIN/MAX(f_int2) success: 1 17470INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17471SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17472CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17473WHERE f_int1 IN (2,3); 17474ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 17475# check prerequisites-3 success: 1 17476# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 17477INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17478SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17479CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17480WHERE f_int1 IN (2,3); 17481DELETE FROM t1 WHERE f_charbig = 'delete me'; 17482INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17483SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17484CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17485WHERE f_int1 IN (2,3); 17486DELETE FROM t1 WHERE f_charbig = 'delete me'; 17487# check read via f_int1 success: 1 17488# check read via f_int2 success: 1 17489 17490# check multiple-1 success: 1 17491DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17492 17493# check multiple-2 success: 1 17494INSERT INTO t1 SELECT * FROM t0_template 17495WHERE MOD(f_int1,3) = 0; 17496 17497# check multiple-3 success: 1 17498UPDATE t1 SET f_int1 = f_int1 + @max_row 17499WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17500AND @max_row_div2 + @max_row_div4; 17501 17502# check multiple-4 success: 1 17503DELETE FROM t1 17504WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17505AND @max_row_div2 + @max_row_div4 + @max_row; 17506 17507# check multiple-5 success: 1 17508SELECT COUNT(*) INTO @try_count FROM t0_template 17509WHERE MOD(f_int1,3) = 0 17510AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17511SELECT COUNT(*) INTO @clash_count 17512FROM t1 INNER JOIN t0_template USING(f_int1) 17513WHERE MOD(f_int1,3) = 0 17514AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17515SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17516INSERT INTO t1 17517SET f_int1 = @cur_value , f_int2 = @cur_value, 17518f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17519f_charbig = '#SINGLE#'; 17520 17521# check single-1 success: 1 17522SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17523INSERT INTO t1 17524SET f_int1 = @cur_value , f_int2 = @cur_value, 17525f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17526f_charbig = '#SINGLE#'; 17527 17528# check single-2 success: 1 17529SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17530SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17531UPDATE t1 SET f_int1 = @cur_value2 17532WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17533 17534# check single-3 success: 1 17535SET @cur_value1= -1; 17536SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17537UPDATE t1 SET f_int1 = @cur_value1 17538WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17539 17540# check single-4 success: 1 17541SELECT MAX(f_int1) INTO @cur_value FROM t1; 17542DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17543 17544# check single-5 success: 1 17545DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17546 17547# check single-6 success: 1 17548INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17549ERROR HY000: Table has no partition for value 2147483647 17550DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17551INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17552f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17553f_charbig = '#NULL#'; 17554INSERT INTO t1 17555SET f_int1 = NULL , f_int2 = -@max_row, 17556f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17557f_charbig = '#NULL#'; 17558# check null success: 1 17559 17560# check null-1 success: 1 17561UPDATE t1 SET f_int1 = -@max_row 17562WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17563AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17564 17565# check null-2 success: 1 17566UPDATE t1 SET f_int1 = NULL 17567WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17568AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17569 17570# check null-3 success: 1 17571DELETE FROM t1 17572WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17573AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17574 17575# check null-4 success: 1 17576DELETE FROM t1 17577WHERE f_int1 = 0 AND f_int2 = 0 17578AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17579AND f_charbig = '#NULL#'; 17580INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17581SELECT f_int1, f_int1, '', '', 'was inserted' 17582 FROM t0_template source_tab 17583WHERE MOD(f_int1,3) = 0 17584AND f_int1 BETWEEN @max_row_div2 AND @max_row 17585ON DUPLICATE KEY 17586UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17587f_int2 = 2 * @max_row + source_tab.f_int1, 17588f_charbig = 'was updated'; 17589 17590# check unique-1-a success: 1 17591 17592# check unique-1-b success: 1 17593DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17594UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17595f_int2 = CAST(f_char1 AS SIGNED INT), 17596f_charbig = CONCAT('===',f_char1,'===') 17597WHERE f_charbig = 'was updated'; 17598REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17599SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17600 FROM t0_template source_tab 17601WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17602 17603# check replace success: 1 17604DELETE FROM t1 17605WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17606DELETE FROM t1 17607WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17608f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17609UPDATE t1 SET f_int2 = f_int1, 17610f_char1 = CAST(f_int1 AS CHAR), 17611f_char2 = CAST(f_int1 AS CHAR), 17612f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17613WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17614SET AUTOCOMMIT= 0; 17615INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17616SELECT f_int1, f_int1, '', '', 'was inserted' 17617FROM t0_template source_tab 17618WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17619 17620# check transactions-1 success: 1 17621COMMIT WORK; 17622 17623# check transactions-2 success: 1 17624ROLLBACK WORK; 17625 17626# check transactions-3 success: 1 17627DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17628COMMIT WORK; 17629ROLLBACK WORK; 17630 17631# check transactions-4 success: 1 17632INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17633SELECT f_int1, f_int1, '', '', 'was inserted' 17634FROM t0_template source_tab 17635WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17636 17637# check transactions-5 success: 1 17638ROLLBACK WORK; 17639 17640# check transactions-6 success: 1 17641# INFO: Storage engine used for t1 seems to be transactional. 17642COMMIT; 17643 17644# check transactions-7 success: 1 17645DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17646COMMIT WORK; 17647SET @@session.sql_mode = 'traditional'; 17648Warnings: 17649Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17650SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17651INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17652SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17653'', '', 'was inserted' FROM t0_template 17654WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17655ERROR 22012: Division by 0 17656COMMIT; 17657 17658# check transactions-8 success: 1 17659# INFO: Storage engine used for t1 seems to be able to revert 17660# changes made by the failing statement. 17661SET @@session.sql_mode = ''; 17662Warnings: 17663Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17664SET AUTOCOMMIT= 1; 17665DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17666COMMIT WORK; 17667UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17668 17669# check special-1 success: 1 17670UPDATE t1 SET f_charbig = ''; 17671 17672# check special-2 success: 1 17673UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17674INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17675SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17677INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17678SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17679'just inserted' FROM t0_template 17680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17681CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17682BEGIN 17683UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17684f_charbig = 'updated by trigger' 17685 WHERE f_int1 = new.f_int1; 17686END| 17687INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17688SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17690 17691# check trigger-1 success: 1 17692DROP TRIGGER trg_1; 17693UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17694f_int2 = CAST(f_char1 AS SIGNED INT), 17695f_charbig = 'just inserted' 17696 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17697DELETE FROM t0_aux 17698WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17699INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17700SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17701'just inserted' FROM t0_template 17702WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17703CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17704BEGIN 17705UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17706f_charbig = 'updated by trigger' 17707 WHERE f_int1 = new.f_int1; 17708END| 17709INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17710SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17711WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17712 17713# check trigger-2 success: 1 17714DROP TRIGGER trg_1; 17715UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17716f_int2 = CAST(f_char1 AS SIGNED INT), 17717f_charbig = 'just inserted' 17718 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17719DELETE FROM t0_aux 17720WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17721INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17722SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17723'just inserted' FROM t0_template 17724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17725CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17726BEGIN 17727UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17728f_charbig = 'updated by trigger' 17729 WHERE f_int1 = new.f_int1; 17730END| 17731UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17732WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17733 17734# check trigger-3 success: 1 17735DROP TRIGGER trg_1; 17736UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17737f_int2 = CAST(f_char1 AS SIGNED INT), 17738f_charbig = 'just inserted' 17739 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17740DELETE FROM t0_aux 17741WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17742INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17743SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17744'just inserted' FROM t0_template 17745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17746CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17747BEGIN 17748UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17749f_charbig = 'updated by trigger' 17750 WHERE f_int1 = - old.f_int1; 17751END| 17752UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17753WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17754 17755# check trigger-4 success: 1 17756DROP TRIGGER trg_1; 17757UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17758f_int2 = CAST(f_char1 AS SIGNED INT), 17759f_charbig = 'just inserted' 17760 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17761DELETE FROM t0_aux 17762WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17763INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17764SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17765'just inserted' FROM t0_template 17766WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17767CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17768BEGIN 17769UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17770f_charbig = 'updated by trigger' 17771 WHERE f_int1 = new.f_int1; 17772END| 17773UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17774WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17775 17776# check trigger-5 success: 1 17777DROP TRIGGER trg_1; 17778UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17779f_int2 = CAST(f_char1 AS SIGNED INT), 17780f_charbig = 'just inserted' 17781 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17782DELETE FROM t0_aux 17783WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17784INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17785SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17786'just inserted' FROM t0_template 17787WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17788CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17789BEGIN 17790UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17791f_charbig = 'updated by trigger' 17792 WHERE f_int1 = - old.f_int1; 17793END| 17794UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17795WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17796 17797# check trigger-6 success: 1 17798DROP TRIGGER trg_1; 17799UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17800f_int2 = CAST(f_char1 AS SIGNED INT), 17801f_charbig = 'just inserted' 17802 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17803DELETE FROM t0_aux 17804WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17805INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17806SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17807'just inserted' FROM t0_template 17808WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17809CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17810BEGIN 17811UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17812f_charbig = 'updated by trigger' 17813 WHERE f_int1 = - old.f_int1; 17814END| 17815DELETE FROM t0_aux 17816WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17817 17818# check trigger-7 success: 1 17819DROP TRIGGER trg_1; 17820UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17821f_int2 = CAST(f_char1 AS SIGNED INT), 17822f_charbig = 'just inserted' 17823 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17824DELETE FROM t0_aux 17825WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17826INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17827SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17828'just inserted' FROM t0_template 17829WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17830CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17831BEGIN 17832UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17833f_charbig = 'updated by trigger' 17834 WHERE f_int1 = - old.f_int1; 17835END| 17836DELETE FROM t0_aux 17837WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17838 17839# check trigger-8 success: 1 17840DROP TRIGGER trg_1; 17841UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17842f_int2 = CAST(f_char1 AS SIGNED INT), 17843f_charbig = 'just inserted' 17844 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17845DELETE FROM t0_aux 17846WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17847DELETE FROM t1 17848WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17849CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17850BEGIN 17851SET new.f_int1 = old.f_int1 + @max_row, 17852new.f_int2 = old.f_int2 - @max_row, 17853new.f_charbig = '####updated per update trigger####'; 17854END| 17855UPDATE t1 17856SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17857f_charbig = '####updated per update statement itself####'; 17858 17859# check trigger-9 success: 1 17860DROP TRIGGER trg_2; 17861UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17862f_int2 = CAST(f_char1 AS SIGNED INT), 17863f_charbig = CONCAT('===',f_char1,'==='); 17864CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17865BEGIN 17866SET new.f_int1 = new.f_int1 + @max_row, 17867new.f_int2 = new.f_int2 - @max_row, 17868new.f_charbig = '####updated per update trigger####'; 17869END| 17870UPDATE t1 17871SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17872f_charbig = '####updated per update statement itself####'; 17873 17874# check trigger-10 success: 1 17875DROP TRIGGER trg_2; 17876UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17877f_int2 = CAST(f_char1 AS SIGNED INT), 17878f_charbig = CONCAT('===',f_char1,'==='); 17879CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17880BEGIN 17881SET new.f_int1 = @my_max1 + @counter, 17882new.f_int2 = @my_min2 - @counter, 17883new.f_charbig = '####updated per insert trigger####'; 17884SET @counter = @counter + 1; 17885END| 17886SET @counter = 1; 17887SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17888INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17889SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17890CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17892ORDER BY f_int1; 17893DROP TRIGGER trg_3; 17894 17895# check trigger-11 success: 1 17896DELETE FROM t1 17897WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17898AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17899AND f_charbig = '####updated per insert trigger####'; 17900CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17901BEGIN 17902SET new.f_int1 = @my_max1 + @counter, 17903new.f_int2 = @my_min2 - @counter, 17904new.f_charbig = '####updated per insert trigger####'; 17905SET @counter = @counter + 1; 17906END| 17907SET @counter = 1; 17908SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17909INSERT INTO t1 (f_char1, f_char2, f_charbig) 17910SELECT CAST(f_int1 AS CHAR), 17911CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17913ORDER BY f_int1; 17914DROP TRIGGER trg_3; 17915 17916# check trigger-12 success: 1 17917DELETE FROM t1 17918WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17919AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17920AND f_charbig = '####updated per insert trigger####'; 17921ANALYZE TABLE t1; 17922Table Op Msg_type Msg_text 17923test.t1 analyze status OK 17924CHECK TABLE t1 EXTENDED; 17925Table Op Msg_type Msg_text 17926test.t1 check status OK 17927CHECKSUM TABLE t1 EXTENDED; 17928Table Checksum 17929test.t1 <some_value> 17930OPTIMIZE TABLE t1; 17931Table Op Msg_type Msg_text 17932test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 17933test.t1 optimize status OK 17934# check layout success: 1 17935REPAIR TABLE t1 EXTENDED; 17936Table Op Msg_type Msg_text 17937test.t1 repair status OK 17938# check layout success: 1 17939TRUNCATE t1; 17940 17941# check TRUNCATE success: 1 17942# check layout success: 1 17943# End usability test (inc/partition_check.inc) 17944DROP TABLE t1; 17945CREATE TABLE t1 ( 17946f_int1 INTEGER, 17947f_int2 INTEGER, 17948f_char1 CHAR(20), 17949f_char2 CHAR(20), 17950f_charbig VARCHAR(1000) 17951, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 17952) 17953PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 17954(PARTITION parta VALUES LESS THAN (0), 17955PARTITION partb VALUES LESS THAN (5), 17956PARTITION partc VALUES LESS THAN (10), 17957PARTITION partd VALUES LESS THAN (2147483646)); 17958INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17959SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 17960# Start usability test (inc/partition_check.inc) 17961create_command 17962SHOW CREATE TABLE t1; 17963Table Create Table 17964t1 CREATE TABLE `t1` ( 17965 `f_int1` int(11) DEFAULT NULL, 17966 `f_int2` int(11) DEFAULT NULL, 17967 `f_char1` char(20) DEFAULT NULL, 17968 `f_char2` char(20) DEFAULT NULL, 17969 `f_charbig` varchar(1000) DEFAULT NULL, 17970 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 17971 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 17972) ENGINE=InnoDB DEFAULT CHARSET=latin1 17973/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 17974SUBPARTITION BY HASH (f_int1) 17975SUBPARTITIONS 2 17976(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 17977 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 17978 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 17979 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 17980 17981unified filelist 17982t1#P#parta#SP#partasp0.ibd 17983t1#P#parta#SP#partasp1.ibd 17984t1#P#partb#SP#partbsp0.ibd 17985t1#P#partb#SP#partbsp1.ibd 17986t1#P#partc#SP#partcsp0.ibd 17987t1#P#partc#SP#partcsp1.ibd 17988t1#P#partd#SP#partdsp0.ibd 17989t1#P#partd#SP#partdsp1.ibd 17990t1.frm 17991 17992# check prerequisites-1 success: 1 17993# check COUNT(*) success: 1 17994# check MIN/MAX(f_int1) success: 1 17995# check MIN/MAX(f_int2) success: 1 17996INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17997SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17998CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17999WHERE f_int1 IN (2,3); 18000ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18001# check prerequisites-3 success: 1 18002# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18003INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18004SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18005CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18006WHERE f_int1 IN (2,3); 18007DELETE FROM t1 WHERE f_charbig = 'delete me'; 18008INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18009SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18010CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18011WHERE f_int1 IN (2,3); 18012DELETE FROM t1 WHERE f_charbig = 'delete me'; 18013# check read via f_int1 success: 1 18014# check read via f_int2 success: 1 18015 18016# check multiple-1 success: 1 18017DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18018 18019# check multiple-2 success: 1 18020INSERT INTO t1 SELECT * FROM t0_template 18021WHERE MOD(f_int1,3) = 0; 18022 18023# check multiple-3 success: 1 18024UPDATE t1 SET f_int1 = f_int1 + @max_row 18025WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18026AND @max_row_div2 + @max_row_div4; 18027 18028# check multiple-4 success: 1 18029DELETE FROM t1 18030WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18031AND @max_row_div2 + @max_row_div4 + @max_row; 18032 18033# check multiple-5 success: 1 18034SELECT COUNT(*) INTO @try_count FROM t0_template 18035WHERE MOD(f_int1,3) = 0 18036AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18037SELECT COUNT(*) INTO @clash_count 18038FROM t1 INNER JOIN t0_template USING(f_int1) 18039WHERE MOD(f_int1,3) = 0 18040AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18041SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18042INSERT INTO t1 18043SET f_int1 = @cur_value , f_int2 = @cur_value, 18044f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18045f_charbig = '#SINGLE#'; 18046 18047# check single-1 success: 1 18048SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18049INSERT INTO t1 18050SET f_int1 = @cur_value , f_int2 = @cur_value, 18051f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18052f_charbig = '#SINGLE#'; 18053 18054# check single-2 success: 1 18055SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18056SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18057UPDATE t1 SET f_int1 = @cur_value2 18058WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18059 18060# check single-3 success: 1 18061SET @cur_value1= -1; 18062SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18063UPDATE t1 SET f_int1 = @cur_value1 18064WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18065 18066# check single-4 success: 1 18067SELECT MAX(f_int1) INTO @cur_value FROM t1; 18068DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18069 18070# check single-5 success: 1 18071DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18072 18073# check single-6 success: 1 18074INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18075 18076# check single-7 success: 1 18077DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18078DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18079INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18080f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18081f_charbig = '#NULL#'; 18082INSERT INTO t1 18083SET f_int1 = NULL , f_int2 = -@max_row, 18084f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18085f_charbig = '#NULL#'; 18086# check null success: 1 18087 18088# check null-1 success: 1 18089UPDATE t1 SET f_int1 = -@max_row 18090WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18091AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18092 18093# check null-2 success: 1 18094UPDATE t1 SET f_int1 = NULL 18095WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18096AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18097 18098# check null-3 success: 1 18099DELETE FROM t1 18100WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18101AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18102 18103# check null-4 success: 1 18104DELETE FROM t1 18105WHERE f_int1 = 0 AND f_int2 = 0 18106AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18107AND f_charbig = '#NULL#'; 18108INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18109SELECT f_int1, f_int1, '', '', 'was inserted' 18110 FROM t0_template source_tab 18111WHERE MOD(f_int1,3) = 0 18112AND f_int1 BETWEEN @max_row_div2 AND @max_row 18113ON DUPLICATE KEY 18114UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18115f_int2 = 2 * @max_row + source_tab.f_int1, 18116f_charbig = 'was updated'; 18117 18118# check unique-1-a success: 1 18119 18120# check unique-1-b success: 1 18121DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18122UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18123f_int2 = CAST(f_char1 AS SIGNED INT), 18124f_charbig = CONCAT('===',f_char1,'===') 18125WHERE f_charbig = 'was updated'; 18126REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18127SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18128 FROM t0_template source_tab 18129WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18130 18131# check replace success: 1 18132DELETE FROM t1 18133WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18134DELETE FROM t1 18135WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18136f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18137UPDATE t1 SET f_int2 = f_int1, 18138f_char1 = CAST(f_int1 AS CHAR), 18139f_char2 = CAST(f_int1 AS CHAR), 18140f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18141WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18142SET AUTOCOMMIT= 0; 18143INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18144SELECT f_int1, f_int1, '', '', 'was inserted' 18145FROM t0_template source_tab 18146WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18147 18148# check transactions-1 success: 1 18149COMMIT WORK; 18150 18151# check transactions-2 success: 1 18152ROLLBACK WORK; 18153 18154# check transactions-3 success: 1 18155DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18156COMMIT WORK; 18157ROLLBACK WORK; 18158 18159# check transactions-4 success: 1 18160INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18161SELECT f_int1, f_int1, '', '', 'was inserted' 18162FROM t0_template source_tab 18163WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18164 18165# check transactions-5 success: 1 18166ROLLBACK WORK; 18167 18168# check transactions-6 success: 1 18169# INFO: Storage engine used for t1 seems to be transactional. 18170COMMIT; 18171 18172# check transactions-7 success: 1 18173DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18174COMMIT WORK; 18175SET @@session.sql_mode = 'traditional'; 18176Warnings: 18177Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18178SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18179INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18180SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18181'', '', 'was inserted' FROM t0_template 18182WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18183ERROR 22012: Division by 0 18184COMMIT; 18185 18186# check transactions-8 success: 1 18187# INFO: Storage engine used for t1 seems to be able to revert 18188# changes made by the failing statement. 18189SET @@session.sql_mode = ''; 18190Warnings: 18191Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18192SET AUTOCOMMIT= 1; 18193DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18194COMMIT WORK; 18195UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18196 18197# check special-1 success: 1 18198UPDATE t1 SET f_charbig = ''; 18199 18200# check special-2 success: 1 18201UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18202INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18203SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18205INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18206SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18207'just inserted' FROM t0_template 18208WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18209CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18210BEGIN 18211UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18212f_charbig = 'updated by trigger' 18213 WHERE f_int1 = new.f_int1; 18214END| 18215INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18216SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18217WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18218 18219# check trigger-1 success: 1 18220DROP TRIGGER trg_1; 18221UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18222f_int2 = CAST(f_char1 AS SIGNED INT), 18223f_charbig = 'just inserted' 18224 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18225DELETE FROM t0_aux 18226WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18227INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18228SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18229'just inserted' FROM t0_template 18230WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18231CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18232BEGIN 18233UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18234f_charbig = 'updated by trigger' 18235 WHERE f_int1 = new.f_int1; 18236END| 18237INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18238SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18239WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18240 18241# check trigger-2 success: 1 18242DROP TRIGGER trg_1; 18243UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18244f_int2 = CAST(f_char1 AS SIGNED INT), 18245f_charbig = 'just inserted' 18246 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18247DELETE FROM t0_aux 18248WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18250SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18251'just inserted' FROM t0_template 18252WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18253CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18254BEGIN 18255UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18256f_charbig = 'updated by trigger' 18257 WHERE f_int1 = new.f_int1; 18258END| 18259UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18260WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18261 18262# check trigger-3 success: 1 18263DROP TRIGGER trg_1; 18264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18265f_int2 = CAST(f_char1 AS SIGNED INT), 18266f_charbig = 'just inserted' 18267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18268DELETE FROM t0_aux 18269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18270INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18271SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18272'just inserted' FROM t0_template 18273WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18274CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18275BEGIN 18276UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18277f_charbig = 'updated by trigger' 18278 WHERE f_int1 = - old.f_int1; 18279END| 18280UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18281WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18282 18283# check trigger-4 success: 1 18284DROP TRIGGER trg_1; 18285UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18286f_int2 = CAST(f_char1 AS SIGNED INT), 18287f_charbig = 'just inserted' 18288 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18289DELETE FROM t0_aux 18290WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18291INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18292SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18293'just inserted' FROM t0_template 18294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18295CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18296BEGIN 18297UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18298f_charbig = 'updated by trigger' 18299 WHERE f_int1 = new.f_int1; 18300END| 18301UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18302WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18303 18304# check trigger-5 success: 1 18305DROP TRIGGER trg_1; 18306UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18307f_int2 = CAST(f_char1 AS SIGNED INT), 18308f_charbig = 'just inserted' 18309 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18310DELETE FROM t0_aux 18311WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18312INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18313SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18314'just inserted' FROM t0_template 18315WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18316CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18317BEGIN 18318UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18319f_charbig = 'updated by trigger' 18320 WHERE f_int1 = - old.f_int1; 18321END| 18322UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18323WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18324 18325# check trigger-6 success: 1 18326DROP TRIGGER trg_1; 18327UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18328f_int2 = CAST(f_char1 AS SIGNED INT), 18329f_charbig = 'just inserted' 18330 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18331DELETE FROM t0_aux 18332WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18333INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18334SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18335'just inserted' FROM t0_template 18336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18337CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18338BEGIN 18339UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18340f_charbig = 'updated by trigger' 18341 WHERE f_int1 = - old.f_int1; 18342END| 18343DELETE FROM t0_aux 18344WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18345 18346# check trigger-7 success: 1 18347DROP TRIGGER trg_1; 18348UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18349f_int2 = CAST(f_char1 AS SIGNED INT), 18350f_charbig = 'just inserted' 18351 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18352DELETE FROM t0_aux 18353WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18354INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18355SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18356'just inserted' FROM t0_template 18357WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18358CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18359BEGIN 18360UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18361f_charbig = 'updated by trigger' 18362 WHERE f_int1 = - old.f_int1; 18363END| 18364DELETE FROM t0_aux 18365WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18366 18367# check trigger-8 success: 1 18368DROP TRIGGER trg_1; 18369UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18370f_int2 = CAST(f_char1 AS SIGNED INT), 18371f_charbig = 'just inserted' 18372 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18373DELETE FROM t0_aux 18374WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18375DELETE FROM t1 18376WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18377CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18378BEGIN 18379SET new.f_int1 = old.f_int1 + @max_row, 18380new.f_int2 = old.f_int2 - @max_row, 18381new.f_charbig = '####updated per update trigger####'; 18382END| 18383UPDATE t1 18384SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18385f_charbig = '####updated per update statement itself####'; 18386 18387# check trigger-9 success: 1 18388DROP TRIGGER trg_2; 18389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18390f_int2 = CAST(f_char1 AS SIGNED INT), 18391f_charbig = CONCAT('===',f_char1,'==='); 18392CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18393BEGIN 18394SET new.f_int1 = new.f_int1 + @max_row, 18395new.f_int2 = new.f_int2 - @max_row, 18396new.f_charbig = '####updated per update trigger####'; 18397END| 18398UPDATE t1 18399SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18400f_charbig = '####updated per update statement itself####'; 18401 18402# check trigger-10 success: 1 18403DROP TRIGGER trg_2; 18404UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18405f_int2 = CAST(f_char1 AS SIGNED INT), 18406f_charbig = CONCAT('===',f_char1,'==='); 18407CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18408BEGIN 18409SET new.f_int1 = @my_max1 + @counter, 18410new.f_int2 = @my_min2 - @counter, 18411new.f_charbig = '####updated per insert trigger####'; 18412SET @counter = @counter + 1; 18413END| 18414SET @counter = 1; 18415SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18416INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18417SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18418CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18420ORDER BY f_int1; 18421DROP TRIGGER trg_3; 18422 18423# check trigger-11 success: 1 18424DELETE FROM t1 18425WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18426AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18427AND f_charbig = '####updated per insert trigger####'; 18428CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18429BEGIN 18430SET new.f_int1 = @my_max1 + @counter, 18431new.f_int2 = @my_min2 - @counter, 18432new.f_charbig = '####updated per insert trigger####'; 18433SET @counter = @counter + 1; 18434END| 18435SET @counter = 1; 18436SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18437INSERT INTO t1 (f_char1, f_char2, f_charbig) 18438SELECT CAST(f_int1 AS CHAR), 18439CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18440WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18441ORDER BY f_int1; 18442DROP TRIGGER trg_3; 18443 18444# check trigger-12 success: 1 18445DELETE FROM t1 18446WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18447AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18448AND f_charbig = '####updated per insert trigger####'; 18449ANALYZE TABLE t1; 18450Table Op Msg_type Msg_text 18451test.t1 analyze status OK 18452CHECK TABLE t1 EXTENDED; 18453Table Op Msg_type Msg_text 18454test.t1 check status OK 18455CHECKSUM TABLE t1 EXTENDED; 18456Table Checksum 18457test.t1 <some_value> 18458OPTIMIZE TABLE t1; 18459Table Op Msg_type Msg_text 18460test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 18461test.t1 optimize status OK 18462# check layout success: 1 18463REPAIR TABLE t1 EXTENDED; 18464Table Op Msg_type Msg_text 18465test.t1 repair status OK 18466# check layout success: 1 18467TRUNCATE t1; 18468 18469# check TRUNCATE success: 1 18470# check layout success: 1 18471# End usability test (inc/partition_check.inc) 18472DROP TABLE t1; 18473CREATE TABLE t1 ( 18474f_int1 INTEGER, 18475f_int2 INTEGER, 18476f_char1 CHAR(20), 18477f_char2 CHAR(20), 18478f_charbig VARCHAR(1000) 18479, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 18480) 18481PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 18482(PARTITION part1 VALUES LESS THAN (0) 18483(SUBPARTITION subpart11, SUBPARTITION subpart12), 18484PARTITION part2 VALUES LESS THAN (5) 18485(SUBPARTITION subpart21, SUBPARTITION subpart22), 18486PARTITION part3 VALUES LESS THAN (10) 18487(SUBPARTITION subpart31, SUBPARTITION subpart32), 18488PARTITION part4 VALUES LESS THAN (2147483646) 18489(SUBPARTITION subpart41, SUBPARTITION subpart42)); 18490INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18491SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 18492# Start usability test (inc/partition_check.inc) 18493create_command 18494SHOW CREATE TABLE t1; 18495Table Create Table 18496t1 CREATE TABLE `t1` ( 18497 `f_int1` int(11) DEFAULT NULL, 18498 `f_int2` int(11) DEFAULT NULL, 18499 `f_char1` char(20) DEFAULT NULL, 18500 `f_char2` char(20) DEFAULT NULL, 18501 `f_charbig` varchar(1000) DEFAULT NULL, 18502 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 18503 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 18504) ENGINE=InnoDB DEFAULT CHARSET=latin1 18505/*!50100 PARTITION BY RANGE (f_int1) 18506SUBPARTITION BY KEY (f_int1) 18507(PARTITION part1 VALUES LESS THAN (0) 18508 (SUBPARTITION subpart11 ENGINE = InnoDB, 18509 SUBPARTITION subpart12 ENGINE = InnoDB), 18510 PARTITION part2 VALUES LESS THAN (5) 18511 (SUBPARTITION subpart21 ENGINE = InnoDB, 18512 SUBPARTITION subpart22 ENGINE = InnoDB), 18513 PARTITION part3 VALUES LESS THAN (10) 18514 (SUBPARTITION subpart31 ENGINE = InnoDB, 18515 SUBPARTITION subpart32 ENGINE = InnoDB), 18516 PARTITION part4 VALUES LESS THAN (2147483646) 18517 (SUBPARTITION subpart41 ENGINE = InnoDB, 18518 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 18519 18520unified filelist 18521t1#P#part1#SP#subpart11.ibd 18522t1#P#part1#SP#subpart12.ibd 18523t1#P#part2#SP#subpart21.ibd 18524t1#P#part2#SP#subpart22.ibd 18525t1#P#part3#SP#subpart31.ibd 18526t1#P#part3#SP#subpart32.ibd 18527t1#P#part4#SP#subpart41.ibd 18528t1#P#part4#SP#subpart42.ibd 18529t1.frm 18530 18531# check prerequisites-1 success: 1 18532# check COUNT(*) success: 1 18533# check MIN/MAX(f_int1) success: 1 18534# check MIN/MAX(f_int2) success: 1 18535INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18536SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18537CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18538WHERE f_int1 IN (2,3); 18539ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18540# check prerequisites-3 success: 1 18541# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18542INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18543SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18544CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18545WHERE f_int1 IN (2,3); 18546DELETE FROM t1 WHERE f_charbig = 'delete me'; 18547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18548SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18549CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18550WHERE f_int1 IN (2,3); 18551DELETE FROM t1 WHERE f_charbig = 'delete me'; 18552# check read via f_int1 success: 1 18553# check read via f_int2 success: 1 18554 18555# check multiple-1 success: 1 18556DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18557 18558# check multiple-2 success: 1 18559INSERT INTO t1 SELECT * FROM t0_template 18560WHERE MOD(f_int1,3) = 0; 18561 18562# check multiple-3 success: 1 18563UPDATE t1 SET f_int1 = f_int1 + @max_row 18564WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18565AND @max_row_div2 + @max_row_div4; 18566 18567# check multiple-4 success: 1 18568DELETE FROM t1 18569WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18570AND @max_row_div2 + @max_row_div4 + @max_row; 18571 18572# check multiple-5 success: 1 18573SELECT COUNT(*) INTO @try_count FROM t0_template 18574WHERE MOD(f_int1,3) = 0 18575AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18576SELECT COUNT(*) INTO @clash_count 18577FROM t1 INNER JOIN t0_template USING(f_int1) 18578WHERE MOD(f_int1,3) = 0 18579AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18580SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18581INSERT INTO t1 18582SET f_int1 = @cur_value , f_int2 = @cur_value, 18583f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18584f_charbig = '#SINGLE#'; 18585 18586# check single-1 success: 1 18587SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18588INSERT INTO t1 18589SET f_int1 = @cur_value , f_int2 = @cur_value, 18590f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18591f_charbig = '#SINGLE#'; 18592 18593# check single-2 success: 1 18594SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18595SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18596UPDATE t1 SET f_int1 = @cur_value2 18597WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18598 18599# check single-3 success: 1 18600SET @cur_value1= -1; 18601SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18602UPDATE t1 SET f_int1 = @cur_value1 18603WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18604 18605# check single-4 success: 1 18606SELECT MAX(f_int1) INTO @cur_value FROM t1; 18607DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18608 18609# check single-5 success: 1 18610DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18611 18612# check single-6 success: 1 18613INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18614ERROR HY000: Table has no partition for value 2147483647 18615DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18616INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18617f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18618f_charbig = '#NULL#'; 18619INSERT INTO t1 18620SET f_int1 = NULL , f_int2 = -@max_row, 18621f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18622f_charbig = '#NULL#'; 18623# check null success: 1 18624 18625# check null-1 success: 1 18626UPDATE t1 SET f_int1 = -@max_row 18627WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18628AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18629 18630# check null-2 success: 1 18631UPDATE t1 SET f_int1 = NULL 18632WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18633AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18634 18635# check null-3 success: 1 18636DELETE FROM t1 18637WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18638AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18639 18640# check null-4 success: 1 18641DELETE FROM t1 18642WHERE f_int1 = 0 AND f_int2 = 0 18643AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18644AND f_charbig = '#NULL#'; 18645INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18646SELECT f_int1, f_int1, '', '', 'was inserted' 18647 FROM t0_template source_tab 18648WHERE MOD(f_int1,3) = 0 18649AND f_int1 BETWEEN @max_row_div2 AND @max_row 18650ON DUPLICATE KEY 18651UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18652f_int2 = 2 * @max_row + source_tab.f_int1, 18653f_charbig = 'was updated'; 18654 18655# check unique-1-a success: 1 18656 18657# check unique-1-b success: 1 18658DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18659UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18660f_int2 = CAST(f_char1 AS SIGNED INT), 18661f_charbig = CONCAT('===',f_char1,'===') 18662WHERE f_charbig = 'was updated'; 18663REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18664SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18665 FROM t0_template source_tab 18666WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18667 18668# check replace success: 1 18669DELETE FROM t1 18670WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18671DELETE FROM t1 18672WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18673f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18674UPDATE t1 SET f_int2 = f_int1, 18675f_char1 = CAST(f_int1 AS CHAR), 18676f_char2 = CAST(f_int1 AS CHAR), 18677f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18678WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18679SET AUTOCOMMIT= 0; 18680INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18681SELECT f_int1, f_int1, '', '', 'was inserted' 18682FROM t0_template source_tab 18683WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18684 18685# check transactions-1 success: 1 18686COMMIT WORK; 18687 18688# check transactions-2 success: 1 18689ROLLBACK WORK; 18690 18691# check transactions-3 success: 1 18692DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18693COMMIT WORK; 18694ROLLBACK WORK; 18695 18696# check transactions-4 success: 1 18697INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18698SELECT f_int1, f_int1, '', '', 'was inserted' 18699FROM t0_template source_tab 18700WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18701 18702# check transactions-5 success: 1 18703ROLLBACK WORK; 18704 18705# check transactions-6 success: 1 18706# INFO: Storage engine used for t1 seems to be transactional. 18707COMMIT; 18708 18709# check transactions-7 success: 1 18710DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18711COMMIT WORK; 18712SET @@session.sql_mode = 'traditional'; 18713Warnings: 18714Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18715SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18716INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18717SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18718'', '', 'was inserted' FROM t0_template 18719WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18720ERROR 22012: Division by 0 18721COMMIT; 18722 18723# check transactions-8 success: 1 18724# INFO: Storage engine used for t1 seems to be able to revert 18725# changes made by the failing statement. 18726SET @@session.sql_mode = ''; 18727Warnings: 18728Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18729SET AUTOCOMMIT= 1; 18730DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18731COMMIT WORK; 18732UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18733 18734# check special-1 success: 1 18735UPDATE t1 SET f_charbig = ''; 18736 18737# check special-2 success: 1 18738UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18739INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18740SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18741WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18742INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18743SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18744'just inserted' FROM t0_template 18745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18746CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18747BEGIN 18748UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18749f_charbig = 'updated by trigger' 18750 WHERE f_int1 = new.f_int1; 18751END| 18752INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18753SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18754WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18755 18756# check trigger-1 success: 1 18757DROP TRIGGER trg_1; 18758UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18759f_int2 = CAST(f_char1 AS SIGNED INT), 18760f_charbig = 'just inserted' 18761 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18762DELETE FROM t0_aux 18763WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18764INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18765SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18766'just inserted' FROM t0_template 18767WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18768CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18769BEGIN 18770UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18771f_charbig = 'updated by trigger' 18772 WHERE f_int1 = new.f_int1; 18773END| 18774INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18775SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18776WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18777 18778# check trigger-2 success: 1 18779DROP TRIGGER trg_1; 18780UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18781f_int2 = CAST(f_char1 AS SIGNED INT), 18782f_charbig = 'just inserted' 18783 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18784DELETE FROM t0_aux 18785WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18786INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18787SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18788'just inserted' FROM t0_template 18789WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18790CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18791BEGIN 18792UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18793f_charbig = 'updated by trigger' 18794 WHERE f_int1 = new.f_int1; 18795END| 18796UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18797WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18798 18799# check trigger-3 success: 1 18800DROP TRIGGER trg_1; 18801UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18802f_int2 = CAST(f_char1 AS SIGNED INT), 18803f_charbig = 'just inserted' 18804 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18805DELETE FROM t0_aux 18806WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18807INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18808SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18809'just inserted' FROM t0_template 18810WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18811CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18812BEGIN 18813UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18814f_charbig = 'updated by trigger' 18815 WHERE f_int1 = - old.f_int1; 18816END| 18817UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18818WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18819 18820# check trigger-4 success: 1 18821DROP TRIGGER trg_1; 18822UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18823f_int2 = CAST(f_char1 AS SIGNED INT), 18824f_charbig = 'just inserted' 18825 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18826DELETE FROM t0_aux 18827WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18828INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18829SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18830'just inserted' FROM t0_template 18831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18832CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18833BEGIN 18834UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18835f_charbig = 'updated by trigger' 18836 WHERE f_int1 = new.f_int1; 18837END| 18838UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18839WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18840 18841# check trigger-5 success: 1 18842DROP TRIGGER trg_1; 18843UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18844f_int2 = CAST(f_char1 AS SIGNED INT), 18845f_charbig = 'just inserted' 18846 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18847DELETE FROM t0_aux 18848WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18849INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18850SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18851'just inserted' FROM t0_template 18852WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18853CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18854BEGIN 18855UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18856f_charbig = 'updated by trigger' 18857 WHERE f_int1 = - old.f_int1; 18858END| 18859UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18860WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18861 18862# check trigger-6 success: 1 18863DROP TRIGGER trg_1; 18864UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18865f_int2 = CAST(f_char1 AS SIGNED INT), 18866f_charbig = 'just inserted' 18867 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18868DELETE FROM t0_aux 18869WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18870INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18871SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18872'just inserted' FROM t0_template 18873WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18874CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18875BEGIN 18876UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18877f_charbig = 'updated by trigger' 18878 WHERE f_int1 = - old.f_int1; 18879END| 18880DELETE FROM t0_aux 18881WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18882 18883# check trigger-7 success: 1 18884DROP TRIGGER trg_1; 18885UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18886f_int2 = CAST(f_char1 AS SIGNED INT), 18887f_charbig = 'just inserted' 18888 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18889DELETE FROM t0_aux 18890WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18891INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18892SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18893'just inserted' FROM t0_template 18894WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18895CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18896BEGIN 18897UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18898f_charbig = 'updated by trigger' 18899 WHERE f_int1 = - old.f_int1; 18900END| 18901DELETE FROM t0_aux 18902WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18903 18904# check trigger-8 success: 1 18905DROP TRIGGER trg_1; 18906UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18907f_int2 = CAST(f_char1 AS SIGNED INT), 18908f_charbig = 'just inserted' 18909 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18910DELETE FROM t0_aux 18911WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18912DELETE FROM t1 18913WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18914CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18915BEGIN 18916SET new.f_int1 = old.f_int1 + @max_row, 18917new.f_int2 = old.f_int2 - @max_row, 18918new.f_charbig = '####updated per update trigger####'; 18919END| 18920UPDATE t1 18921SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18922f_charbig = '####updated per update statement itself####'; 18923 18924# check trigger-9 success: 1 18925DROP TRIGGER trg_2; 18926UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18927f_int2 = CAST(f_char1 AS SIGNED INT), 18928f_charbig = CONCAT('===',f_char1,'==='); 18929CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18930BEGIN 18931SET new.f_int1 = new.f_int1 + @max_row, 18932new.f_int2 = new.f_int2 - @max_row, 18933new.f_charbig = '####updated per update trigger####'; 18934END| 18935UPDATE t1 18936SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18937f_charbig = '####updated per update statement itself####'; 18938 18939# check trigger-10 success: 1 18940DROP TRIGGER trg_2; 18941UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18942f_int2 = CAST(f_char1 AS SIGNED INT), 18943f_charbig = CONCAT('===',f_char1,'==='); 18944CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18945BEGIN 18946SET new.f_int1 = @my_max1 + @counter, 18947new.f_int2 = @my_min2 - @counter, 18948new.f_charbig = '####updated per insert trigger####'; 18949SET @counter = @counter + 1; 18950END| 18951SET @counter = 1; 18952SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18953INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18954SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18955CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18956WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18957ORDER BY f_int1; 18958DROP TRIGGER trg_3; 18959 18960# check trigger-11 success: 1 18961DELETE FROM t1 18962WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18963AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18964AND f_charbig = '####updated per insert trigger####'; 18965CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18966BEGIN 18967SET new.f_int1 = @my_max1 + @counter, 18968new.f_int2 = @my_min2 - @counter, 18969new.f_charbig = '####updated per insert trigger####'; 18970SET @counter = @counter + 1; 18971END| 18972SET @counter = 1; 18973SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18974INSERT INTO t1 (f_char1, f_char2, f_charbig) 18975SELECT CAST(f_int1 AS CHAR), 18976CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18977WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18978ORDER BY f_int1; 18979DROP TRIGGER trg_3; 18980 18981# check trigger-12 success: 1 18982DELETE FROM t1 18983WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18984AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18985AND f_charbig = '####updated per insert trigger####'; 18986ANALYZE TABLE t1; 18987Table Op Msg_type Msg_text 18988test.t1 analyze status OK 18989CHECK TABLE t1 EXTENDED; 18990Table Op Msg_type Msg_text 18991test.t1 check status OK 18992CHECKSUM TABLE t1 EXTENDED; 18993Table Checksum 18994test.t1 <some_value> 18995OPTIMIZE TABLE t1; 18996Table Op Msg_type Msg_text 18997test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 18998test.t1 optimize status OK 18999# check layout success: 1 19000REPAIR TABLE t1 EXTENDED; 19001Table Op Msg_type Msg_text 19002test.t1 repair status OK 19003# check layout success: 1 19004TRUNCATE t1; 19005 19006# check TRUNCATE success: 1 19007# check layout success: 1 19008# End usability test (inc/partition_check.inc) 19009DROP TABLE t1; 19010CREATE TABLE t1 ( 19011f_int1 INTEGER, 19012f_int2 INTEGER, 19013f_char1 CHAR(20), 19014f_char2 CHAR(20), 19015f_charbig VARCHAR(1000) 19016, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 19017) 19018PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 19019(PARTITION part1 VALUES IN (0) 19020(SUBPARTITION sp11, 19021SUBPARTITION sp12), 19022PARTITION part2 VALUES IN (1) 19023(SUBPARTITION sp21, 19024SUBPARTITION sp22), 19025PARTITION part3 VALUES IN (2) 19026(SUBPARTITION sp31, 19027SUBPARTITION sp32), 19028PARTITION part4 VALUES IN (NULL) 19029(SUBPARTITION sp41, 19030SUBPARTITION sp42)); 19031INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19032SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 19033# Start usability test (inc/partition_check.inc) 19034create_command 19035SHOW CREATE TABLE t1; 19036Table Create Table 19037t1 CREATE TABLE `t1` ( 19038 `f_int1` int(11) DEFAULT NULL, 19039 `f_int2` int(11) DEFAULT NULL, 19040 `f_char1` char(20) DEFAULT NULL, 19041 `f_char2` char(20) DEFAULT NULL, 19042 `f_charbig` varchar(1000) DEFAULT NULL, 19043 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 19044 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 19045) ENGINE=InnoDB DEFAULT CHARSET=latin1 19046/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 19047SUBPARTITION BY HASH (f_int1 + 1) 19048(PARTITION part1 VALUES IN (0) 19049 (SUBPARTITION sp11 ENGINE = InnoDB, 19050 SUBPARTITION sp12 ENGINE = InnoDB), 19051 PARTITION part2 VALUES IN (1) 19052 (SUBPARTITION sp21 ENGINE = InnoDB, 19053 SUBPARTITION sp22 ENGINE = InnoDB), 19054 PARTITION part3 VALUES IN (2) 19055 (SUBPARTITION sp31 ENGINE = InnoDB, 19056 SUBPARTITION sp32 ENGINE = InnoDB), 19057 PARTITION part4 VALUES IN (NULL) 19058 (SUBPARTITION sp41 ENGINE = InnoDB, 19059 SUBPARTITION sp42 ENGINE = InnoDB)) */ 19060 19061unified filelist 19062t1#P#part1#SP#sp11.ibd 19063t1#P#part1#SP#sp12.ibd 19064t1#P#part2#SP#sp21.ibd 19065t1#P#part2#SP#sp22.ibd 19066t1#P#part3#SP#sp31.ibd 19067t1#P#part3#SP#sp32.ibd 19068t1#P#part4#SP#sp41.ibd 19069t1#P#part4#SP#sp42.ibd 19070t1.frm 19071 19072# check prerequisites-1 success: 1 19073# check COUNT(*) success: 1 19074# check MIN/MAX(f_int1) success: 1 19075# check MIN/MAX(f_int2) success: 1 19076INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19077SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19078CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19079WHERE f_int1 IN (2,3); 19080ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19081# check prerequisites-3 success: 1 19082# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19083INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19084SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19085CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19086WHERE f_int1 IN (2,3); 19087DELETE FROM t1 WHERE f_charbig = 'delete me'; 19088INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19089SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19090CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19091WHERE f_int1 IN (2,3); 19092DELETE FROM t1 WHERE f_charbig = 'delete me'; 19093# check read via f_int1 success: 1 19094# check read via f_int2 success: 1 19095 19096# check multiple-1 success: 1 19097DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19098 19099# check multiple-2 success: 1 19100INSERT INTO t1 SELECT * FROM t0_template 19101WHERE MOD(f_int1,3) = 0; 19102 19103# check multiple-3 success: 1 19104UPDATE t1 SET f_int1 = f_int1 + @max_row 19105WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19106AND @max_row_div2 + @max_row_div4; 19107 19108# check multiple-4 success: 1 19109DELETE FROM t1 19110WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19111AND @max_row_div2 + @max_row_div4 + @max_row; 19112 19113# check multiple-5 success: 1 19114SELECT COUNT(*) INTO @try_count FROM t0_template 19115WHERE MOD(f_int1,3) = 0 19116AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19117SELECT COUNT(*) INTO @clash_count 19118FROM t1 INNER JOIN t0_template USING(f_int1) 19119WHERE MOD(f_int1,3) = 0 19120AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19121SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19122INSERT INTO t1 19123SET f_int1 = @cur_value , f_int2 = @cur_value, 19124f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19125f_charbig = '#SINGLE#'; 19126 19127# check single-1 success: 1 19128SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19129INSERT INTO t1 19130SET f_int1 = @cur_value , f_int2 = @cur_value, 19131f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19132f_charbig = '#SINGLE#'; 19133 19134# check single-2 success: 1 19135SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19136SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19137UPDATE t1 SET f_int1 = @cur_value2 19138WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19139 19140# check single-3 success: 1 19141SET @cur_value1= -1; 19142SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19143UPDATE t1 SET f_int1 = @cur_value1 19144WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19145 19146# check single-4 success: 1 19147SELECT MAX(f_int1) INTO @cur_value FROM t1; 19148DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19149 19150# check single-5 success: 1 19151DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19152 19153# check single-6 success: 1 19154INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19155 19156# check single-7 success: 1 19157DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19158DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19159INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19160f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19161f_charbig = '#NULL#'; 19162INSERT INTO t1 19163SET f_int1 = NULL , f_int2 = -@max_row, 19164f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19165f_charbig = '#NULL#'; 19166# check null success: 1 19167 19168# check null-1 success: 1 19169UPDATE t1 SET f_int1 = -@max_row 19170WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19171AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19172 19173# check null-2 success: 1 19174UPDATE t1 SET f_int1 = NULL 19175WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19176AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19177 19178# check null-3 success: 1 19179DELETE FROM t1 19180WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19181AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19182 19183# check null-4 success: 1 19184DELETE FROM t1 19185WHERE f_int1 = 0 AND f_int2 = 0 19186AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19187AND f_charbig = '#NULL#'; 19188INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19189SELECT f_int1, f_int1, '', '', 'was inserted' 19190 FROM t0_template source_tab 19191WHERE MOD(f_int1,3) = 0 19192AND f_int1 BETWEEN @max_row_div2 AND @max_row 19193ON DUPLICATE KEY 19194UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19195f_int2 = 2 * @max_row + source_tab.f_int1, 19196f_charbig = 'was updated'; 19197 19198# check unique-1-a success: 1 19199 19200# check unique-1-b success: 1 19201DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19202UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19203f_int2 = CAST(f_char1 AS SIGNED INT), 19204f_charbig = CONCAT('===',f_char1,'===') 19205WHERE f_charbig = 'was updated'; 19206REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19207SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19208 FROM t0_template source_tab 19209WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19210 19211# check replace success: 1 19212DELETE FROM t1 19213WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19214DELETE FROM t1 19215WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19216f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19217UPDATE t1 SET f_int2 = f_int1, 19218f_char1 = CAST(f_int1 AS CHAR), 19219f_char2 = CAST(f_int1 AS CHAR), 19220f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19221WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19222SET AUTOCOMMIT= 0; 19223INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19224SELECT f_int1, f_int1, '', '', 'was inserted' 19225FROM t0_template source_tab 19226WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19227 19228# check transactions-1 success: 1 19229COMMIT WORK; 19230 19231# check transactions-2 success: 1 19232ROLLBACK WORK; 19233 19234# check transactions-3 success: 1 19235DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19236COMMIT WORK; 19237ROLLBACK WORK; 19238 19239# check transactions-4 success: 1 19240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19241SELECT f_int1, f_int1, '', '', 'was inserted' 19242FROM t0_template source_tab 19243WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19244 19245# check transactions-5 success: 1 19246ROLLBACK WORK; 19247 19248# check transactions-6 success: 1 19249# INFO: Storage engine used for t1 seems to be transactional. 19250COMMIT; 19251 19252# check transactions-7 success: 1 19253DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19254COMMIT WORK; 19255SET @@session.sql_mode = 'traditional'; 19256Warnings: 19257Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19258SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19259INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19260SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19261'', '', 'was inserted' FROM t0_template 19262WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19263ERROR 22012: Division by 0 19264COMMIT; 19265 19266# check transactions-8 success: 1 19267# INFO: Storage engine used for t1 seems to be able to revert 19268# changes made by the failing statement. 19269SET @@session.sql_mode = ''; 19270Warnings: 19271Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19272SET AUTOCOMMIT= 1; 19273DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19274COMMIT WORK; 19275UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19276 19277# check special-1 success: 1 19278UPDATE t1 SET f_charbig = ''; 19279 19280# check special-2 success: 1 19281UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19282INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19283SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19284WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19285INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19286SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19287'just inserted' FROM t0_template 19288WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19289CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19290BEGIN 19291UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19292f_charbig = 'updated by trigger' 19293 WHERE f_int1 = new.f_int1; 19294END| 19295INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19296SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19297WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19298 19299# check trigger-1 success: 1 19300DROP TRIGGER trg_1; 19301UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19302f_int2 = CAST(f_char1 AS SIGNED INT), 19303f_charbig = 'just inserted' 19304 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19305DELETE FROM t0_aux 19306WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19307INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19308SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19309'just inserted' FROM t0_template 19310WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19311CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 19312BEGIN 19313UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19314f_charbig = 'updated by trigger' 19315 WHERE f_int1 = new.f_int1; 19316END| 19317INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19318SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19320 19321# check trigger-2 success: 1 19322DROP TRIGGER trg_1; 19323UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19324f_int2 = CAST(f_char1 AS SIGNED INT), 19325f_charbig = 'just inserted' 19326 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19327DELETE FROM t0_aux 19328WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19329INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19330SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19331'just inserted' FROM t0_template 19332WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19333CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19334BEGIN 19335UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19336f_charbig = 'updated by trigger' 19337 WHERE f_int1 = new.f_int1; 19338END| 19339UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19340WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19341 19342# check trigger-3 success: 1 19343DROP TRIGGER trg_1; 19344UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19345f_int2 = CAST(f_char1 AS SIGNED INT), 19346f_charbig = 'just inserted' 19347 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19348DELETE FROM t0_aux 19349WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19350INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19351SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19352'just inserted' FROM t0_template 19353WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19354CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19355BEGIN 19356UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19357f_charbig = 'updated by trigger' 19358 WHERE f_int1 = - old.f_int1; 19359END| 19360UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19361WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19362 19363# check trigger-4 success: 1 19364DROP TRIGGER trg_1; 19365UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19366f_int2 = CAST(f_char1 AS SIGNED INT), 19367f_charbig = 'just inserted' 19368 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19369DELETE FROM t0_aux 19370WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19373'just inserted' FROM t0_template 19374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19375CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19376BEGIN 19377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19378f_charbig = 'updated by trigger' 19379 WHERE f_int1 = new.f_int1; 19380END| 19381UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19382WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19383 19384# check trigger-5 success: 1 19385DROP TRIGGER trg_1; 19386UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19387f_int2 = CAST(f_char1 AS SIGNED INT), 19388f_charbig = 'just inserted' 19389 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19390DELETE FROM t0_aux 19391WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19392INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19393SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19394'just inserted' FROM t0_template 19395WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19396CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19397BEGIN 19398UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19399f_charbig = 'updated by trigger' 19400 WHERE f_int1 = - old.f_int1; 19401END| 19402UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19403WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19404 19405# check trigger-6 success: 1 19406DROP TRIGGER trg_1; 19407UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19408f_int2 = CAST(f_char1 AS SIGNED INT), 19409f_charbig = 'just inserted' 19410 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19411DELETE FROM t0_aux 19412WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19414SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19415'just inserted' FROM t0_template 19416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19417CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19418BEGIN 19419UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19420f_charbig = 'updated by trigger' 19421 WHERE f_int1 = - old.f_int1; 19422END| 19423DELETE FROM t0_aux 19424WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19425 19426# check trigger-7 success: 1 19427DROP TRIGGER trg_1; 19428UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19429f_int2 = CAST(f_char1 AS SIGNED INT), 19430f_charbig = 'just inserted' 19431 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19432DELETE FROM t0_aux 19433WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19434INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19435SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19436'just inserted' FROM t0_template 19437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19438CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19439BEGIN 19440UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19441f_charbig = 'updated by trigger' 19442 WHERE f_int1 = - old.f_int1; 19443END| 19444DELETE FROM t0_aux 19445WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19446 19447# check trigger-8 success: 1 19448DROP TRIGGER trg_1; 19449UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19450f_int2 = CAST(f_char1 AS SIGNED INT), 19451f_charbig = 'just inserted' 19452 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19453DELETE FROM t0_aux 19454WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19455DELETE FROM t1 19456WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19457CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19458BEGIN 19459SET new.f_int1 = old.f_int1 + @max_row, 19460new.f_int2 = old.f_int2 - @max_row, 19461new.f_charbig = '####updated per update trigger####'; 19462END| 19463UPDATE t1 19464SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19465f_charbig = '####updated per update statement itself####'; 19466 19467# check trigger-9 success: 1 19468DROP TRIGGER trg_2; 19469UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19470f_int2 = CAST(f_char1 AS SIGNED INT), 19471f_charbig = CONCAT('===',f_char1,'==='); 19472CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19473BEGIN 19474SET new.f_int1 = new.f_int1 + @max_row, 19475new.f_int2 = new.f_int2 - @max_row, 19476new.f_charbig = '####updated per update trigger####'; 19477END| 19478UPDATE t1 19479SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19480f_charbig = '####updated per update statement itself####'; 19481 19482# check trigger-10 success: 1 19483DROP TRIGGER trg_2; 19484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19485f_int2 = CAST(f_char1 AS SIGNED INT), 19486f_charbig = CONCAT('===',f_char1,'==='); 19487CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19488BEGIN 19489SET new.f_int1 = @my_max1 + @counter, 19490new.f_int2 = @my_min2 - @counter, 19491new.f_charbig = '####updated per insert trigger####'; 19492SET @counter = @counter + 1; 19493END| 19494SET @counter = 1; 19495SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19496INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19497SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19498CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19499WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19500ORDER BY f_int1; 19501DROP TRIGGER trg_3; 19502 19503# check trigger-11 success: 1 19504DELETE FROM t1 19505WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19506AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19507AND f_charbig = '####updated per insert trigger####'; 19508CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19509BEGIN 19510SET new.f_int1 = @my_max1 + @counter, 19511new.f_int2 = @my_min2 - @counter, 19512new.f_charbig = '####updated per insert trigger####'; 19513SET @counter = @counter + 1; 19514END| 19515SET @counter = 1; 19516SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19517INSERT INTO t1 (f_char1, f_char2, f_charbig) 19518SELECT CAST(f_int1 AS CHAR), 19519CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19520WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19521ORDER BY f_int1; 19522DROP TRIGGER trg_3; 19523 19524# check trigger-12 success: 1 19525DELETE FROM t1 19526WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19527AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19528AND f_charbig = '####updated per insert trigger####'; 19529ANALYZE TABLE t1; 19530Table Op Msg_type Msg_text 19531test.t1 analyze status OK 19532CHECK TABLE t1 EXTENDED; 19533Table Op Msg_type Msg_text 19534test.t1 check status OK 19535CHECKSUM TABLE t1 EXTENDED; 19536Table Checksum 19537test.t1 <some_value> 19538OPTIMIZE TABLE t1; 19539Table Op Msg_type Msg_text 19540test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 19541test.t1 optimize status OK 19542# check layout success: 1 19543REPAIR TABLE t1 EXTENDED; 19544Table Op Msg_type Msg_text 19545test.t1 repair status OK 19546# check layout success: 1 19547TRUNCATE t1; 19548 19549# check TRUNCATE success: 1 19550# check layout success: 1 19551# End usability test (inc/partition_check.inc) 19552DROP TABLE t1; 19553CREATE TABLE t1 ( 19554f_int1 INTEGER, 19555f_int2 INTEGER, 19556f_char1 CHAR(20), 19557f_char2 CHAR(20), 19558f_charbig VARCHAR(1000) 19559, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 19560) 19561PARTITION BY LIST(ABS(MOD(f_int1,2))) 19562SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 19563(PARTITION part1 VALUES IN (0), 19564PARTITION part2 VALUES IN (1), 19565PARTITION part3 VALUES IN (NULL)); 19566INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19567SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 19568# Start usability test (inc/partition_check.inc) 19569create_command 19570SHOW CREATE TABLE t1; 19571Table Create Table 19572t1 CREATE TABLE `t1` ( 19573 `f_int1` int(11) DEFAULT NULL, 19574 `f_int2` int(11) DEFAULT NULL, 19575 `f_char1` char(20) DEFAULT NULL, 19576 `f_char2` char(20) DEFAULT NULL, 19577 `f_charbig` varchar(1000) DEFAULT NULL, 19578 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 19579 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 19580) ENGINE=InnoDB DEFAULT CHARSET=latin1 19581/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 19582SUBPARTITION BY KEY (f_int1) 19583SUBPARTITIONS 3 19584(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 19585 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 19586 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 19587 19588unified filelist 19589t1#P#part1#SP#part1sp0.ibd 19590t1#P#part1#SP#part1sp1.ibd 19591t1#P#part1#SP#part1sp2.ibd 19592t1#P#part2#SP#part2sp0.ibd 19593t1#P#part2#SP#part2sp1.ibd 19594t1#P#part2#SP#part2sp2.ibd 19595t1#P#part3#SP#part3sp0.ibd 19596t1#P#part3#SP#part3sp1.ibd 19597t1#P#part3#SP#part3sp2.ibd 19598t1.frm 19599 19600# check prerequisites-1 success: 1 19601# check COUNT(*) success: 1 19602# check MIN/MAX(f_int1) success: 1 19603# check MIN/MAX(f_int2) success: 1 19604INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19605SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19606CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19607WHERE f_int1 IN (2,3); 19608ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19609# check prerequisites-3 success: 1 19610# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19611INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19612SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19613CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19614WHERE f_int1 IN (2,3); 19615DELETE FROM t1 WHERE f_charbig = 'delete me'; 19616INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19617SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19618CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19619WHERE f_int1 IN (2,3); 19620DELETE FROM t1 WHERE f_charbig = 'delete me'; 19621# check read via f_int1 success: 1 19622# check read via f_int2 success: 1 19623 19624# check multiple-1 success: 1 19625DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19626 19627# check multiple-2 success: 1 19628INSERT INTO t1 SELECT * FROM t0_template 19629WHERE MOD(f_int1,3) = 0; 19630 19631# check multiple-3 success: 1 19632UPDATE t1 SET f_int1 = f_int1 + @max_row 19633WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19634AND @max_row_div2 + @max_row_div4; 19635 19636# check multiple-4 success: 1 19637DELETE FROM t1 19638WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19639AND @max_row_div2 + @max_row_div4 + @max_row; 19640 19641# check multiple-5 success: 1 19642SELECT COUNT(*) INTO @try_count FROM t0_template 19643WHERE MOD(f_int1,3) = 0 19644AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19645SELECT COUNT(*) INTO @clash_count 19646FROM t1 INNER JOIN t0_template USING(f_int1) 19647WHERE MOD(f_int1,3) = 0 19648AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19649SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19650INSERT INTO t1 19651SET f_int1 = @cur_value , f_int2 = @cur_value, 19652f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19653f_charbig = '#SINGLE#'; 19654 19655# check single-1 success: 1 19656SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19657INSERT INTO t1 19658SET f_int1 = @cur_value , f_int2 = @cur_value, 19659f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19660f_charbig = '#SINGLE#'; 19661 19662# check single-2 success: 1 19663SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19664SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19665UPDATE t1 SET f_int1 = @cur_value2 19666WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19667 19668# check single-3 success: 1 19669SET @cur_value1= -1; 19670SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19671UPDATE t1 SET f_int1 = @cur_value1 19672WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19673 19674# check single-4 success: 1 19675SELECT MAX(f_int1) INTO @cur_value FROM t1; 19676DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19677 19678# check single-5 success: 1 19679DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19680 19681# check single-6 success: 1 19682INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19683 19684# check single-7 success: 1 19685DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19686DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19687INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19688f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19689f_charbig = '#NULL#'; 19690INSERT INTO t1 19691SET f_int1 = NULL , f_int2 = -@max_row, 19692f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19693f_charbig = '#NULL#'; 19694# check null success: 1 19695 19696# check null-1 success: 1 19697UPDATE t1 SET f_int1 = -@max_row 19698WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19699AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19700 19701# check null-2 success: 1 19702UPDATE t1 SET f_int1 = NULL 19703WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19704AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19705 19706# check null-3 success: 1 19707DELETE FROM t1 19708WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19709AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19710 19711# check null-4 success: 1 19712DELETE FROM t1 19713WHERE f_int1 = 0 AND f_int2 = 0 19714AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19715AND f_charbig = '#NULL#'; 19716INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19717SELECT f_int1, f_int1, '', '', 'was inserted' 19718 FROM t0_template source_tab 19719WHERE MOD(f_int1,3) = 0 19720AND f_int1 BETWEEN @max_row_div2 AND @max_row 19721ON DUPLICATE KEY 19722UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19723f_int2 = 2 * @max_row + source_tab.f_int1, 19724f_charbig = 'was updated'; 19725 19726# check unique-1-a success: 1 19727 19728# check unique-1-b success: 1 19729DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19731f_int2 = CAST(f_char1 AS SIGNED INT), 19732f_charbig = CONCAT('===',f_char1,'===') 19733WHERE f_charbig = 'was updated'; 19734REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19735SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19736 FROM t0_template source_tab 19737WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19738 19739# check replace success: 1 19740DELETE FROM t1 19741WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19742DELETE FROM t1 19743WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19744f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19745UPDATE t1 SET f_int2 = f_int1, 19746f_char1 = CAST(f_int1 AS CHAR), 19747f_char2 = CAST(f_int1 AS CHAR), 19748f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19749WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19750SET AUTOCOMMIT= 0; 19751INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19752SELECT f_int1, f_int1, '', '', 'was inserted' 19753FROM t0_template source_tab 19754WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19755 19756# check transactions-1 success: 1 19757COMMIT WORK; 19758 19759# check transactions-2 success: 1 19760ROLLBACK WORK; 19761 19762# check transactions-3 success: 1 19763DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19764COMMIT WORK; 19765ROLLBACK WORK; 19766 19767# check transactions-4 success: 1 19768INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19769SELECT f_int1, f_int1, '', '', 'was inserted' 19770FROM t0_template source_tab 19771WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19772 19773# check transactions-5 success: 1 19774ROLLBACK WORK; 19775 19776# check transactions-6 success: 1 19777# INFO: Storage engine used for t1 seems to be transactional. 19778COMMIT; 19779 19780# check transactions-7 success: 1 19781DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19782COMMIT WORK; 19783SET @@session.sql_mode = 'traditional'; 19784Warnings: 19785Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19786SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19787INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19788SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19789'', '', 'was inserted' FROM t0_template 19790WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19791ERROR 22012: Division by 0 19792COMMIT; 19793 19794# check transactions-8 success: 1 19795# INFO: Storage engine used for t1 seems to be able to revert 19796# changes made by the failing statement. 19797SET @@session.sql_mode = ''; 19798Warnings: 19799Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19800SET AUTOCOMMIT= 1; 19801DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19802COMMIT WORK; 19803UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19804 19805# check special-1 success: 1 19806UPDATE t1 SET f_charbig = ''; 19807 19808# check special-2 success: 1 19809UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19810INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19811SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19812WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19813INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19814SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19815'just inserted' FROM t0_template 19816WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19817CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19818BEGIN 19819UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19820f_charbig = 'updated by trigger' 19821 WHERE f_int1 = new.f_int1; 19822END| 19823INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19824SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19825WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19826 19827# check trigger-1 success: 1 19828DROP TRIGGER trg_1; 19829UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19830f_int2 = CAST(f_char1 AS SIGNED INT), 19831f_charbig = 'just inserted' 19832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19833DELETE FROM t0_aux 19834WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19835INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19836SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19837'just inserted' FROM t0_template 19838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19839CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 19840BEGIN 19841UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19842f_charbig = 'updated by trigger' 19843 WHERE f_int1 = new.f_int1; 19844END| 19845INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19846SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19848 19849# check trigger-2 success: 1 19850DROP TRIGGER trg_1; 19851UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19852f_int2 = CAST(f_char1 AS SIGNED INT), 19853f_charbig = 'just inserted' 19854 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19855DELETE FROM t0_aux 19856WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19857INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19858SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19859'just inserted' FROM t0_template 19860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19861CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19862BEGIN 19863UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19864f_charbig = 'updated by trigger' 19865 WHERE f_int1 = new.f_int1; 19866END| 19867UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19868WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19869 19870# check trigger-3 success: 1 19871DROP TRIGGER trg_1; 19872UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19873f_int2 = CAST(f_char1 AS SIGNED INT), 19874f_charbig = 'just inserted' 19875 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19876DELETE FROM t0_aux 19877WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19878INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19879SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19880'just inserted' FROM t0_template 19881WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19882CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19883BEGIN 19884UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19885f_charbig = 'updated by trigger' 19886 WHERE f_int1 = - old.f_int1; 19887END| 19888UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19889WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19890 19891# check trigger-4 success: 1 19892DROP TRIGGER trg_1; 19893UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19894f_int2 = CAST(f_char1 AS SIGNED INT), 19895f_charbig = 'just inserted' 19896 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19897DELETE FROM t0_aux 19898WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19899INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19900SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19901'just inserted' FROM t0_template 19902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19903CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19904BEGIN 19905UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19906f_charbig = 'updated by trigger' 19907 WHERE f_int1 = new.f_int1; 19908END| 19909UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19910WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19911 19912# check trigger-5 success: 1 19913DROP TRIGGER trg_1; 19914UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19915f_int2 = CAST(f_char1 AS SIGNED INT), 19916f_charbig = 'just inserted' 19917 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19918DELETE FROM t0_aux 19919WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19920INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19921SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19922'just inserted' FROM t0_template 19923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19924CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19925BEGIN 19926UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19927f_charbig = 'updated by trigger' 19928 WHERE f_int1 = - old.f_int1; 19929END| 19930UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19931WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19932 19933# check trigger-6 success: 1 19934DROP TRIGGER trg_1; 19935UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19936f_int2 = CAST(f_char1 AS SIGNED INT), 19937f_charbig = 'just inserted' 19938 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19939DELETE FROM t0_aux 19940WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19941INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19942SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19943'just inserted' FROM t0_template 19944WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19945CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19946BEGIN 19947UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19948f_charbig = 'updated by trigger' 19949 WHERE f_int1 = - old.f_int1; 19950END| 19951DELETE FROM t0_aux 19952WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19953 19954# check trigger-7 success: 1 19955DROP TRIGGER trg_1; 19956UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19957f_int2 = CAST(f_char1 AS SIGNED INT), 19958f_charbig = 'just inserted' 19959 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19960DELETE FROM t0_aux 19961WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19962INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19963SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19964'just inserted' FROM t0_template 19965WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19966CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19967BEGIN 19968UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19969f_charbig = 'updated by trigger' 19970 WHERE f_int1 = - old.f_int1; 19971END| 19972DELETE FROM t0_aux 19973WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19974 19975# check trigger-8 success: 1 19976DROP TRIGGER trg_1; 19977UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19978f_int2 = CAST(f_char1 AS SIGNED INT), 19979f_charbig = 'just inserted' 19980 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19981DELETE FROM t0_aux 19982WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19983DELETE FROM t1 19984WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19985CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19986BEGIN 19987SET new.f_int1 = old.f_int1 + @max_row, 19988new.f_int2 = old.f_int2 - @max_row, 19989new.f_charbig = '####updated per update trigger####'; 19990END| 19991UPDATE t1 19992SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19993f_charbig = '####updated per update statement itself####'; 19994 19995# check trigger-9 success: 1 19996DROP TRIGGER trg_2; 19997UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19998f_int2 = CAST(f_char1 AS SIGNED INT), 19999f_charbig = CONCAT('===',f_char1,'==='); 20000CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20001BEGIN 20002SET new.f_int1 = new.f_int1 + @max_row, 20003new.f_int2 = new.f_int2 - @max_row, 20004new.f_charbig = '####updated per update trigger####'; 20005END| 20006UPDATE t1 20007SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20008f_charbig = '####updated per update statement itself####'; 20009 20010# check trigger-10 success: 1 20011DROP TRIGGER trg_2; 20012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20013f_int2 = CAST(f_char1 AS SIGNED INT), 20014f_charbig = CONCAT('===',f_char1,'==='); 20015CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20016BEGIN 20017SET new.f_int1 = @my_max1 + @counter, 20018new.f_int2 = @my_min2 - @counter, 20019new.f_charbig = '####updated per insert trigger####'; 20020SET @counter = @counter + 1; 20021END| 20022SET @counter = 1; 20023SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20024INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20025SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20026CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20027WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20028ORDER BY f_int1; 20029DROP TRIGGER trg_3; 20030 20031# check trigger-11 success: 1 20032DELETE FROM t1 20033WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20034AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20035AND f_charbig = '####updated per insert trigger####'; 20036CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20037BEGIN 20038SET new.f_int1 = @my_max1 + @counter, 20039new.f_int2 = @my_min2 - @counter, 20040new.f_charbig = '####updated per insert trigger####'; 20041SET @counter = @counter + 1; 20042END| 20043SET @counter = 1; 20044SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20045INSERT INTO t1 (f_char1, f_char2, f_charbig) 20046SELECT CAST(f_int1 AS CHAR), 20047CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20049ORDER BY f_int1; 20050DROP TRIGGER trg_3; 20051 20052# check trigger-12 success: 1 20053DELETE FROM t1 20054WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20055AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20056AND f_charbig = '####updated per insert trigger####'; 20057ANALYZE TABLE t1; 20058Table Op Msg_type Msg_text 20059test.t1 analyze status OK 20060CHECK TABLE t1 EXTENDED; 20061Table Op Msg_type Msg_text 20062test.t1 check status OK 20063CHECKSUM TABLE t1 EXTENDED; 20064Table Checksum 20065test.t1 <some_value> 20066OPTIMIZE TABLE t1; 20067Table Op Msg_type Msg_text 20068test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 20069test.t1 optimize status OK 20070# check layout success: 1 20071REPAIR TABLE t1 EXTENDED; 20072Table Op Msg_type Msg_text 20073test.t1 repair status OK 20074# check layout success: 1 20075TRUNCATE t1; 20076 20077# check TRUNCATE success: 1 20078# check layout success: 1 20079# End usability test (inc/partition_check.inc) 20080DROP TABLE t1; 20081#------------------------------------------------------------------------ 20082# 3 Tables with PRIMARY KEY and/or UNIQUE INDEXes 20083# The partitioning function contains two columns. 20084#------------------------------------------------------------------------ 20085# 3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns 20086DROP TABLE IF EXISTS t1; 20087CREATE TABLE t1 ( 20088f_int1 INTEGER, 20089f_int2 INTEGER, 20090f_char1 CHAR(20), 20091f_char2 CHAR(20), 20092f_charbig VARCHAR(1000) 20093, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 20094) 20095PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 20096INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20097SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 20098# Start usability test (inc/partition_check.inc) 20099create_command 20100SHOW CREATE TABLE t1; 20101Table Create Table 20102t1 CREATE TABLE `t1` ( 20103 `f_int1` int(11) NOT NULL, 20104 `f_int2` int(11) NOT NULL, 20105 `f_char1` char(20) DEFAULT NULL, 20106 `f_char2` char(20) DEFAULT NULL, 20107 `f_charbig` varchar(1000) DEFAULT NULL, 20108 PRIMARY KEY (`f_int2`,`f_int1`), 20109 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 20110) ENGINE=InnoDB DEFAULT CHARSET=latin1 20111/*!50100 PARTITION BY HASH (f_int1 + f_int2) 20112PARTITIONS 2 */ 20113 20114unified filelist 20115t1#P#p0.ibd 20116t1#P#p1.ibd 20117t1.frm 20118 20119# check prerequisites-1 success: 1 20120# check COUNT(*) success: 1 20121# check MIN/MAX(f_int1) success: 1 20122# check MIN/MAX(f_int2) success: 1 20123INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20124SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20125CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 20126WHERE f_int1 IN (2,3); 20127ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 20128# check prerequisites-3 success: 1 20129# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 20130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20131SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20132CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20133WHERE f_int1 IN (2,3); 20134DELETE FROM t1 WHERE f_charbig = 'delete me'; 20135INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20136SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20137CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20138WHERE f_int1 IN (2,3); 20139DELETE FROM t1 WHERE f_charbig = 'delete me'; 20140# check read via f_int1 success: 1 20141# check read via f_int2 success: 1 20142 20143# check multiple-1 success: 1 20144DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 20145 20146# check multiple-2 success: 1 20147INSERT INTO t1 SELECT * FROM t0_template 20148WHERE MOD(f_int1,3) = 0; 20149 20150# check multiple-3 success: 1 20151UPDATE t1 SET f_int1 = f_int1 + @max_row 20152WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 20153AND @max_row_div2 + @max_row_div4; 20154 20155# check multiple-4 success: 1 20156DELETE FROM t1 20157WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 20158AND @max_row_div2 + @max_row_div4 + @max_row; 20159 20160# check multiple-5 success: 1 20161SELECT COUNT(*) INTO @try_count FROM t0_template 20162WHERE MOD(f_int1,3) = 0 20163AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20164SELECT COUNT(*) INTO @clash_count 20165FROM t1 INNER JOIN t0_template USING(f_int1) 20166WHERE MOD(f_int1,3) = 0 20167AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20168SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 20169INSERT INTO t1 20170SET f_int1 = @cur_value , f_int2 = @cur_value, 20171f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20172f_charbig = '#SINGLE#'; 20173 20174# check single-1 success: 1 20175SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 20176INSERT INTO t1 20177SET f_int1 = @cur_value , f_int2 = @cur_value, 20178f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20179f_charbig = '#SINGLE#'; 20180 20181# check single-2 success: 1 20182SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 20183SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 20184UPDATE t1 SET f_int1 = @cur_value2 20185WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 20186 20187# check single-3 success: 1 20188SET @cur_value1= -1; 20189SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 20190UPDATE t1 SET f_int1 = @cur_value1 20191WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 20192 20193# check single-4 success: 1 20194SELECT MAX(f_int1) INTO @cur_value FROM t1; 20195DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 20196 20197# check single-5 success: 1 20198DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 20199 20200# check single-6 success: 1 20201INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 20202 20203# check single-7 success: 1 20204DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 20205DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 20206INSERT t1 SET f_int1 = 0 , f_int2 = 0, 20207f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 20208f_charbig = '#NULL#'; 20209INSERT INTO t1 20210SET f_int1 = NULL , f_int2 = -@max_row, 20211f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 20212f_charbig = '#NULL#'; 20213ERROR 23000: Column 'f_int1' cannot be null 20214# check null success: 1 20215DELETE FROM t1 20216WHERE f_int1 = 0 AND f_int2 = 0 20217AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 20218AND f_charbig = '#NULL#'; 20219INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20220SELECT f_int1, f_int1, '', '', 'was inserted' 20221 FROM t0_template source_tab 20222WHERE MOD(f_int1,3) = 0 20223AND f_int1 BETWEEN @max_row_div2 AND @max_row 20224ON DUPLICATE KEY 20225UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 20226f_int2 = 2 * @max_row + source_tab.f_int1, 20227f_charbig = 'was updated'; 20228 20229# check unique-1-a success: 1 20230 20231# check unique-1-b success: 1 20232DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20233UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20234f_int2 = CAST(f_char1 AS SIGNED INT), 20235f_charbig = CONCAT('===',f_char1,'===') 20236WHERE f_charbig = 'was updated'; 20237REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20238SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 20239 FROM t0_template source_tab 20240WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20241 20242# check replace success: 1 20243DELETE FROM t1 20244WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 20245DELETE FROM t1 20246WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 20247f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 20248UPDATE t1 SET f_int2 = f_int1, 20249f_char1 = CAST(f_int1 AS CHAR), 20250f_char2 = CAST(f_int1 AS CHAR), 20251f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 20252WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 20253SET AUTOCOMMIT= 0; 20254INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20255SELECT f_int1, f_int1, '', '', 'was inserted' 20256FROM t0_template source_tab 20257WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20258 20259# check transactions-1 success: 1 20260COMMIT WORK; 20261 20262# check transactions-2 success: 1 20263ROLLBACK WORK; 20264 20265# check transactions-3 success: 1 20266DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20267COMMIT WORK; 20268ROLLBACK WORK; 20269 20270# check transactions-4 success: 1 20271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20272SELECT f_int1, f_int1, '', '', 'was inserted' 20273FROM t0_template source_tab 20274WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20275 20276# check transactions-5 success: 1 20277ROLLBACK WORK; 20278 20279# check transactions-6 success: 1 20280# INFO: Storage engine used for t1 seems to be transactional. 20281COMMIT; 20282 20283# check transactions-7 success: 1 20284DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20285COMMIT WORK; 20286SET @@session.sql_mode = 'traditional'; 20287Warnings: 20288Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20289SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 20290INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20291SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 20292'', '', 'was inserted' FROM t0_template 20293WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20294ERROR 22012: Division by 0 20295COMMIT; 20296 20297# check transactions-8 success: 1 20298# INFO: Storage engine used for t1 seems to be able to revert 20299# changes made by the failing statement. 20300SET @@session.sql_mode = ''; 20301Warnings: 20302Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20303SET AUTOCOMMIT= 1; 20304DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20305COMMIT WORK; 20306UPDATE t1 SET f_charbig = REPEAT('b', 1000); 20307 20308# check special-1 success: 1 20309UPDATE t1 SET f_charbig = ''; 20310 20311# check special-2 success: 1 20312UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 20313INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20314SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 20315WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20316INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20317SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20318'just inserted' FROM t0_template 20319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20320CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 20321BEGIN 20322UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20323f_charbig = 'updated by trigger' 20324 WHERE f_int1 = new.f_int1; 20325END| 20326INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20327SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20328WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20329 20330# check trigger-1 success: 1 20331DROP TRIGGER trg_1; 20332UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20333f_int2 = CAST(f_char1 AS SIGNED INT), 20334f_charbig = 'just inserted' 20335 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20336DELETE FROM t0_aux 20337WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20338INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20339SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20340'just inserted' FROM t0_template 20341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20342CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20343BEGIN 20344UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20345f_charbig = 'updated by trigger' 20346 WHERE f_int1 = new.f_int1; 20347END| 20348INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20349SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20350WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20351 20352# check trigger-2 success: 1 20353DROP TRIGGER trg_1; 20354UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20355f_int2 = CAST(f_char1 AS SIGNED INT), 20356f_charbig = 'just inserted' 20357 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20358DELETE FROM t0_aux 20359WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20360INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20361SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20362'just inserted' FROM t0_template 20363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20364CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20365BEGIN 20366UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20367f_charbig = 'updated by trigger' 20368 WHERE f_int1 = new.f_int1; 20369END| 20370UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20371WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20372 20373# check trigger-3 success: 1 20374DROP TRIGGER trg_1; 20375UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20376f_int2 = CAST(f_char1 AS SIGNED INT), 20377f_charbig = 'just inserted' 20378 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20379DELETE FROM t0_aux 20380WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20381INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20382SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20383'just inserted' FROM t0_template 20384WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20385CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20386BEGIN 20387UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20388f_charbig = 'updated by trigger' 20389 WHERE f_int1 = - old.f_int1; 20390END| 20391UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20392WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20393 20394# check trigger-4 success: 1 20395DROP TRIGGER trg_1; 20396UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20397f_int2 = CAST(f_char1 AS SIGNED INT), 20398f_charbig = 'just inserted' 20399 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20400DELETE FROM t0_aux 20401WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20402INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20403SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20404'just inserted' FROM t0_template 20405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20406CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20407BEGIN 20408UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20409f_charbig = 'updated by trigger' 20410 WHERE f_int1 = new.f_int1; 20411END| 20412UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20413WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20414 20415# check trigger-5 success: 1 20416DROP TRIGGER trg_1; 20417UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20418f_int2 = CAST(f_char1 AS SIGNED INT), 20419f_charbig = 'just inserted' 20420 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20421DELETE FROM t0_aux 20422WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20423INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20424SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20425'just inserted' FROM t0_template 20426WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20427CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20428BEGIN 20429UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20430f_charbig = 'updated by trigger' 20431 WHERE f_int1 = - old.f_int1; 20432END| 20433UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20434WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20435 20436# check trigger-6 success: 1 20437DROP TRIGGER trg_1; 20438UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20439f_int2 = CAST(f_char1 AS SIGNED INT), 20440f_charbig = 'just inserted' 20441 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20442DELETE FROM t0_aux 20443WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20444INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20445SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20446'just inserted' FROM t0_template 20447WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20448CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20449BEGIN 20450UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20451f_charbig = 'updated by trigger' 20452 WHERE f_int1 = - old.f_int1; 20453END| 20454DELETE FROM t0_aux 20455WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20456 20457# check trigger-7 success: 1 20458DROP TRIGGER trg_1; 20459UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20460f_int2 = CAST(f_char1 AS SIGNED INT), 20461f_charbig = 'just inserted' 20462 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20463DELETE FROM t0_aux 20464WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20465INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20466SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20467'just inserted' FROM t0_template 20468WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20469CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20470BEGIN 20471UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20472f_charbig = 'updated by trigger' 20473 WHERE f_int1 = - old.f_int1; 20474END| 20475DELETE FROM t0_aux 20476WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20477 20478# check trigger-8 success: 1 20479DROP TRIGGER trg_1; 20480UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20481f_int2 = CAST(f_char1 AS SIGNED INT), 20482f_charbig = 'just inserted' 20483 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20484DELETE FROM t0_aux 20485WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20486DELETE FROM t1 20487WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20488CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20489BEGIN 20490SET new.f_int1 = old.f_int1 + @max_row, 20491new.f_int2 = old.f_int2 - @max_row, 20492new.f_charbig = '####updated per update trigger####'; 20493END| 20494UPDATE t1 20495SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20496f_charbig = '####updated per update statement itself####'; 20497 20498# check trigger-9 success: 1 20499DROP TRIGGER trg_2; 20500UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20501f_int2 = CAST(f_char1 AS SIGNED INT), 20502f_charbig = CONCAT('===',f_char1,'==='); 20503CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20504BEGIN 20505SET new.f_int1 = new.f_int1 + @max_row, 20506new.f_int2 = new.f_int2 - @max_row, 20507new.f_charbig = '####updated per update trigger####'; 20508END| 20509UPDATE t1 20510SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20511f_charbig = '####updated per update statement itself####'; 20512 20513# check trigger-10 success: 1 20514DROP TRIGGER trg_2; 20515UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20516f_int2 = CAST(f_char1 AS SIGNED INT), 20517f_charbig = CONCAT('===',f_char1,'==='); 20518CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20519BEGIN 20520SET new.f_int1 = @my_max1 + @counter, 20521new.f_int2 = @my_min2 - @counter, 20522new.f_charbig = '####updated per insert trigger####'; 20523SET @counter = @counter + 1; 20524END| 20525SET @counter = 1; 20526SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20528SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20529CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20530WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20531ORDER BY f_int1; 20532DROP TRIGGER trg_3; 20533 20534# check trigger-11 success: 1 20535DELETE FROM t1 20536WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20537AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20538AND f_charbig = '####updated per insert trigger####'; 20539CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20540BEGIN 20541SET new.f_int1 = @my_max1 + @counter, 20542new.f_int2 = @my_min2 - @counter, 20543new.f_charbig = '####updated per insert trigger####'; 20544SET @counter = @counter + 1; 20545END| 20546SET @counter = 1; 20547SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20548INSERT INTO t1 (f_char1, f_char2, f_charbig) 20549SELECT CAST(f_int1 AS CHAR), 20550CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20551WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20552ORDER BY f_int1; 20553DROP TRIGGER trg_3; 20554 20555# check trigger-12 success: 1 20556DELETE FROM t1 20557WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20558AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20559AND f_charbig = '####updated per insert trigger####'; 20560ANALYZE TABLE t1; 20561Table Op Msg_type Msg_text 20562test.t1 analyze status OK 20563CHECK TABLE t1 EXTENDED; 20564Table Op Msg_type Msg_text 20565test.t1 check status OK 20566CHECKSUM TABLE t1 EXTENDED; 20567Table Checksum 20568test.t1 <some_value> 20569OPTIMIZE TABLE t1; 20570Table Op Msg_type Msg_text 20571test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 20572test.t1 optimize status OK 20573# check layout success: 1 20574REPAIR TABLE t1 EXTENDED; 20575Table Op Msg_type Msg_text 20576test.t1 repair status OK 20577# check layout success: 1 20578TRUNCATE t1; 20579 20580# check TRUNCATE success: 1 20581# check layout success: 1 20582# End usability test (inc/partition_check.inc) 20583DROP TABLE t1; 20584CREATE TABLE t1 ( 20585f_int1 INTEGER, 20586f_int2 INTEGER, 20587f_char1 CHAR(20), 20588f_char2 CHAR(20), 20589f_charbig VARCHAR(1000) 20590, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 20591) 20592PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 20593INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20594SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 20595# Start usability test (inc/partition_check.inc) 20596create_command 20597SHOW CREATE TABLE t1; 20598Table Create Table 20599t1 CREATE TABLE `t1` ( 20600 `f_int1` int(11) NOT NULL, 20601 `f_int2` int(11) NOT NULL, 20602 `f_char1` char(20) DEFAULT NULL, 20603 `f_char2` char(20) DEFAULT NULL, 20604 `f_charbig` varchar(1000) DEFAULT NULL, 20605 PRIMARY KEY (`f_int2`,`f_int1`), 20606 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 20607) ENGINE=InnoDB DEFAULT CHARSET=latin1 20608/*!50100 PARTITION BY KEY (f_int1,f_int2) 20609PARTITIONS 5 */ 20610 20611unified filelist 20612t1#P#p0.ibd 20613t1#P#p1.ibd 20614t1#P#p2.ibd 20615t1#P#p3.ibd 20616t1#P#p4.ibd 20617t1.frm 20618 20619# check prerequisites-1 success: 1 20620# check COUNT(*) success: 1 20621# check MIN/MAX(f_int1) success: 1 20622# check MIN/MAX(f_int2) success: 1 20623INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20624SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20625CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 20626WHERE f_int1 IN (2,3); 20627ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 20628# check prerequisites-3 success: 1 20629# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 20630INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20631SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20632CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20633WHERE f_int1 IN (2,3); 20634DELETE FROM t1 WHERE f_charbig = 'delete me'; 20635INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20636SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20637CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20638WHERE f_int1 IN (2,3); 20639DELETE FROM t1 WHERE f_charbig = 'delete me'; 20640# check read via f_int1 success: 1 20641# check read via f_int2 success: 1 20642 20643# check multiple-1 success: 1 20644DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 20645 20646# check multiple-2 success: 1 20647INSERT INTO t1 SELECT * FROM t0_template 20648WHERE MOD(f_int1,3) = 0; 20649 20650# check multiple-3 success: 1 20651UPDATE t1 SET f_int1 = f_int1 + @max_row 20652WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 20653AND @max_row_div2 + @max_row_div4; 20654 20655# check multiple-4 success: 1 20656DELETE FROM t1 20657WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 20658AND @max_row_div2 + @max_row_div4 + @max_row; 20659 20660# check multiple-5 success: 1 20661SELECT COUNT(*) INTO @try_count FROM t0_template 20662WHERE MOD(f_int1,3) = 0 20663AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20664SELECT COUNT(*) INTO @clash_count 20665FROM t1 INNER JOIN t0_template USING(f_int1) 20666WHERE MOD(f_int1,3) = 0 20667AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20668SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 20669INSERT INTO t1 20670SET f_int1 = @cur_value , f_int2 = @cur_value, 20671f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20672f_charbig = '#SINGLE#'; 20673 20674# check single-1 success: 1 20675SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 20676INSERT INTO t1 20677SET f_int1 = @cur_value , f_int2 = @cur_value, 20678f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20679f_charbig = '#SINGLE#'; 20680 20681# check single-2 success: 1 20682SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 20683SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 20684UPDATE t1 SET f_int1 = @cur_value2 20685WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 20686 20687# check single-3 success: 1 20688SET @cur_value1= -1; 20689SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 20690UPDATE t1 SET f_int1 = @cur_value1 20691WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 20692 20693# check single-4 success: 1 20694SELECT MAX(f_int1) INTO @cur_value FROM t1; 20695DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 20696 20697# check single-5 success: 1 20698DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 20699 20700# check single-6 success: 1 20701INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 20702 20703# check single-7 success: 1 20704DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 20705DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 20706INSERT t1 SET f_int1 = 0 , f_int2 = 0, 20707f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 20708f_charbig = '#NULL#'; 20709INSERT INTO t1 20710SET f_int1 = NULL , f_int2 = -@max_row, 20711f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 20712f_charbig = '#NULL#'; 20713ERROR 23000: Column 'f_int1' cannot be null 20714# check null success: 1 20715DELETE FROM t1 20716WHERE f_int1 = 0 AND f_int2 = 0 20717AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 20718AND f_charbig = '#NULL#'; 20719INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20720SELECT f_int1, f_int1, '', '', 'was inserted' 20721 FROM t0_template source_tab 20722WHERE MOD(f_int1,3) = 0 20723AND f_int1 BETWEEN @max_row_div2 AND @max_row 20724ON DUPLICATE KEY 20725UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 20726f_int2 = 2 * @max_row + source_tab.f_int1, 20727f_charbig = 'was updated'; 20728 20729# check unique-1-a success: 1 20730 20731# check unique-1-b success: 1 20732DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20733UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20734f_int2 = CAST(f_char1 AS SIGNED INT), 20735f_charbig = CONCAT('===',f_char1,'===') 20736WHERE f_charbig = 'was updated'; 20737REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20738SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 20739 FROM t0_template source_tab 20740WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20741 20742# check replace success: 1 20743DELETE FROM t1 20744WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 20745DELETE FROM t1 20746WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 20747f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 20748UPDATE t1 SET f_int2 = f_int1, 20749f_char1 = CAST(f_int1 AS CHAR), 20750f_char2 = CAST(f_int1 AS CHAR), 20751f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 20752WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 20753SET AUTOCOMMIT= 0; 20754INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20755SELECT f_int1, f_int1, '', '', 'was inserted' 20756FROM t0_template source_tab 20757WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20758 20759# check transactions-1 success: 1 20760COMMIT WORK; 20761 20762# check transactions-2 success: 1 20763ROLLBACK WORK; 20764 20765# check transactions-3 success: 1 20766DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20767COMMIT WORK; 20768ROLLBACK WORK; 20769 20770# check transactions-4 success: 1 20771INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20772SELECT f_int1, f_int1, '', '', 'was inserted' 20773FROM t0_template source_tab 20774WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20775 20776# check transactions-5 success: 1 20777ROLLBACK WORK; 20778 20779# check transactions-6 success: 1 20780# INFO: Storage engine used for t1 seems to be transactional. 20781COMMIT; 20782 20783# check transactions-7 success: 1 20784DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20785COMMIT WORK; 20786SET @@session.sql_mode = 'traditional'; 20787Warnings: 20788Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20789SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 20790INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20791SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 20792'', '', 'was inserted' FROM t0_template 20793WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20794ERROR 22012: Division by 0 20795COMMIT; 20796 20797# check transactions-8 success: 1 20798# INFO: Storage engine used for t1 seems to be able to revert 20799# changes made by the failing statement. 20800SET @@session.sql_mode = ''; 20801Warnings: 20802Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20803SET AUTOCOMMIT= 1; 20804DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20805COMMIT WORK; 20806UPDATE t1 SET f_charbig = REPEAT('b', 1000); 20807 20808# check special-1 success: 1 20809UPDATE t1 SET f_charbig = ''; 20810 20811# check special-2 success: 1 20812UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 20813INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20814SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 20815WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20816INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20817SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20818'just inserted' FROM t0_template 20819WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20820CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 20821BEGIN 20822UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20823f_charbig = 'updated by trigger' 20824 WHERE f_int1 = new.f_int1; 20825END| 20826INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20827SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20828WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20829 20830# check trigger-1 success: 1 20831DROP TRIGGER trg_1; 20832UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20833f_int2 = CAST(f_char1 AS SIGNED INT), 20834f_charbig = 'just inserted' 20835 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20836DELETE FROM t0_aux 20837WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20838INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20839SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20840'just inserted' FROM t0_template 20841WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20842CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20843BEGIN 20844UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20845f_charbig = 'updated by trigger' 20846 WHERE f_int1 = new.f_int1; 20847END| 20848INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20849SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20850WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20851 20852# check trigger-2 success: 1 20853DROP TRIGGER trg_1; 20854UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20855f_int2 = CAST(f_char1 AS SIGNED INT), 20856f_charbig = 'just inserted' 20857 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20858DELETE FROM t0_aux 20859WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20860INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20861SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20862'just inserted' FROM t0_template 20863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20864CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20865BEGIN 20866UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20867f_charbig = 'updated by trigger' 20868 WHERE f_int1 = new.f_int1; 20869END| 20870UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20871WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20872 20873# check trigger-3 success: 1 20874DROP TRIGGER trg_1; 20875UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20876f_int2 = CAST(f_char1 AS SIGNED INT), 20877f_charbig = 'just inserted' 20878 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20879DELETE FROM t0_aux 20880WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20881INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20882SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20883'just inserted' FROM t0_template 20884WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20885CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20886BEGIN 20887UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20888f_charbig = 'updated by trigger' 20889 WHERE f_int1 = - old.f_int1; 20890END| 20891UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20892WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20893 20894# check trigger-4 success: 1 20895DROP TRIGGER trg_1; 20896UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20897f_int2 = CAST(f_char1 AS SIGNED INT), 20898f_charbig = 'just inserted' 20899 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20900DELETE FROM t0_aux 20901WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20902INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20903SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20904'just inserted' FROM t0_template 20905WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20906CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20907BEGIN 20908UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20909f_charbig = 'updated by trigger' 20910 WHERE f_int1 = new.f_int1; 20911END| 20912UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20913WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20914 20915# check trigger-5 success: 1 20916DROP TRIGGER trg_1; 20917UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20918f_int2 = CAST(f_char1 AS SIGNED INT), 20919f_charbig = 'just inserted' 20920 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20921DELETE FROM t0_aux 20922WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20923INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20924SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20925'just inserted' FROM t0_template 20926WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20927CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20928BEGIN 20929UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20930f_charbig = 'updated by trigger' 20931 WHERE f_int1 = - old.f_int1; 20932END| 20933UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20934WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20935 20936# check trigger-6 success: 1 20937DROP TRIGGER trg_1; 20938UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20939f_int2 = CAST(f_char1 AS SIGNED INT), 20940f_charbig = 'just inserted' 20941 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20942DELETE FROM t0_aux 20943WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20944INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20945SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20946'just inserted' FROM t0_template 20947WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20948CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20949BEGIN 20950UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20951f_charbig = 'updated by trigger' 20952 WHERE f_int1 = - old.f_int1; 20953END| 20954DELETE FROM t0_aux 20955WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20956 20957# check trigger-7 success: 1 20958DROP TRIGGER trg_1; 20959UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20960f_int2 = CAST(f_char1 AS SIGNED INT), 20961f_charbig = 'just inserted' 20962 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20963DELETE FROM t0_aux 20964WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20965INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20966SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20967'just inserted' FROM t0_template 20968WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20969CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20970BEGIN 20971UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20972f_charbig = 'updated by trigger' 20973 WHERE f_int1 = - old.f_int1; 20974END| 20975DELETE FROM t0_aux 20976WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20977 20978# check trigger-8 success: 1 20979DROP TRIGGER trg_1; 20980UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20981f_int2 = CAST(f_char1 AS SIGNED INT), 20982f_charbig = 'just inserted' 20983 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20984DELETE FROM t0_aux 20985WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20986DELETE FROM t1 20987WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20988CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20989BEGIN 20990SET new.f_int1 = old.f_int1 + @max_row, 20991new.f_int2 = old.f_int2 - @max_row, 20992new.f_charbig = '####updated per update trigger####'; 20993END| 20994UPDATE t1 20995SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20996f_charbig = '####updated per update statement itself####'; 20997 20998# check trigger-9 success: 1 20999DROP TRIGGER trg_2; 21000UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21001f_int2 = CAST(f_char1 AS SIGNED INT), 21002f_charbig = CONCAT('===',f_char1,'==='); 21003CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21004BEGIN 21005SET new.f_int1 = new.f_int1 + @max_row, 21006new.f_int2 = new.f_int2 - @max_row, 21007new.f_charbig = '####updated per update trigger####'; 21008END| 21009UPDATE t1 21010SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21011f_charbig = '####updated per update statement itself####'; 21012 21013# check trigger-10 success: 1 21014DROP TRIGGER trg_2; 21015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21016f_int2 = CAST(f_char1 AS SIGNED INT), 21017f_charbig = CONCAT('===',f_char1,'==='); 21018CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21019BEGIN 21020SET new.f_int1 = @my_max1 + @counter, 21021new.f_int2 = @my_min2 - @counter, 21022new.f_charbig = '####updated per insert trigger####'; 21023SET @counter = @counter + 1; 21024END| 21025SET @counter = 1; 21026SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21027INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21028SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21029CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21030WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21031ORDER BY f_int1; 21032DROP TRIGGER trg_3; 21033 21034# check trigger-11 success: 1 21035DELETE FROM t1 21036WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21037AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21038AND f_charbig = '####updated per insert trigger####'; 21039CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21040BEGIN 21041SET new.f_int1 = @my_max1 + @counter, 21042new.f_int2 = @my_min2 - @counter, 21043new.f_charbig = '####updated per insert trigger####'; 21044SET @counter = @counter + 1; 21045END| 21046SET @counter = 1; 21047SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21048INSERT INTO t1 (f_char1, f_char2, f_charbig) 21049SELECT CAST(f_int1 AS CHAR), 21050CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21051WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21052ORDER BY f_int1; 21053DROP TRIGGER trg_3; 21054 21055# check trigger-12 success: 1 21056DELETE FROM t1 21057WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21058AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21059AND f_charbig = '####updated per insert trigger####'; 21060ANALYZE TABLE t1; 21061Table Op Msg_type Msg_text 21062test.t1 analyze status OK 21063CHECK TABLE t1 EXTENDED; 21064Table Op Msg_type Msg_text 21065test.t1 check status OK 21066CHECKSUM TABLE t1 EXTENDED; 21067Table Checksum 21068test.t1 <some_value> 21069OPTIMIZE TABLE t1; 21070Table Op Msg_type Msg_text 21071test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 21072test.t1 optimize status OK 21073# check layout success: 1 21074REPAIR TABLE t1 EXTENDED; 21075Table Op Msg_type Msg_text 21076test.t1 repair status OK 21077# check layout success: 1 21078TRUNCATE t1; 21079 21080# check TRUNCATE success: 1 21081# check layout success: 1 21082# End usability test (inc/partition_check.inc) 21083DROP TABLE t1; 21084CREATE TABLE t1 ( 21085f_int1 INTEGER, 21086f_int2 INTEGER, 21087f_char1 CHAR(20), 21088f_char2 CHAR(20), 21089f_charbig VARCHAR(1000) 21090, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 21091) 21092PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 21093(PARTITION part_3 VALUES IN (-3), 21094PARTITION part_2 VALUES IN (-2), 21095PARTITION part_1 VALUES IN (-1), 21096PARTITION part_N VALUES IN (NULL), 21097PARTITION part0 VALUES IN (0), 21098PARTITION part1 VALUES IN (1), 21099PARTITION part2 VALUES IN (2), 21100PARTITION part3 VALUES IN (3)); 21101INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21102SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 21103# Start usability test (inc/partition_check.inc) 21104create_command 21105SHOW CREATE TABLE t1; 21106Table Create Table 21107t1 CREATE TABLE `t1` ( 21108 `f_int1` int(11) NOT NULL, 21109 `f_int2` int(11) NOT NULL, 21110 `f_char1` char(20) DEFAULT NULL, 21111 `f_char2` char(20) DEFAULT NULL, 21112 `f_charbig` varchar(1000) DEFAULT NULL, 21113 PRIMARY KEY (`f_int2`,`f_int1`), 21114 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 21115) ENGINE=InnoDB DEFAULT CHARSET=latin1 21116/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 21117(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 21118 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 21119 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 21120 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 21121 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 21122 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 21123 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 21124 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 21125 21126unified filelist 21127t1#P#part0.ibd 21128t1#P#part1.ibd 21129t1#P#part2.ibd 21130t1#P#part3.ibd 21131t1#P#part_1.ibd 21132t1#P#part_2.ibd 21133t1#P#part_3.ibd 21134t1#P#part_N.ibd 21135t1.frm 21136 21137# check prerequisites-1 success: 1 21138# check COUNT(*) success: 1 21139# check MIN/MAX(f_int1) success: 1 21140# check MIN/MAX(f_int2) success: 1 21141INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21142SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21143CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 21144WHERE f_int1 IN (2,3); 21145ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 21146# check prerequisites-3 success: 1 21147# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 21148INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21149SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21150CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21151WHERE f_int1 IN (2,3); 21152DELETE FROM t1 WHERE f_charbig = 'delete me'; 21153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21154SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21155CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21156WHERE f_int1 IN (2,3); 21157DELETE FROM t1 WHERE f_charbig = 'delete me'; 21158# check read via f_int1 success: 1 21159# check read via f_int2 success: 1 21160 21161# check multiple-1 success: 1 21162DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 21163 21164# check multiple-2 success: 1 21165INSERT INTO t1 SELECT * FROM t0_template 21166WHERE MOD(f_int1,3) = 0; 21167 21168# check multiple-3 success: 1 21169UPDATE t1 SET f_int1 = f_int1 + @max_row 21170WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 21171AND @max_row_div2 + @max_row_div4; 21172 21173# check multiple-4 success: 1 21174DELETE FROM t1 21175WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 21176AND @max_row_div2 + @max_row_div4 + @max_row; 21177 21178# check multiple-5 success: 1 21179SELECT COUNT(*) INTO @try_count FROM t0_template 21180WHERE MOD(f_int1,3) = 0 21181AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21182SELECT COUNT(*) INTO @clash_count 21183FROM t1 INNER JOIN t0_template USING(f_int1) 21184WHERE MOD(f_int1,3) = 0 21185AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21186SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 21187INSERT INTO t1 21188SET f_int1 = @cur_value , f_int2 = @cur_value, 21189f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21190f_charbig = '#SINGLE#'; 21191 21192# check single-1 success: 1 21193SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21194INSERT INTO t1 21195SET f_int1 = @cur_value , f_int2 = @cur_value, 21196f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21197f_charbig = '#SINGLE#'; 21198 21199# check single-2 success: 1 21200SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21201SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21202UPDATE t1 SET f_int1 = @cur_value2 21203WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21204 21205# check single-3 success: 1 21206SET @cur_value1= -1; 21207SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21208UPDATE t1 SET f_int1 = @cur_value1 21209WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21210 21211# check single-4 success: 1 21212SELECT MAX(f_int1) INTO @cur_value FROM t1; 21213DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21214 21215# check single-5 success: 1 21216DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21217 21218# check single-6 success: 1 21219INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21220 21221# check single-7 success: 1 21222DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 21223DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21224INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21225f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21226f_charbig = '#NULL#'; 21227INSERT INTO t1 21228SET f_int1 = NULL , f_int2 = -@max_row, 21229f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21230f_charbig = '#NULL#'; 21231ERROR 23000: Column 'f_int1' cannot be null 21232# check null success: 1 21233DELETE FROM t1 21234WHERE f_int1 = 0 AND f_int2 = 0 21235AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21236AND f_charbig = '#NULL#'; 21237INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21238SELECT f_int1, f_int1, '', '', 'was inserted' 21239 FROM t0_template source_tab 21240WHERE MOD(f_int1,3) = 0 21241AND f_int1 BETWEEN @max_row_div2 AND @max_row 21242ON DUPLICATE KEY 21243UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21244f_int2 = 2 * @max_row + source_tab.f_int1, 21245f_charbig = 'was updated'; 21246 21247# check unique-1-a success: 1 21248 21249# check unique-1-b success: 1 21250DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21251UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21252f_int2 = CAST(f_char1 AS SIGNED INT), 21253f_charbig = CONCAT('===',f_char1,'===') 21254WHERE f_charbig = 'was updated'; 21255REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21256SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21257 FROM t0_template source_tab 21258WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21259 21260# check replace success: 1 21261DELETE FROM t1 21262WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21263DELETE FROM t1 21264WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21265f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21266UPDATE t1 SET f_int2 = f_int1, 21267f_char1 = CAST(f_int1 AS CHAR), 21268f_char2 = CAST(f_int1 AS CHAR), 21269f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21270WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21271SET AUTOCOMMIT= 0; 21272INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21273SELECT f_int1, f_int1, '', '', 'was inserted' 21274FROM t0_template source_tab 21275WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21276 21277# check transactions-1 success: 1 21278COMMIT WORK; 21279 21280# check transactions-2 success: 1 21281ROLLBACK WORK; 21282 21283# check transactions-3 success: 1 21284DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21285COMMIT WORK; 21286ROLLBACK WORK; 21287 21288# check transactions-4 success: 1 21289INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21290SELECT f_int1, f_int1, '', '', 'was inserted' 21291FROM t0_template source_tab 21292WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21293 21294# check transactions-5 success: 1 21295ROLLBACK WORK; 21296 21297# check transactions-6 success: 1 21298# INFO: Storage engine used for t1 seems to be transactional. 21299COMMIT; 21300 21301# check transactions-7 success: 1 21302DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21303COMMIT WORK; 21304SET @@session.sql_mode = 'traditional'; 21305Warnings: 21306Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21307SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21308INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21309SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21310'', '', 'was inserted' FROM t0_template 21311WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21312ERROR 22012: Division by 0 21313COMMIT; 21314 21315# check transactions-8 success: 1 21316# INFO: Storage engine used for t1 seems to be able to revert 21317# changes made by the failing statement. 21318SET @@session.sql_mode = ''; 21319Warnings: 21320Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21321SET AUTOCOMMIT= 1; 21322DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21323COMMIT WORK; 21324UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21325 21326# check special-1 success: 1 21327UPDATE t1 SET f_charbig = ''; 21328 21329# check special-2 success: 1 21330UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21331INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21332SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21334INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21335SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21336'just inserted' FROM t0_template 21337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21338CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21339BEGIN 21340UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21341f_charbig = 'updated by trigger' 21342 WHERE f_int1 = new.f_int1; 21343END| 21344INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21345SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21347 21348# check trigger-1 success: 1 21349DROP TRIGGER trg_1; 21350UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21351f_int2 = CAST(f_char1 AS SIGNED INT), 21352f_charbig = 'just inserted' 21353 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21354DELETE FROM t0_aux 21355WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21356INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21357SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21358'just inserted' FROM t0_template 21359WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21360CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21361BEGIN 21362UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21363f_charbig = 'updated by trigger' 21364 WHERE f_int1 = new.f_int1; 21365END| 21366INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21367SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21369 21370# check trigger-2 success: 1 21371DROP TRIGGER trg_1; 21372UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21373f_int2 = CAST(f_char1 AS SIGNED INT), 21374f_charbig = 'just inserted' 21375 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21376DELETE FROM t0_aux 21377WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21378INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21379SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21380'just inserted' FROM t0_template 21381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21382CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21383BEGIN 21384UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21385f_charbig = 'updated by trigger' 21386 WHERE f_int1 = new.f_int1; 21387END| 21388UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21389WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21390 21391# check trigger-3 success: 1 21392DROP TRIGGER trg_1; 21393UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21394f_int2 = CAST(f_char1 AS SIGNED INT), 21395f_charbig = 'just inserted' 21396 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21397DELETE FROM t0_aux 21398WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21401'just inserted' FROM t0_template 21402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21403CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21404BEGIN 21405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21406f_charbig = 'updated by trigger' 21407 WHERE f_int1 = - old.f_int1; 21408END| 21409UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21410WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21411 21412# check trigger-4 success: 1 21413DROP TRIGGER trg_1; 21414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21415f_int2 = CAST(f_char1 AS SIGNED INT), 21416f_charbig = 'just inserted' 21417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21418DELETE FROM t0_aux 21419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21422'just inserted' FROM t0_template 21423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21424CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21425BEGIN 21426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21427f_charbig = 'updated by trigger' 21428 WHERE f_int1 = new.f_int1; 21429END| 21430UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21431WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21432 21433# check trigger-5 success: 1 21434DROP TRIGGER trg_1; 21435UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21436f_int2 = CAST(f_char1 AS SIGNED INT), 21437f_charbig = 'just inserted' 21438 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21439DELETE FROM t0_aux 21440WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21441INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21442SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21443'just inserted' FROM t0_template 21444WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21445CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21446BEGIN 21447UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21448f_charbig = 'updated by trigger' 21449 WHERE f_int1 = - old.f_int1; 21450END| 21451UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21452WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21453 21454# check trigger-6 success: 1 21455DROP TRIGGER trg_1; 21456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21457f_int2 = CAST(f_char1 AS SIGNED INT), 21458f_charbig = 'just inserted' 21459 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21460DELETE FROM t0_aux 21461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21464'just inserted' FROM t0_template 21465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21466CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21467BEGIN 21468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21469f_charbig = 'updated by trigger' 21470 WHERE f_int1 = - old.f_int1; 21471END| 21472DELETE FROM t0_aux 21473WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21474 21475# check trigger-7 success: 1 21476DROP TRIGGER trg_1; 21477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21478f_int2 = CAST(f_char1 AS SIGNED INT), 21479f_charbig = 'just inserted' 21480 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21481DELETE FROM t0_aux 21482WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21484SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21485'just inserted' FROM t0_template 21486WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21487CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 21488BEGIN 21489UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21490f_charbig = 'updated by trigger' 21491 WHERE f_int1 = - old.f_int1; 21492END| 21493DELETE FROM t0_aux 21494WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21495 21496# check trigger-8 success: 1 21497DROP TRIGGER trg_1; 21498UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21499f_int2 = CAST(f_char1 AS SIGNED INT), 21500f_charbig = 'just inserted' 21501 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21502DELETE FROM t0_aux 21503WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21504DELETE FROM t1 21505WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21506CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21507BEGIN 21508SET new.f_int1 = old.f_int1 + @max_row, 21509new.f_int2 = old.f_int2 - @max_row, 21510new.f_charbig = '####updated per update trigger####'; 21511END| 21512UPDATE t1 21513SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21514f_charbig = '####updated per update statement itself####'; 21515 21516# check trigger-9 success: 1 21517DROP TRIGGER trg_2; 21518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21519f_int2 = CAST(f_char1 AS SIGNED INT), 21520f_charbig = CONCAT('===',f_char1,'==='); 21521CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21522BEGIN 21523SET new.f_int1 = new.f_int1 + @max_row, 21524new.f_int2 = new.f_int2 - @max_row, 21525new.f_charbig = '####updated per update trigger####'; 21526END| 21527UPDATE t1 21528SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21529f_charbig = '####updated per update statement itself####'; 21530 21531# check trigger-10 success: 1 21532DROP TRIGGER trg_2; 21533UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21534f_int2 = CAST(f_char1 AS SIGNED INT), 21535f_charbig = CONCAT('===',f_char1,'==='); 21536CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21537BEGIN 21538SET new.f_int1 = @my_max1 + @counter, 21539new.f_int2 = @my_min2 - @counter, 21540new.f_charbig = '####updated per insert trigger####'; 21541SET @counter = @counter + 1; 21542END| 21543SET @counter = 1; 21544SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21545INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21546SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21547CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21549ORDER BY f_int1; 21550DROP TRIGGER trg_3; 21551 21552# check trigger-11 success: 1 21553DELETE FROM t1 21554WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21555AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21556AND f_charbig = '####updated per insert trigger####'; 21557CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21558BEGIN 21559SET new.f_int1 = @my_max1 + @counter, 21560new.f_int2 = @my_min2 - @counter, 21561new.f_charbig = '####updated per insert trigger####'; 21562SET @counter = @counter + 1; 21563END| 21564SET @counter = 1; 21565SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21566INSERT INTO t1 (f_char1, f_char2, f_charbig) 21567SELECT CAST(f_int1 AS CHAR), 21568CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21570ORDER BY f_int1; 21571DROP TRIGGER trg_3; 21572 21573# check trigger-12 success: 1 21574DELETE FROM t1 21575WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21576AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21577AND f_charbig = '####updated per insert trigger####'; 21578ANALYZE TABLE t1; 21579Table Op Msg_type Msg_text 21580test.t1 analyze status OK 21581CHECK TABLE t1 EXTENDED; 21582Table Op Msg_type Msg_text 21583test.t1 check status OK 21584CHECKSUM TABLE t1 EXTENDED; 21585Table Checksum 21586test.t1 <some_value> 21587OPTIMIZE TABLE t1; 21588Table Op Msg_type Msg_text 21589test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 21590test.t1 optimize status OK 21591# check layout success: 1 21592REPAIR TABLE t1 EXTENDED; 21593Table Op Msg_type Msg_text 21594test.t1 repair status OK 21595# check layout success: 1 21596TRUNCATE t1; 21597 21598# check TRUNCATE success: 1 21599# check layout success: 1 21600# End usability test (inc/partition_check.inc) 21601DROP TABLE t1; 21602CREATE TABLE t1 ( 21603f_int1 INTEGER, 21604f_int2 INTEGER, 21605f_char1 CHAR(20), 21606f_char2 CHAR(20), 21607f_charbig VARCHAR(1000) 21608, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 21609) 21610PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 21611(PARTITION parta VALUES LESS THAN (0), 21612PARTITION partb VALUES LESS THAN (5), 21613PARTITION partc VALUES LESS THAN (10), 21614PARTITION partd VALUES LESS THAN (10 + 5), 21615PARTITION parte VALUES LESS THAN (20), 21616PARTITION partf VALUES LESS THAN (2147483646)); 21617INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21618SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 21619# Start usability test (inc/partition_check.inc) 21620create_command 21621SHOW CREATE TABLE t1; 21622Table Create Table 21623t1 CREATE TABLE `t1` ( 21624 `f_int1` int(11) NOT NULL, 21625 `f_int2` int(11) NOT NULL, 21626 `f_char1` char(20) DEFAULT NULL, 21627 `f_char2` char(20) DEFAULT NULL, 21628 `f_charbig` varchar(1000) DEFAULT NULL, 21629 PRIMARY KEY (`f_int2`,`f_int1`), 21630 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 21631) ENGINE=InnoDB DEFAULT CHARSET=latin1 21632/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 21633(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 21634 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 21635 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 21636 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 21637 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 21638 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 21639 21640unified filelist 21641t1#P#parta.ibd 21642t1#P#partb.ibd 21643t1#P#partc.ibd 21644t1#P#partd.ibd 21645t1#P#parte.ibd 21646t1#P#partf.ibd 21647t1.frm 21648 21649# check prerequisites-1 success: 1 21650# check COUNT(*) success: 1 21651# check MIN/MAX(f_int1) success: 1 21652# check MIN/MAX(f_int2) success: 1 21653INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21654SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21655CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 21656WHERE f_int1 IN (2,3); 21657ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 21658# check prerequisites-3 success: 1 21659# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 21660INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21661SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21662CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21663WHERE f_int1 IN (2,3); 21664DELETE FROM t1 WHERE f_charbig = 'delete me'; 21665INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21666SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21667CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21668WHERE f_int1 IN (2,3); 21669DELETE FROM t1 WHERE f_charbig = 'delete me'; 21670# check read via f_int1 success: 1 21671# check read via f_int2 success: 1 21672 21673# check multiple-1 success: 1 21674DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 21675 21676# check multiple-2 success: 1 21677INSERT INTO t1 SELECT * FROM t0_template 21678WHERE MOD(f_int1,3) = 0; 21679 21680# check multiple-3 success: 1 21681UPDATE t1 SET f_int1 = f_int1 + @max_row 21682WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 21683AND @max_row_div2 + @max_row_div4; 21684 21685# check multiple-4 success: 1 21686DELETE FROM t1 21687WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 21688AND @max_row_div2 + @max_row_div4 + @max_row; 21689 21690# check multiple-5 success: 1 21691SELECT COUNT(*) INTO @try_count FROM t0_template 21692WHERE MOD(f_int1,3) = 0 21693AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21694SELECT COUNT(*) INTO @clash_count 21695FROM t1 INNER JOIN t0_template USING(f_int1) 21696WHERE MOD(f_int1,3) = 0 21697AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21698SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 21699INSERT INTO t1 21700SET f_int1 = @cur_value , f_int2 = @cur_value, 21701f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21702f_charbig = '#SINGLE#'; 21703 21704# check single-1 success: 1 21705SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21706INSERT INTO t1 21707SET f_int1 = @cur_value , f_int2 = @cur_value, 21708f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21709f_charbig = '#SINGLE#'; 21710 21711# check single-2 success: 1 21712SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21713SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21714UPDATE t1 SET f_int1 = @cur_value2 21715WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21716 21717# check single-3 success: 1 21718SET @cur_value1= -1; 21719SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21720UPDATE t1 SET f_int1 = @cur_value1 21721WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21722 21723# check single-4 success: 1 21724SELECT MAX(f_int1) INTO @cur_value FROM t1; 21725DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21726 21727# check single-5 success: 1 21728DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21729 21730# check single-6 success: 1 21731INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21732ERROR HY000: Table has no partition for value 2147483647 21733DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21734INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21735f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21736f_charbig = '#NULL#'; 21737INSERT INTO t1 21738SET f_int1 = NULL , f_int2 = -@max_row, 21739f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21740f_charbig = '#NULL#'; 21741ERROR 23000: Column 'f_int1' cannot be null 21742# check null success: 1 21743DELETE FROM t1 21744WHERE f_int1 = 0 AND f_int2 = 0 21745AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21746AND f_charbig = '#NULL#'; 21747INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21748SELECT f_int1, f_int1, '', '', 'was inserted' 21749 FROM t0_template source_tab 21750WHERE MOD(f_int1,3) = 0 21751AND f_int1 BETWEEN @max_row_div2 AND @max_row 21752ON DUPLICATE KEY 21753UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21754f_int2 = 2 * @max_row + source_tab.f_int1, 21755f_charbig = 'was updated'; 21756 21757# check unique-1-a success: 1 21758 21759# check unique-1-b success: 1 21760DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21761UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21762f_int2 = CAST(f_char1 AS SIGNED INT), 21763f_charbig = CONCAT('===',f_char1,'===') 21764WHERE f_charbig = 'was updated'; 21765REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21766SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21767 FROM t0_template source_tab 21768WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21769 21770# check replace success: 1 21771DELETE FROM t1 21772WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21773DELETE FROM t1 21774WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21775f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21776UPDATE t1 SET f_int2 = f_int1, 21777f_char1 = CAST(f_int1 AS CHAR), 21778f_char2 = CAST(f_int1 AS CHAR), 21779f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21780WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21781SET AUTOCOMMIT= 0; 21782INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21783SELECT f_int1, f_int1, '', '', 'was inserted' 21784FROM t0_template source_tab 21785WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21786 21787# check transactions-1 success: 1 21788COMMIT WORK; 21789 21790# check transactions-2 success: 1 21791ROLLBACK WORK; 21792 21793# check transactions-3 success: 1 21794DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21795COMMIT WORK; 21796ROLLBACK WORK; 21797 21798# check transactions-4 success: 1 21799INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21800SELECT f_int1, f_int1, '', '', 'was inserted' 21801FROM t0_template source_tab 21802WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21803 21804# check transactions-5 success: 1 21805ROLLBACK WORK; 21806 21807# check transactions-6 success: 1 21808# INFO: Storage engine used for t1 seems to be transactional. 21809COMMIT; 21810 21811# check transactions-7 success: 1 21812DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21813COMMIT WORK; 21814SET @@session.sql_mode = 'traditional'; 21815Warnings: 21816Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21817SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21818INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21819SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21820'', '', 'was inserted' FROM t0_template 21821WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21822ERROR 22012: Division by 0 21823COMMIT; 21824 21825# check transactions-8 success: 1 21826# INFO: Storage engine used for t1 seems to be able to revert 21827# changes made by the failing statement. 21828SET @@session.sql_mode = ''; 21829Warnings: 21830Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21831SET AUTOCOMMIT= 1; 21832DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21833COMMIT WORK; 21834UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21835 21836# check special-1 success: 1 21837UPDATE t1 SET f_charbig = ''; 21838 21839# check special-2 success: 1 21840UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21841INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21842SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21843WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21844INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21845SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21846'just inserted' FROM t0_template 21847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21848CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21849BEGIN 21850UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21851f_charbig = 'updated by trigger' 21852 WHERE f_int1 = new.f_int1; 21853END| 21854INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21855SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21856WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21857 21858# check trigger-1 success: 1 21859DROP TRIGGER trg_1; 21860UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21861f_int2 = CAST(f_char1 AS SIGNED INT), 21862f_charbig = 'just inserted' 21863 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21864DELETE FROM t0_aux 21865WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21866INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21867SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21868'just inserted' FROM t0_template 21869WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21870CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21871BEGIN 21872UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21873f_charbig = 'updated by trigger' 21874 WHERE f_int1 = new.f_int1; 21875END| 21876INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21877SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21879 21880# check trigger-2 success: 1 21881DROP TRIGGER trg_1; 21882UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21883f_int2 = CAST(f_char1 AS SIGNED INT), 21884f_charbig = 'just inserted' 21885 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21886DELETE FROM t0_aux 21887WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21888INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21889SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21890'just inserted' FROM t0_template 21891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21892CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21893BEGIN 21894UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21895f_charbig = 'updated by trigger' 21896 WHERE f_int1 = new.f_int1; 21897END| 21898UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21899WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21900 21901# check trigger-3 success: 1 21902DROP TRIGGER trg_1; 21903UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21904f_int2 = CAST(f_char1 AS SIGNED INT), 21905f_charbig = 'just inserted' 21906 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21907DELETE FROM t0_aux 21908WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21909INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21910SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21911'just inserted' FROM t0_template 21912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21913CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21914BEGIN 21915UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21916f_charbig = 'updated by trigger' 21917 WHERE f_int1 = - old.f_int1; 21918END| 21919UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21920WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21921 21922# check trigger-4 success: 1 21923DROP TRIGGER trg_1; 21924UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21925f_int2 = CAST(f_char1 AS SIGNED INT), 21926f_charbig = 'just inserted' 21927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21928DELETE FROM t0_aux 21929WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21930INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21931SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21932'just inserted' FROM t0_template 21933WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21934CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21935BEGIN 21936UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21937f_charbig = 'updated by trigger' 21938 WHERE f_int1 = new.f_int1; 21939END| 21940UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21941WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21942 21943# check trigger-5 success: 1 21944DROP TRIGGER trg_1; 21945UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21946f_int2 = CAST(f_char1 AS SIGNED INT), 21947f_charbig = 'just inserted' 21948 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21949DELETE FROM t0_aux 21950WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21951INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21952SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21953'just inserted' FROM t0_template 21954WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21955CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21956BEGIN 21957UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21958f_charbig = 'updated by trigger' 21959 WHERE f_int1 = - old.f_int1; 21960END| 21961UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21962WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21963 21964# check trigger-6 success: 1 21965DROP TRIGGER trg_1; 21966UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21967f_int2 = CAST(f_char1 AS SIGNED INT), 21968f_charbig = 'just inserted' 21969 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21970DELETE FROM t0_aux 21971WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21972INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21973SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21974'just inserted' FROM t0_template 21975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21976CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21977BEGIN 21978UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21979f_charbig = 'updated by trigger' 21980 WHERE f_int1 = - old.f_int1; 21981END| 21982DELETE FROM t0_aux 21983WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21984 21985# check trigger-7 success: 1 21986DROP TRIGGER trg_1; 21987UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21988f_int2 = CAST(f_char1 AS SIGNED INT), 21989f_charbig = 'just inserted' 21990 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21991DELETE FROM t0_aux 21992WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21993INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21994SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21995'just inserted' FROM t0_template 21996WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21997CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 21998BEGIN 21999UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22000f_charbig = 'updated by trigger' 22001 WHERE f_int1 = - old.f_int1; 22002END| 22003DELETE FROM t0_aux 22004WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22005 22006# check trigger-8 success: 1 22007DROP TRIGGER trg_1; 22008UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22009f_int2 = CAST(f_char1 AS SIGNED INT), 22010f_charbig = 'just inserted' 22011 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22012DELETE FROM t0_aux 22013WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22014DELETE FROM t1 22015WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22016CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22017BEGIN 22018SET new.f_int1 = old.f_int1 + @max_row, 22019new.f_int2 = old.f_int2 - @max_row, 22020new.f_charbig = '####updated per update trigger####'; 22021END| 22022UPDATE t1 22023SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22024f_charbig = '####updated per update statement itself####'; 22025 22026# check trigger-9 success: 1 22027DROP TRIGGER trg_2; 22028UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22029f_int2 = CAST(f_char1 AS SIGNED INT), 22030f_charbig = CONCAT('===',f_char1,'==='); 22031CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22032BEGIN 22033SET new.f_int1 = new.f_int1 + @max_row, 22034new.f_int2 = new.f_int2 - @max_row, 22035new.f_charbig = '####updated per update trigger####'; 22036END| 22037UPDATE t1 22038SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22039f_charbig = '####updated per update statement itself####'; 22040 22041# check trigger-10 success: 1 22042DROP TRIGGER trg_2; 22043UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22044f_int2 = CAST(f_char1 AS SIGNED INT), 22045f_charbig = CONCAT('===',f_char1,'==='); 22046CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22047BEGIN 22048SET new.f_int1 = @my_max1 + @counter, 22049new.f_int2 = @my_min2 - @counter, 22050new.f_charbig = '####updated per insert trigger####'; 22051SET @counter = @counter + 1; 22052END| 22053SET @counter = 1; 22054SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22055INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22056SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22057CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22058WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22059ORDER BY f_int1; 22060DROP TRIGGER trg_3; 22061 22062# check trigger-11 success: 1 22063DELETE FROM t1 22064WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22065AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22066AND f_charbig = '####updated per insert trigger####'; 22067CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22068BEGIN 22069SET new.f_int1 = @my_max1 + @counter, 22070new.f_int2 = @my_min2 - @counter, 22071new.f_charbig = '####updated per insert trigger####'; 22072SET @counter = @counter + 1; 22073END| 22074SET @counter = 1; 22075SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22076INSERT INTO t1 (f_char1, f_char2, f_charbig) 22077SELECT CAST(f_int1 AS CHAR), 22078CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22079WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22080ORDER BY f_int1; 22081DROP TRIGGER trg_3; 22082 22083# check trigger-12 success: 1 22084DELETE FROM t1 22085WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22086AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22087AND f_charbig = '####updated per insert trigger####'; 22088ANALYZE TABLE t1; 22089Table Op Msg_type Msg_text 22090test.t1 analyze status OK 22091CHECK TABLE t1 EXTENDED; 22092Table Op Msg_type Msg_text 22093test.t1 check status OK 22094CHECKSUM TABLE t1 EXTENDED; 22095Table Checksum 22096test.t1 <some_value> 22097OPTIMIZE TABLE t1; 22098Table Op Msg_type Msg_text 22099test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 22100test.t1 optimize status OK 22101# check layout success: 1 22102REPAIR TABLE t1 EXTENDED; 22103Table Op Msg_type Msg_text 22104test.t1 repair status OK 22105# check layout success: 1 22106TRUNCATE t1; 22107 22108# check TRUNCATE success: 1 22109# check layout success: 1 22110# End usability test (inc/partition_check.inc) 22111DROP TABLE t1; 22112CREATE TABLE t1 ( 22113f_int1 INTEGER, 22114f_int2 INTEGER, 22115f_char1 CHAR(20), 22116f_char2 CHAR(20), 22117f_charbig VARCHAR(1000) 22118, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 22119) 22120PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 22121(PARTITION parta VALUES LESS THAN (0), 22122PARTITION partb VALUES LESS THAN (5), 22123PARTITION partc VALUES LESS THAN (10), 22124PARTITION partd VALUES LESS THAN (2147483646)); 22125INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22126SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 22127# Start usability test (inc/partition_check.inc) 22128create_command 22129SHOW CREATE TABLE t1; 22130Table Create Table 22131t1 CREATE TABLE `t1` ( 22132 `f_int1` int(11) NOT NULL, 22133 `f_int2` int(11) NOT NULL, 22134 `f_char1` char(20) DEFAULT NULL, 22135 `f_char2` char(20) DEFAULT NULL, 22136 `f_charbig` varchar(1000) DEFAULT NULL, 22137 PRIMARY KEY (`f_int2`,`f_int1`), 22138 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 22139) ENGINE=InnoDB DEFAULT CHARSET=latin1 22140/*!50100 PARTITION BY RANGE (f_int1) 22141SUBPARTITION BY HASH (f_int2) 22142SUBPARTITIONS 2 22143(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 22144 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 22145 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 22146 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 22147 22148unified filelist 22149t1#P#parta#SP#partasp0.ibd 22150t1#P#parta#SP#partasp1.ibd 22151t1#P#partb#SP#partbsp0.ibd 22152t1#P#partb#SP#partbsp1.ibd 22153t1#P#partc#SP#partcsp0.ibd 22154t1#P#partc#SP#partcsp1.ibd 22155t1#P#partd#SP#partdsp0.ibd 22156t1#P#partd#SP#partdsp1.ibd 22157t1.frm 22158 22159# check prerequisites-1 success: 1 22160# check COUNT(*) success: 1 22161# check MIN/MAX(f_int1) success: 1 22162# check MIN/MAX(f_int2) success: 1 22163INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22164SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22165CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 22166WHERE f_int1 IN (2,3); 22167ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 22168# check prerequisites-3 success: 1 22169# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 22170INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22171SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22172CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22173WHERE f_int1 IN (2,3); 22174DELETE FROM t1 WHERE f_charbig = 'delete me'; 22175INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22176SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22177CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22178WHERE f_int1 IN (2,3); 22179DELETE FROM t1 WHERE f_charbig = 'delete me'; 22180# check read via f_int1 success: 1 22181# check read via f_int2 success: 1 22182 22183# check multiple-1 success: 1 22184DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 22185 22186# check multiple-2 success: 1 22187INSERT INTO t1 SELECT * FROM t0_template 22188WHERE MOD(f_int1,3) = 0; 22189 22190# check multiple-3 success: 1 22191UPDATE t1 SET f_int1 = f_int1 + @max_row 22192WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 22193AND @max_row_div2 + @max_row_div4; 22194 22195# check multiple-4 success: 1 22196DELETE FROM t1 22197WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 22198AND @max_row_div2 + @max_row_div4 + @max_row; 22199 22200# check multiple-5 success: 1 22201SELECT COUNT(*) INTO @try_count FROM t0_template 22202WHERE MOD(f_int1,3) = 0 22203AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22204SELECT COUNT(*) INTO @clash_count 22205FROM t1 INNER JOIN t0_template USING(f_int1) 22206WHERE MOD(f_int1,3) = 0 22207AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22208SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 22209INSERT INTO t1 22210SET f_int1 = @cur_value , f_int2 = @cur_value, 22211f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22212f_charbig = '#SINGLE#'; 22213 22214# check single-1 success: 1 22215SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 22216INSERT INTO t1 22217SET f_int1 = @cur_value , f_int2 = @cur_value, 22218f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22219f_charbig = '#SINGLE#'; 22220 22221# check single-2 success: 1 22222SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 22223SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 22224UPDATE t1 SET f_int1 = @cur_value2 22225WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 22226 22227# check single-3 success: 1 22228SET @cur_value1= -1; 22229SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 22230UPDATE t1 SET f_int1 = @cur_value1 22231WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 22232 22233# check single-4 success: 1 22234SELECT MAX(f_int1) INTO @cur_value FROM t1; 22235DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 22236 22237# check single-5 success: 1 22238DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 22239 22240# check single-6 success: 1 22241INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 22242ERROR HY000: Table has no partition for value 2147483647 22243DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 22244INSERT t1 SET f_int1 = 0 , f_int2 = 0, 22245f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 22246f_charbig = '#NULL#'; 22247INSERT INTO t1 22248SET f_int1 = NULL , f_int2 = -@max_row, 22249f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 22250f_charbig = '#NULL#'; 22251ERROR 23000: Column 'f_int1' cannot be null 22252# check null success: 1 22253DELETE FROM t1 22254WHERE f_int1 = 0 AND f_int2 = 0 22255AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 22256AND f_charbig = '#NULL#'; 22257INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22258SELECT f_int1, f_int1, '', '', 'was inserted' 22259 FROM t0_template source_tab 22260WHERE MOD(f_int1,3) = 0 22261AND f_int1 BETWEEN @max_row_div2 AND @max_row 22262ON DUPLICATE KEY 22263UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 22264f_int2 = 2 * @max_row + source_tab.f_int1, 22265f_charbig = 'was updated'; 22266 22267# check unique-1-a success: 1 22268 22269# check unique-1-b success: 1 22270DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22271UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22272f_int2 = CAST(f_char1 AS SIGNED INT), 22273f_charbig = CONCAT('===',f_char1,'===') 22274WHERE f_charbig = 'was updated'; 22275REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22276SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 22277 FROM t0_template source_tab 22278WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22279 22280# check replace success: 1 22281DELETE FROM t1 22282WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 22283DELETE FROM t1 22284WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 22285f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 22286UPDATE t1 SET f_int2 = f_int1, 22287f_char1 = CAST(f_int1 AS CHAR), 22288f_char2 = CAST(f_int1 AS CHAR), 22289f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 22290WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 22291SET AUTOCOMMIT= 0; 22292INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22293SELECT f_int1, f_int1, '', '', 'was inserted' 22294FROM t0_template source_tab 22295WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22296 22297# check transactions-1 success: 1 22298COMMIT WORK; 22299 22300# check transactions-2 success: 1 22301ROLLBACK WORK; 22302 22303# check transactions-3 success: 1 22304DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22305COMMIT WORK; 22306ROLLBACK WORK; 22307 22308# check transactions-4 success: 1 22309INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22310SELECT f_int1, f_int1, '', '', 'was inserted' 22311FROM t0_template source_tab 22312WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22313 22314# check transactions-5 success: 1 22315ROLLBACK WORK; 22316 22317# check transactions-6 success: 1 22318# INFO: Storage engine used for t1 seems to be transactional. 22319COMMIT; 22320 22321# check transactions-7 success: 1 22322DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22323COMMIT WORK; 22324SET @@session.sql_mode = 'traditional'; 22325Warnings: 22326Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22327SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 22328INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22329SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 22330'', '', 'was inserted' FROM t0_template 22331WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22332ERROR 22012: Division by 0 22333COMMIT; 22334 22335# check transactions-8 success: 1 22336# INFO: Storage engine used for t1 seems to be able to revert 22337# changes made by the failing statement. 22338SET @@session.sql_mode = ''; 22339Warnings: 22340Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22341SET AUTOCOMMIT= 1; 22342DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22343COMMIT WORK; 22344UPDATE t1 SET f_charbig = REPEAT('b', 1000); 22345 22346# check special-1 success: 1 22347UPDATE t1 SET f_charbig = ''; 22348 22349# check special-2 success: 1 22350UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 22351INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22352SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 22353WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22354INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22355SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22356'just inserted' FROM t0_template 22357WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22358CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 22359BEGIN 22360UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22361f_charbig = 'updated by trigger' 22362 WHERE f_int1 = new.f_int1; 22363END| 22364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22365SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22367 22368# check trigger-1 success: 1 22369DROP TRIGGER trg_1; 22370UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22371f_int2 = CAST(f_char1 AS SIGNED INT), 22372f_charbig = 'just inserted' 22373 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22374DELETE FROM t0_aux 22375WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22376INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22377SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22378'just inserted' FROM t0_template 22379WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22380CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 22381BEGIN 22382UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22383f_charbig = 'updated by trigger' 22384 WHERE f_int1 = new.f_int1; 22385END| 22386INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22387SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22389 22390# check trigger-2 success: 1 22391DROP TRIGGER trg_1; 22392UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22393f_int2 = CAST(f_char1 AS SIGNED INT), 22394f_charbig = 'just inserted' 22395 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22396DELETE FROM t0_aux 22397WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22398INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22399SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22400'just inserted' FROM t0_template 22401WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22402CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22403BEGIN 22404UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22405f_charbig = 'updated by trigger' 22406 WHERE f_int1 = new.f_int1; 22407END| 22408UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22409WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22410 22411# check trigger-3 success: 1 22412DROP TRIGGER trg_1; 22413UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22414f_int2 = CAST(f_char1 AS SIGNED INT), 22415f_charbig = 'just inserted' 22416 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22417DELETE FROM t0_aux 22418WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22419INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22420SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22421'just inserted' FROM t0_template 22422WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22423CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22424BEGIN 22425UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22426f_charbig = 'updated by trigger' 22427 WHERE f_int1 = - old.f_int1; 22428END| 22429UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22430WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22431 22432# check trigger-4 success: 1 22433DROP TRIGGER trg_1; 22434UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22435f_int2 = CAST(f_char1 AS SIGNED INT), 22436f_charbig = 'just inserted' 22437 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22438DELETE FROM t0_aux 22439WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22440INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22441SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22442'just inserted' FROM t0_template 22443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22444CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22445BEGIN 22446UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22447f_charbig = 'updated by trigger' 22448 WHERE f_int1 = new.f_int1; 22449END| 22450UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22451WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22452 22453# check trigger-5 success: 1 22454DROP TRIGGER trg_1; 22455UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22456f_int2 = CAST(f_char1 AS SIGNED INT), 22457f_charbig = 'just inserted' 22458 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22459DELETE FROM t0_aux 22460WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22461INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22462SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22463'just inserted' FROM t0_template 22464WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22465CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22466BEGIN 22467UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22468f_charbig = 'updated by trigger' 22469 WHERE f_int1 = - old.f_int1; 22470END| 22471UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22472WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22473 22474# check trigger-6 success: 1 22475DROP TRIGGER trg_1; 22476UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22477f_int2 = CAST(f_char1 AS SIGNED INT), 22478f_charbig = 'just inserted' 22479 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22480DELETE FROM t0_aux 22481WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22482INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22483SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22484'just inserted' FROM t0_template 22485WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22486CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 22487BEGIN 22488UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22489f_charbig = 'updated by trigger' 22490 WHERE f_int1 = - old.f_int1; 22491END| 22492DELETE FROM t0_aux 22493WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22494 22495# check trigger-7 success: 1 22496DROP TRIGGER trg_1; 22497UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22498f_int2 = CAST(f_char1 AS SIGNED INT), 22499f_charbig = 'just inserted' 22500 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22501DELETE FROM t0_aux 22502WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22503INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22504SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22505'just inserted' FROM t0_template 22506WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22507CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 22508BEGIN 22509UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22510f_charbig = 'updated by trigger' 22511 WHERE f_int1 = - old.f_int1; 22512END| 22513DELETE FROM t0_aux 22514WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22515 22516# check trigger-8 success: 1 22517DROP TRIGGER trg_1; 22518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22519f_int2 = CAST(f_char1 AS SIGNED INT), 22520f_charbig = 'just inserted' 22521 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22522DELETE FROM t0_aux 22523WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22524DELETE FROM t1 22525WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22526CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22527BEGIN 22528SET new.f_int1 = old.f_int1 + @max_row, 22529new.f_int2 = old.f_int2 - @max_row, 22530new.f_charbig = '####updated per update trigger####'; 22531END| 22532UPDATE t1 22533SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22534f_charbig = '####updated per update statement itself####'; 22535 22536# check trigger-9 success: 1 22537DROP TRIGGER trg_2; 22538UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22539f_int2 = CAST(f_char1 AS SIGNED INT), 22540f_charbig = CONCAT('===',f_char1,'==='); 22541CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22542BEGIN 22543SET new.f_int1 = new.f_int1 + @max_row, 22544new.f_int2 = new.f_int2 - @max_row, 22545new.f_charbig = '####updated per update trigger####'; 22546END| 22547UPDATE t1 22548SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22549f_charbig = '####updated per update statement itself####'; 22550 22551# check trigger-10 success: 1 22552DROP TRIGGER trg_2; 22553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22554f_int2 = CAST(f_char1 AS SIGNED INT), 22555f_charbig = CONCAT('===',f_char1,'==='); 22556CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22557BEGIN 22558SET new.f_int1 = @my_max1 + @counter, 22559new.f_int2 = @my_min2 - @counter, 22560new.f_charbig = '####updated per insert trigger####'; 22561SET @counter = @counter + 1; 22562END| 22563SET @counter = 1; 22564SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22566SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22567CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22568WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22569ORDER BY f_int1; 22570DROP TRIGGER trg_3; 22571 22572# check trigger-11 success: 1 22573DELETE FROM t1 22574WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22575AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22576AND f_charbig = '####updated per insert trigger####'; 22577CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22578BEGIN 22579SET new.f_int1 = @my_max1 + @counter, 22580new.f_int2 = @my_min2 - @counter, 22581new.f_charbig = '####updated per insert trigger####'; 22582SET @counter = @counter + 1; 22583END| 22584SET @counter = 1; 22585SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22586INSERT INTO t1 (f_char1, f_char2, f_charbig) 22587SELECT CAST(f_int1 AS CHAR), 22588CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22589WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22590ORDER BY f_int1; 22591DROP TRIGGER trg_3; 22592 22593# check trigger-12 success: 1 22594DELETE FROM t1 22595WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22596AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22597AND f_charbig = '####updated per insert trigger####'; 22598ANALYZE TABLE t1; 22599Table Op Msg_type Msg_text 22600test.t1 analyze status OK 22601CHECK TABLE t1 EXTENDED; 22602Table Op Msg_type Msg_text 22603test.t1 check status OK 22604CHECKSUM TABLE t1 EXTENDED; 22605Table Checksum 22606test.t1 <some_value> 22607OPTIMIZE TABLE t1; 22608Table Op Msg_type Msg_text 22609test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 22610test.t1 optimize status OK 22611# check layout success: 1 22612REPAIR TABLE t1 EXTENDED; 22613Table Op Msg_type Msg_text 22614test.t1 repair status OK 22615# check layout success: 1 22616TRUNCATE t1; 22617 22618# check TRUNCATE success: 1 22619# check layout success: 1 22620# End usability test (inc/partition_check.inc) 22621DROP TABLE t1; 22622CREATE TABLE t1 ( 22623f_int1 INTEGER, 22624f_int2 INTEGER, 22625f_char1 CHAR(20), 22626f_char2 CHAR(20), 22627f_charbig VARCHAR(1000) 22628, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 22629) 22630PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 22631(PARTITION part1 VALUES LESS THAN (0) 22632(SUBPARTITION subpart11, SUBPARTITION subpart12), 22633PARTITION part2 VALUES LESS THAN (5) 22634(SUBPARTITION subpart21, SUBPARTITION subpart22), 22635PARTITION part3 VALUES LESS THAN (10) 22636(SUBPARTITION subpart31, SUBPARTITION subpart32), 22637PARTITION part4 VALUES LESS THAN (2147483646) 22638(SUBPARTITION subpart41, SUBPARTITION subpart42)); 22639INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22640SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 22641# Start usability test (inc/partition_check.inc) 22642create_command 22643SHOW CREATE TABLE t1; 22644Table Create Table 22645t1 CREATE TABLE `t1` ( 22646 `f_int1` int(11) NOT NULL, 22647 `f_int2` int(11) NOT NULL, 22648 `f_char1` char(20) DEFAULT NULL, 22649 `f_char2` char(20) DEFAULT NULL, 22650 `f_charbig` varchar(1000) DEFAULT NULL, 22651 PRIMARY KEY (`f_int2`,`f_int1`), 22652 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 22653) ENGINE=InnoDB DEFAULT CHARSET=latin1 22654/*!50100 PARTITION BY RANGE (f_int1) 22655SUBPARTITION BY KEY (f_int2) 22656(PARTITION part1 VALUES LESS THAN (0) 22657 (SUBPARTITION subpart11 ENGINE = InnoDB, 22658 SUBPARTITION subpart12 ENGINE = InnoDB), 22659 PARTITION part2 VALUES LESS THAN (5) 22660 (SUBPARTITION subpart21 ENGINE = InnoDB, 22661 SUBPARTITION subpart22 ENGINE = InnoDB), 22662 PARTITION part3 VALUES LESS THAN (10) 22663 (SUBPARTITION subpart31 ENGINE = InnoDB, 22664 SUBPARTITION subpart32 ENGINE = InnoDB), 22665 PARTITION part4 VALUES LESS THAN (2147483646) 22666 (SUBPARTITION subpart41 ENGINE = InnoDB, 22667 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 22668 22669unified filelist 22670t1#P#part1#SP#subpart11.ibd 22671t1#P#part1#SP#subpart12.ibd 22672t1#P#part2#SP#subpart21.ibd 22673t1#P#part2#SP#subpart22.ibd 22674t1#P#part3#SP#subpart31.ibd 22675t1#P#part3#SP#subpart32.ibd 22676t1#P#part4#SP#subpart41.ibd 22677t1#P#part4#SP#subpart42.ibd 22678t1.frm 22679 22680# check prerequisites-1 success: 1 22681# check COUNT(*) success: 1 22682# check MIN/MAX(f_int1) success: 1 22683# check MIN/MAX(f_int2) success: 1 22684INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22685SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22686CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 22687WHERE f_int1 IN (2,3); 22688ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 22689# check prerequisites-3 success: 1 22690# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 22691INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22692SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22693CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22694WHERE f_int1 IN (2,3); 22695DELETE FROM t1 WHERE f_charbig = 'delete me'; 22696INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22697SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22698CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22699WHERE f_int1 IN (2,3); 22700DELETE FROM t1 WHERE f_charbig = 'delete me'; 22701# check read via f_int1 success: 1 22702# check read via f_int2 success: 1 22703 22704# check multiple-1 success: 1 22705DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 22706 22707# check multiple-2 success: 1 22708INSERT INTO t1 SELECT * FROM t0_template 22709WHERE MOD(f_int1,3) = 0; 22710 22711# check multiple-3 success: 1 22712UPDATE t1 SET f_int1 = f_int1 + @max_row 22713WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 22714AND @max_row_div2 + @max_row_div4; 22715 22716# check multiple-4 success: 1 22717DELETE FROM t1 22718WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 22719AND @max_row_div2 + @max_row_div4 + @max_row; 22720 22721# check multiple-5 success: 1 22722SELECT COUNT(*) INTO @try_count FROM t0_template 22723WHERE MOD(f_int1,3) = 0 22724AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22725SELECT COUNT(*) INTO @clash_count 22726FROM t1 INNER JOIN t0_template USING(f_int1) 22727WHERE MOD(f_int1,3) = 0 22728AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22729SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 22730INSERT INTO t1 22731SET f_int1 = @cur_value , f_int2 = @cur_value, 22732f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22733f_charbig = '#SINGLE#'; 22734 22735# check single-1 success: 1 22736SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 22737INSERT INTO t1 22738SET f_int1 = @cur_value , f_int2 = @cur_value, 22739f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22740f_charbig = '#SINGLE#'; 22741 22742# check single-2 success: 1 22743SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 22744SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 22745UPDATE t1 SET f_int1 = @cur_value2 22746WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 22747 22748# check single-3 success: 1 22749SET @cur_value1= -1; 22750SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 22751UPDATE t1 SET f_int1 = @cur_value1 22752WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 22753 22754# check single-4 success: 1 22755SELECT MAX(f_int1) INTO @cur_value FROM t1; 22756DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 22757 22758# check single-5 success: 1 22759DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 22760 22761# check single-6 success: 1 22762INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 22763ERROR HY000: Table has no partition for value 2147483647 22764DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 22765INSERT t1 SET f_int1 = 0 , f_int2 = 0, 22766f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 22767f_charbig = '#NULL#'; 22768INSERT INTO t1 22769SET f_int1 = NULL , f_int2 = -@max_row, 22770f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 22771f_charbig = '#NULL#'; 22772ERROR 23000: Column 'f_int1' cannot be null 22773# check null success: 1 22774DELETE FROM t1 22775WHERE f_int1 = 0 AND f_int2 = 0 22776AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 22777AND f_charbig = '#NULL#'; 22778INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22779SELECT f_int1, f_int1, '', '', 'was inserted' 22780 FROM t0_template source_tab 22781WHERE MOD(f_int1,3) = 0 22782AND f_int1 BETWEEN @max_row_div2 AND @max_row 22783ON DUPLICATE KEY 22784UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 22785f_int2 = 2 * @max_row + source_tab.f_int1, 22786f_charbig = 'was updated'; 22787 22788# check unique-1-a success: 1 22789 22790# check unique-1-b success: 1 22791DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22792UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22793f_int2 = CAST(f_char1 AS SIGNED INT), 22794f_charbig = CONCAT('===',f_char1,'===') 22795WHERE f_charbig = 'was updated'; 22796REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22797SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 22798 FROM t0_template source_tab 22799WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22800 22801# check replace success: 1 22802DELETE FROM t1 22803WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 22804DELETE FROM t1 22805WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 22806f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 22807UPDATE t1 SET f_int2 = f_int1, 22808f_char1 = CAST(f_int1 AS CHAR), 22809f_char2 = CAST(f_int1 AS CHAR), 22810f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 22811WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 22812SET AUTOCOMMIT= 0; 22813INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22814SELECT f_int1, f_int1, '', '', 'was inserted' 22815FROM t0_template source_tab 22816WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22817 22818# check transactions-1 success: 1 22819COMMIT WORK; 22820 22821# check transactions-2 success: 1 22822ROLLBACK WORK; 22823 22824# check transactions-3 success: 1 22825DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22826COMMIT WORK; 22827ROLLBACK WORK; 22828 22829# check transactions-4 success: 1 22830INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22831SELECT f_int1, f_int1, '', '', 'was inserted' 22832FROM t0_template source_tab 22833WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22834 22835# check transactions-5 success: 1 22836ROLLBACK WORK; 22837 22838# check transactions-6 success: 1 22839# INFO: Storage engine used for t1 seems to be transactional. 22840COMMIT; 22841 22842# check transactions-7 success: 1 22843DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22844COMMIT WORK; 22845SET @@session.sql_mode = 'traditional'; 22846Warnings: 22847Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22848SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 22849INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22850SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 22851'', '', 'was inserted' FROM t0_template 22852WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22853ERROR 22012: Division by 0 22854COMMIT; 22855 22856# check transactions-8 success: 1 22857# INFO: Storage engine used for t1 seems to be able to revert 22858# changes made by the failing statement. 22859SET @@session.sql_mode = ''; 22860Warnings: 22861Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22862SET AUTOCOMMIT= 1; 22863DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22864COMMIT WORK; 22865UPDATE t1 SET f_charbig = REPEAT('b', 1000); 22866 22867# check special-1 success: 1 22868UPDATE t1 SET f_charbig = ''; 22869 22870# check special-2 success: 1 22871UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 22872INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22873SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 22874WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22875INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22876SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22877'just inserted' FROM t0_template 22878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22879CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 22880BEGIN 22881UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22882f_charbig = 'updated by trigger' 22883 WHERE f_int1 = new.f_int1; 22884END| 22885INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22886SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22887WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22888 22889# check trigger-1 success: 1 22890DROP TRIGGER trg_1; 22891UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22892f_int2 = CAST(f_char1 AS SIGNED INT), 22893f_charbig = 'just inserted' 22894 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22895DELETE FROM t0_aux 22896WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22897INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22898SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22899'just inserted' FROM t0_template 22900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22901CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 22902BEGIN 22903UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22904f_charbig = 'updated by trigger' 22905 WHERE f_int1 = new.f_int1; 22906END| 22907INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22908SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22909WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22910 22911# check trigger-2 success: 1 22912DROP TRIGGER trg_1; 22913UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22914f_int2 = CAST(f_char1 AS SIGNED INT), 22915f_charbig = 'just inserted' 22916 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22917DELETE FROM t0_aux 22918WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22919INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22920SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22921'just inserted' FROM t0_template 22922WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22923CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22924BEGIN 22925UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22926f_charbig = 'updated by trigger' 22927 WHERE f_int1 = new.f_int1; 22928END| 22929UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22930WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22931 22932# check trigger-3 success: 1 22933DROP TRIGGER trg_1; 22934UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22935f_int2 = CAST(f_char1 AS SIGNED INT), 22936f_charbig = 'just inserted' 22937 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22938DELETE FROM t0_aux 22939WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22940INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22941SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22942'just inserted' FROM t0_template 22943WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22944CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22945BEGIN 22946UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22947f_charbig = 'updated by trigger' 22948 WHERE f_int1 = - old.f_int1; 22949END| 22950UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22951WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22952 22953# check trigger-4 success: 1 22954DROP TRIGGER trg_1; 22955UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22956f_int2 = CAST(f_char1 AS SIGNED INT), 22957f_charbig = 'just inserted' 22958 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22959DELETE FROM t0_aux 22960WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22961INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22962SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22963'just inserted' FROM t0_template 22964WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22965CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22966BEGIN 22967UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22968f_charbig = 'updated by trigger' 22969 WHERE f_int1 = new.f_int1; 22970END| 22971UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22972WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22973 22974# check trigger-5 success: 1 22975DROP TRIGGER trg_1; 22976UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22977f_int2 = CAST(f_char1 AS SIGNED INT), 22978f_charbig = 'just inserted' 22979 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22980DELETE FROM t0_aux 22981WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22982INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22983SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22984'just inserted' FROM t0_template 22985WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22986CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22987BEGIN 22988UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22989f_charbig = 'updated by trigger' 22990 WHERE f_int1 = - old.f_int1; 22991END| 22992UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22993WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22994 22995# check trigger-6 success: 1 22996DROP TRIGGER trg_1; 22997UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22998f_int2 = CAST(f_char1 AS SIGNED INT), 22999f_charbig = 'just inserted' 23000 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23001DELETE FROM t0_aux 23002WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23003INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23004SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23005'just inserted' FROM t0_template 23006WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23007CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 23008BEGIN 23009UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23010f_charbig = 'updated by trigger' 23011 WHERE f_int1 = - old.f_int1; 23012END| 23013DELETE FROM t0_aux 23014WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23015 23016# check trigger-7 success: 1 23017DROP TRIGGER trg_1; 23018UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23019f_int2 = CAST(f_char1 AS SIGNED INT), 23020f_charbig = 'just inserted' 23021 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23022DELETE FROM t0_aux 23023WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23024INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23025SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23026'just inserted' FROM t0_template 23027WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23028CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 23029BEGIN 23030UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23031f_charbig = 'updated by trigger' 23032 WHERE f_int1 = - old.f_int1; 23033END| 23034DELETE FROM t0_aux 23035WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23036 23037# check trigger-8 success: 1 23038DROP TRIGGER trg_1; 23039UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23040f_int2 = CAST(f_char1 AS SIGNED INT), 23041f_charbig = 'just inserted' 23042 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23043DELETE FROM t0_aux 23044WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23045DELETE FROM t1 23046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23047CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23048BEGIN 23049SET new.f_int1 = old.f_int1 + @max_row, 23050new.f_int2 = old.f_int2 - @max_row, 23051new.f_charbig = '####updated per update trigger####'; 23052END| 23053UPDATE t1 23054SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23055f_charbig = '####updated per update statement itself####'; 23056 23057# check trigger-9 success: 1 23058DROP TRIGGER trg_2; 23059UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23060f_int2 = CAST(f_char1 AS SIGNED INT), 23061f_charbig = CONCAT('===',f_char1,'==='); 23062CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23063BEGIN 23064SET new.f_int1 = new.f_int1 + @max_row, 23065new.f_int2 = new.f_int2 - @max_row, 23066new.f_charbig = '####updated per update trigger####'; 23067END| 23068UPDATE t1 23069SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23070f_charbig = '####updated per update statement itself####'; 23071 23072# check trigger-10 success: 1 23073DROP TRIGGER trg_2; 23074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23075f_int2 = CAST(f_char1 AS SIGNED INT), 23076f_charbig = CONCAT('===',f_char1,'==='); 23077CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23078BEGIN 23079SET new.f_int1 = @my_max1 + @counter, 23080new.f_int2 = @my_min2 - @counter, 23081new.f_charbig = '####updated per insert trigger####'; 23082SET @counter = @counter + 1; 23083END| 23084SET @counter = 1; 23085SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23086INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23087SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23088CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23089WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23090ORDER BY f_int1; 23091DROP TRIGGER trg_3; 23092 23093# check trigger-11 success: 1 23094DELETE FROM t1 23095WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23096AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23097AND f_charbig = '####updated per insert trigger####'; 23098CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23099BEGIN 23100SET new.f_int1 = @my_max1 + @counter, 23101new.f_int2 = @my_min2 - @counter, 23102new.f_charbig = '####updated per insert trigger####'; 23103SET @counter = @counter + 1; 23104END| 23105SET @counter = 1; 23106SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23107INSERT INTO t1 (f_char1, f_char2, f_charbig) 23108SELECT CAST(f_int1 AS CHAR), 23109CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23110WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23111ORDER BY f_int1; 23112DROP TRIGGER trg_3; 23113 23114# check trigger-12 success: 1 23115DELETE FROM t1 23116WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23117AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23118AND f_charbig = '####updated per insert trigger####'; 23119ANALYZE TABLE t1; 23120Table Op Msg_type Msg_text 23121test.t1 analyze status OK 23122CHECK TABLE t1 EXTENDED; 23123Table Op Msg_type Msg_text 23124test.t1 check status OK 23125CHECKSUM TABLE t1 EXTENDED; 23126Table Checksum 23127test.t1 <some_value> 23128OPTIMIZE TABLE t1; 23129Table Op Msg_type Msg_text 23130test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 23131test.t1 optimize status OK 23132# check layout success: 1 23133REPAIR TABLE t1 EXTENDED; 23134Table Op Msg_type Msg_text 23135test.t1 repair status OK 23136# check layout success: 1 23137TRUNCATE t1; 23138 23139# check TRUNCATE success: 1 23140# check layout success: 1 23141# End usability test (inc/partition_check.inc) 23142DROP TABLE t1; 23143CREATE TABLE t1 ( 23144f_int1 INTEGER, 23145f_int2 INTEGER, 23146f_char1 CHAR(20), 23147f_char2 CHAR(20), 23148f_charbig VARCHAR(1000) 23149, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 23150) 23151PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 23152(PARTITION part1 VALUES IN (0) 23153(SUBPARTITION sp11, SUBPARTITION sp12), 23154PARTITION part2 VALUES IN (1) 23155(SUBPARTITION sp21, SUBPARTITION sp22), 23156PARTITION part3 VALUES IN (2) 23157(SUBPARTITION sp31, SUBPARTITION sp32), 23158PARTITION part4 VALUES IN (NULL) 23159(SUBPARTITION sp41, SUBPARTITION sp42)); 23160INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23161SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 23162# Start usability test (inc/partition_check.inc) 23163create_command 23164SHOW CREATE TABLE t1; 23165Table Create Table 23166t1 CREATE TABLE `t1` ( 23167 `f_int1` int(11) NOT NULL, 23168 `f_int2` int(11) NOT NULL, 23169 `f_char1` char(20) DEFAULT NULL, 23170 `f_char2` char(20) DEFAULT NULL, 23171 `f_charbig` varchar(1000) DEFAULT NULL, 23172 PRIMARY KEY (`f_int2`,`f_int1`), 23173 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 23174) ENGINE=InnoDB DEFAULT CHARSET=latin1 23175/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 23176SUBPARTITION BY HASH (f_int2 + 1) 23177(PARTITION part1 VALUES IN (0) 23178 (SUBPARTITION sp11 ENGINE = InnoDB, 23179 SUBPARTITION sp12 ENGINE = InnoDB), 23180 PARTITION part2 VALUES IN (1) 23181 (SUBPARTITION sp21 ENGINE = InnoDB, 23182 SUBPARTITION sp22 ENGINE = InnoDB), 23183 PARTITION part3 VALUES IN (2) 23184 (SUBPARTITION sp31 ENGINE = InnoDB, 23185 SUBPARTITION sp32 ENGINE = InnoDB), 23186 PARTITION part4 VALUES IN (NULL) 23187 (SUBPARTITION sp41 ENGINE = InnoDB, 23188 SUBPARTITION sp42 ENGINE = InnoDB)) */ 23189 23190unified filelist 23191t1#P#part1#SP#sp11.ibd 23192t1#P#part1#SP#sp12.ibd 23193t1#P#part2#SP#sp21.ibd 23194t1#P#part2#SP#sp22.ibd 23195t1#P#part3#SP#sp31.ibd 23196t1#P#part3#SP#sp32.ibd 23197t1#P#part4#SP#sp41.ibd 23198t1#P#part4#SP#sp42.ibd 23199t1.frm 23200 23201# check prerequisites-1 success: 1 23202# check COUNT(*) success: 1 23203# check MIN/MAX(f_int1) success: 1 23204# check MIN/MAX(f_int2) success: 1 23205INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23206SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23207CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 23208WHERE f_int1 IN (2,3); 23209ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 23210# check prerequisites-3 success: 1 23211# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 23212INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23213SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23214CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23215WHERE f_int1 IN (2,3); 23216DELETE FROM t1 WHERE f_charbig = 'delete me'; 23217INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23218SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23219CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23220WHERE f_int1 IN (2,3); 23221DELETE FROM t1 WHERE f_charbig = 'delete me'; 23222# check read via f_int1 success: 1 23223# check read via f_int2 success: 1 23224 23225# check multiple-1 success: 1 23226DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 23227 23228# check multiple-2 success: 1 23229INSERT INTO t1 SELECT * FROM t0_template 23230WHERE MOD(f_int1,3) = 0; 23231 23232# check multiple-3 success: 1 23233UPDATE t1 SET f_int1 = f_int1 + @max_row 23234WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 23235AND @max_row_div2 + @max_row_div4; 23236 23237# check multiple-4 success: 1 23238DELETE FROM t1 23239WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 23240AND @max_row_div2 + @max_row_div4 + @max_row; 23241 23242# check multiple-5 success: 1 23243SELECT COUNT(*) INTO @try_count FROM t0_template 23244WHERE MOD(f_int1,3) = 0 23245AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23246SELECT COUNT(*) INTO @clash_count 23247FROM t1 INNER JOIN t0_template USING(f_int1) 23248WHERE MOD(f_int1,3) = 0 23249AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23250SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 23251INSERT INTO t1 23252SET f_int1 = @cur_value , f_int2 = @cur_value, 23253f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23254f_charbig = '#SINGLE#'; 23255 23256# check single-1 success: 1 23257SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 23258INSERT INTO t1 23259SET f_int1 = @cur_value , f_int2 = @cur_value, 23260f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23261f_charbig = '#SINGLE#'; 23262 23263# check single-2 success: 1 23264SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 23265SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 23266UPDATE t1 SET f_int1 = @cur_value2 23267WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 23268 23269# check single-3 success: 1 23270SET @cur_value1= -1; 23271SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 23272UPDATE t1 SET f_int1 = @cur_value1 23273WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 23274 23275# check single-4 success: 1 23276SELECT MAX(f_int1) INTO @cur_value FROM t1; 23277DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 23278 23279# check single-5 success: 1 23280DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 23281 23282# check single-6 success: 1 23283INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 23284 23285# check single-7 success: 1 23286DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 23287DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 23288INSERT t1 SET f_int1 = 0 , f_int2 = 0, 23289f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 23290f_charbig = '#NULL#'; 23291INSERT INTO t1 23292SET f_int1 = NULL , f_int2 = -@max_row, 23293f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 23294f_charbig = '#NULL#'; 23295ERROR 23000: Column 'f_int1' cannot be null 23296# check null success: 1 23297DELETE FROM t1 23298WHERE f_int1 = 0 AND f_int2 = 0 23299AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 23300AND f_charbig = '#NULL#'; 23301INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23302SELECT f_int1, f_int1, '', '', 'was inserted' 23303 FROM t0_template source_tab 23304WHERE MOD(f_int1,3) = 0 23305AND f_int1 BETWEEN @max_row_div2 AND @max_row 23306ON DUPLICATE KEY 23307UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 23308f_int2 = 2 * @max_row + source_tab.f_int1, 23309f_charbig = 'was updated'; 23310 23311# check unique-1-a success: 1 23312 23313# check unique-1-b success: 1 23314DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23316f_int2 = CAST(f_char1 AS SIGNED INT), 23317f_charbig = CONCAT('===',f_char1,'===') 23318WHERE f_charbig = 'was updated'; 23319REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23320SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 23321 FROM t0_template source_tab 23322WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23323 23324# check replace success: 1 23325DELETE FROM t1 23326WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 23327DELETE FROM t1 23328WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 23329f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 23330UPDATE t1 SET f_int2 = f_int1, 23331f_char1 = CAST(f_int1 AS CHAR), 23332f_char2 = CAST(f_int1 AS CHAR), 23333f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 23334WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 23335SET AUTOCOMMIT= 0; 23336INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23337SELECT f_int1, f_int1, '', '', 'was inserted' 23338FROM t0_template source_tab 23339WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23340 23341# check transactions-1 success: 1 23342COMMIT WORK; 23343 23344# check transactions-2 success: 1 23345ROLLBACK WORK; 23346 23347# check transactions-3 success: 1 23348DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23349COMMIT WORK; 23350ROLLBACK WORK; 23351 23352# check transactions-4 success: 1 23353INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23354SELECT f_int1, f_int1, '', '', 'was inserted' 23355FROM t0_template source_tab 23356WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23357 23358# check transactions-5 success: 1 23359ROLLBACK WORK; 23360 23361# check transactions-6 success: 1 23362# INFO: Storage engine used for t1 seems to be transactional. 23363COMMIT; 23364 23365# check transactions-7 success: 1 23366DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23367COMMIT WORK; 23368SET @@session.sql_mode = 'traditional'; 23369Warnings: 23370Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23371SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 23372INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23373SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 23374'', '', 'was inserted' FROM t0_template 23375WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23376ERROR 22012: Division by 0 23377COMMIT; 23378 23379# check transactions-8 success: 1 23380# INFO: Storage engine used for t1 seems to be able to revert 23381# changes made by the failing statement. 23382SET @@session.sql_mode = ''; 23383Warnings: 23384Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23385SET AUTOCOMMIT= 1; 23386DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23387COMMIT WORK; 23388UPDATE t1 SET f_charbig = REPEAT('b', 1000); 23389 23390# check special-1 success: 1 23391UPDATE t1 SET f_charbig = ''; 23392 23393# check special-2 success: 1 23394UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 23395INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23396SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 23397WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23398INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23399SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23400'just inserted' FROM t0_template 23401WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23402CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 23403BEGIN 23404UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23405f_charbig = 'updated by trigger' 23406 WHERE f_int1 = new.f_int1; 23407END| 23408INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23409SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23410WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23411 23412# check trigger-1 success: 1 23413DROP TRIGGER trg_1; 23414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23415f_int2 = CAST(f_char1 AS SIGNED INT), 23416f_charbig = 'just inserted' 23417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23418DELETE FROM t0_aux 23419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23422'just inserted' FROM t0_template 23423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23424CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 23425BEGIN 23426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23427f_charbig = 'updated by trigger' 23428 WHERE f_int1 = new.f_int1; 23429END| 23430INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23431SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23432WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23433 23434# check trigger-2 success: 1 23435DROP TRIGGER trg_1; 23436UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23437f_int2 = CAST(f_char1 AS SIGNED INT), 23438f_charbig = 'just inserted' 23439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23440DELETE FROM t0_aux 23441WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23442INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23443SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23444'just inserted' FROM t0_template 23445WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23446CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23447BEGIN 23448UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23449f_charbig = 'updated by trigger' 23450 WHERE f_int1 = new.f_int1; 23451END| 23452UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23453WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23454 23455# check trigger-3 success: 1 23456DROP TRIGGER trg_1; 23457UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23458f_int2 = CAST(f_char1 AS SIGNED INT), 23459f_charbig = 'just inserted' 23460 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23461DELETE FROM t0_aux 23462WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23463INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23464SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23465'just inserted' FROM t0_template 23466WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23467CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23468BEGIN 23469UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23470f_charbig = 'updated by trigger' 23471 WHERE f_int1 = - old.f_int1; 23472END| 23473UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23474WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23475 23476# check trigger-4 success: 1 23477DROP TRIGGER trg_1; 23478UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23479f_int2 = CAST(f_char1 AS SIGNED INT), 23480f_charbig = 'just inserted' 23481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23482DELETE FROM t0_aux 23483WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23484INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23485SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23486'just inserted' FROM t0_template 23487WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23488CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23489BEGIN 23490UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23491f_charbig = 'updated by trigger' 23492 WHERE f_int1 = new.f_int1; 23493END| 23494UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23495WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23496 23497# check trigger-5 success: 1 23498DROP TRIGGER trg_1; 23499UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23500f_int2 = CAST(f_char1 AS SIGNED INT), 23501f_charbig = 'just inserted' 23502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23503DELETE FROM t0_aux 23504WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23505INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23506SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23507'just inserted' FROM t0_template 23508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23509CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23510BEGIN 23511UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23512f_charbig = 'updated by trigger' 23513 WHERE f_int1 = - old.f_int1; 23514END| 23515UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23516WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23517 23518# check trigger-6 success: 1 23519DROP TRIGGER trg_1; 23520UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23521f_int2 = CAST(f_char1 AS SIGNED INT), 23522f_charbig = 'just inserted' 23523 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23524DELETE FROM t0_aux 23525WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23526INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23527SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23528'just inserted' FROM t0_template 23529WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23530CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 23531BEGIN 23532UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23533f_charbig = 'updated by trigger' 23534 WHERE f_int1 = - old.f_int1; 23535END| 23536DELETE FROM t0_aux 23537WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23538 23539# check trigger-7 success: 1 23540DROP TRIGGER trg_1; 23541UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23542f_int2 = CAST(f_char1 AS SIGNED INT), 23543f_charbig = 'just inserted' 23544 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23545DELETE FROM t0_aux 23546WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23548SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23549'just inserted' FROM t0_template 23550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23551CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 23552BEGIN 23553UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23554f_charbig = 'updated by trigger' 23555 WHERE f_int1 = - old.f_int1; 23556END| 23557DELETE FROM t0_aux 23558WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23559 23560# check trigger-8 success: 1 23561DROP TRIGGER trg_1; 23562UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23563f_int2 = CAST(f_char1 AS SIGNED INT), 23564f_charbig = 'just inserted' 23565 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23566DELETE FROM t0_aux 23567WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23568DELETE FROM t1 23569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23570CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23571BEGIN 23572SET new.f_int1 = old.f_int1 + @max_row, 23573new.f_int2 = old.f_int2 - @max_row, 23574new.f_charbig = '####updated per update trigger####'; 23575END| 23576UPDATE t1 23577SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23578f_charbig = '####updated per update statement itself####'; 23579 23580# check trigger-9 success: 1 23581DROP TRIGGER trg_2; 23582UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23583f_int2 = CAST(f_char1 AS SIGNED INT), 23584f_charbig = CONCAT('===',f_char1,'==='); 23585CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23586BEGIN 23587SET new.f_int1 = new.f_int1 + @max_row, 23588new.f_int2 = new.f_int2 - @max_row, 23589new.f_charbig = '####updated per update trigger####'; 23590END| 23591UPDATE t1 23592SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23593f_charbig = '####updated per update statement itself####'; 23594 23595# check trigger-10 success: 1 23596DROP TRIGGER trg_2; 23597UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23598f_int2 = CAST(f_char1 AS SIGNED INT), 23599f_charbig = CONCAT('===',f_char1,'==='); 23600CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23601BEGIN 23602SET new.f_int1 = @my_max1 + @counter, 23603new.f_int2 = @my_min2 - @counter, 23604new.f_charbig = '####updated per insert trigger####'; 23605SET @counter = @counter + 1; 23606END| 23607SET @counter = 1; 23608SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23609INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23610SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23611CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23612WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23613ORDER BY f_int1; 23614DROP TRIGGER trg_3; 23615 23616# check trigger-11 success: 1 23617DELETE FROM t1 23618WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23619AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23620AND f_charbig = '####updated per insert trigger####'; 23621CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23622BEGIN 23623SET new.f_int1 = @my_max1 + @counter, 23624new.f_int2 = @my_min2 - @counter, 23625new.f_charbig = '####updated per insert trigger####'; 23626SET @counter = @counter + 1; 23627END| 23628SET @counter = 1; 23629SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23630INSERT INTO t1 (f_char1, f_char2, f_charbig) 23631SELECT CAST(f_int1 AS CHAR), 23632CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23633WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23634ORDER BY f_int1; 23635DROP TRIGGER trg_3; 23636 23637# check trigger-12 success: 1 23638DELETE FROM t1 23639WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23640AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23641AND f_charbig = '####updated per insert trigger####'; 23642ANALYZE TABLE t1; 23643Table Op Msg_type Msg_text 23644test.t1 analyze status OK 23645CHECK TABLE t1 EXTENDED; 23646Table Op Msg_type Msg_text 23647test.t1 check status OK 23648CHECKSUM TABLE t1 EXTENDED; 23649Table Checksum 23650test.t1 <some_value> 23651OPTIMIZE TABLE t1; 23652Table Op Msg_type Msg_text 23653test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 23654test.t1 optimize status OK 23655# check layout success: 1 23656REPAIR TABLE t1 EXTENDED; 23657Table Op Msg_type Msg_text 23658test.t1 repair status OK 23659# check layout success: 1 23660TRUNCATE t1; 23661 23662# check TRUNCATE success: 1 23663# check layout success: 1 23664# End usability test (inc/partition_check.inc) 23665DROP TABLE t1; 23666CREATE TABLE t1 ( 23667f_int1 INTEGER, 23668f_int2 INTEGER, 23669f_char1 CHAR(20), 23670f_char2 CHAR(20), 23671f_charbig VARCHAR(1000) 23672, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1) 23673) 23674PARTITION BY LIST(ABS(MOD(f_int1,2))) 23675SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 23676(PARTITION part1 VALUES IN (0), 23677PARTITION part2 VALUES IN (1), 23678PARTITION part3 VALUES IN (NULL)); 23679INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23680SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 23681# Start usability test (inc/partition_check.inc) 23682create_command 23683SHOW CREATE TABLE t1; 23684Table Create Table 23685t1 CREATE TABLE `t1` ( 23686 `f_int1` int(11) NOT NULL, 23687 `f_int2` int(11) NOT NULL, 23688 `f_char1` char(20) DEFAULT NULL, 23689 `f_char2` char(20) DEFAULT NULL, 23690 `f_charbig` varchar(1000) DEFAULT NULL, 23691 PRIMARY KEY (`f_int2`,`f_int1`), 23692 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 23693) ENGINE=InnoDB DEFAULT CHARSET=latin1 23694/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 23695SUBPARTITION BY KEY (f_int2) 23696SUBPARTITIONS 3 23697(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 23698 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 23699 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 23700 23701unified filelist 23702t1#P#part1#SP#part1sp0.ibd 23703t1#P#part1#SP#part1sp1.ibd 23704t1#P#part1#SP#part1sp2.ibd 23705t1#P#part2#SP#part2sp0.ibd 23706t1#P#part2#SP#part2sp1.ibd 23707t1#P#part2#SP#part2sp2.ibd 23708t1#P#part3#SP#part3sp0.ibd 23709t1#P#part3#SP#part3sp1.ibd 23710t1#P#part3#SP#part3sp2.ibd 23711t1.frm 23712 23713# check prerequisites-1 success: 1 23714# check COUNT(*) success: 1 23715# check MIN/MAX(f_int1) success: 1 23716# check MIN/MAX(f_int2) success: 1 23717INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23718SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23719CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 23720WHERE f_int1 IN (2,3); 23721ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 23722# check prerequisites-3 success: 1 23723# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 23724INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23725SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23726CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23727WHERE f_int1 IN (2,3); 23728DELETE FROM t1 WHERE f_charbig = 'delete me'; 23729INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23730SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23731CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23732WHERE f_int1 IN (2,3); 23733DELETE FROM t1 WHERE f_charbig = 'delete me'; 23734# check read via f_int1 success: 1 23735# check read via f_int2 success: 1 23736 23737# check multiple-1 success: 1 23738DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 23739 23740# check multiple-2 success: 1 23741INSERT INTO t1 SELECT * FROM t0_template 23742WHERE MOD(f_int1,3) = 0; 23743 23744# check multiple-3 success: 1 23745UPDATE t1 SET f_int1 = f_int1 + @max_row 23746WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 23747AND @max_row_div2 + @max_row_div4; 23748 23749# check multiple-4 success: 1 23750DELETE FROM t1 23751WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 23752AND @max_row_div2 + @max_row_div4 + @max_row; 23753 23754# check multiple-5 success: 1 23755SELECT COUNT(*) INTO @try_count FROM t0_template 23756WHERE MOD(f_int1,3) = 0 23757AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23758SELECT COUNT(*) INTO @clash_count 23759FROM t1 INNER JOIN t0_template USING(f_int1) 23760WHERE MOD(f_int1,3) = 0 23761AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23762SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 23763INSERT INTO t1 23764SET f_int1 = @cur_value , f_int2 = @cur_value, 23765f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23766f_charbig = '#SINGLE#'; 23767 23768# check single-1 success: 1 23769SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 23770INSERT INTO t1 23771SET f_int1 = @cur_value , f_int2 = @cur_value, 23772f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23773f_charbig = '#SINGLE#'; 23774 23775# check single-2 success: 1 23776SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 23777SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 23778UPDATE t1 SET f_int1 = @cur_value2 23779WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 23780 23781# check single-3 success: 1 23782SET @cur_value1= -1; 23783SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 23784UPDATE t1 SET f_int1 = @cur_value1 23785WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 23786 23787# check single-4 success: 1 23788SELECT MAX(f_int1) INTO @cur_value FROM t1; 23789DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 23790 23791# check single-5 success: 1 23792DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 23793 23794# check single-6 success: 1 23795INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 23796 23797# check single-7 success: 1 23798DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 23799DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 23800INSERT t1 SET f_int1 = 0 , f_int2 = 0, 23801f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 23802f_charbig = '#NULL#'; 23803INSERT INTO t1 23804SET f_int1 = NULL , f_int2 = -@max_row, 23805f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 23806f_charbig = '#NULL#'; 23807ERROR 23000: Column 'f_int1' cannot be null 23808# check null success: 1 23809DELETE FROM t1 23810WHERE f_int1 = 0 AND f_int2 = 0 23811AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 23812AND f_charbig = '#NULL#'; 23813INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23814SELECT f_int1, f_int1, '', '', 'was inserted' 23815 FROM t0_template source_tab 23816WHERE MOD(f_int1,3) = 0 23817AND f_int1 BETWEEN @max_row_div2 AND @max_row 23818ON DUPLICATE KEY 23819UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 23820f_int2 = 2 * @max_row + source_tab.f_int1, 23821f_charbig = 'was updated'; 23822 23823# check unique-1-a success: 1 23824 23825# check unique-1-b success: 1 23826DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23827UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23828f_int2 = CAST(f_char1 AS SIGNED INT), 23829f_charbig = CONCAT('===',f_char1,'===') 23830WHERE f_charbig = 'was updated'; 23831REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23832SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 23833 FROM t0_template source_tab 23834WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23835 23836# check replace success: 1 23837DELETE FROM t1 23838WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 23839DELETE FROM t1 23840WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 23841f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 23842UPDATE t1 SET f_int2 = f_int1, 23843f_char1 = CAST(f_int1 AS CHAR), 23844f_char2 = CAST(f_int1 AS CHAR), 23845f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 23846WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 23847SET AUTOCOMMIT= 0; 23848INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23849SELECT f_int1, f_int1, '', '', 'was inserted' 23850FROM t0_template source_tab 23851WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23852 23853# check transactions-1 success: 1 23854COMMIT WORK; 23855 23856# check transactions-2 success: 1 23857ROLLBACK WORK; 23858 23859# check transactions-3 success: 1 23860DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23861COMMIT WORK; 23862ROLLBACK WORK; 23863 23864# check transactions-4 success: 1 23865INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23866SELECT f_int1, f_int1, '', '', 'was inserted' 23867FROM t0_template source_tab 23868WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23869 23870# check transactions-5 success: 1 23871ROLLBACK WORK; 23872 23873# check transactions-6 success: 1 23874# INFO: Storage engine used for t1 seems to be transactional. 23875COMMIT; 23876 23877# check transactions-7 success: 1 23878DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23879COMMIT WORK; 23880SET @@session.sql_mode = 'traditional'; 23881Warnings: 23882Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23883SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 23884INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23885SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 23886'', '', 'was inserted' FROM t0_template 23887WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23888ERROR 22012: Division by 0 23889COMMIT; 23890 23891# check transactions-8 success: 1 23892# INFO: Storage engine used for t1 seems to be able to revert 23893# changes made by the failing statement. 23894SET @@session.sql_mode = ''; 23895Warnings: 23896Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23897SET AUTOCOMMIT= 1; 23898DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23899COMMIT WORK; 23900UPDATE t1 SET f_charbig = REPEAT('b', 1000); 23901 23902# check special-1 success: 1 23903UPDATE t1 SET f_charbig = ''; 23904 23905# check special-2 success: 1 23906UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 23907INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23908SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 23909WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23910INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23911SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23912'just inserted' FROM t0_template 23913WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23914CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 23915BEGIN 23916UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23917f_charbig = 'updated by trigger' 23918 WHERE f_int1 = new.f_int1; 23919END| 23920INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23921SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23922WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23923 23924# check trigger-1 success: 1 23925DROP TRIGGER trg_1; 23926UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23927f_int2 = CAST(f_char1 AS SIGNED INT), 23928f_charbig = 'just inserted' 23929 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23930DELETE FROM t0_aux 23931WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23932INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23933SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23934'just inserted' FROM t0_template 23935WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23936CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 23937BEGIN 23938UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23939f_charbig = 'updated by trigger' 23940 WHERE f_int1 = new.f_int1; 23941END| 23942INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23943SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23944WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23945 23946# check trigger-2 success: 1 23947DROP TRIGGER trg_1; 23948UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23949f_int2 = CAST(f_char1 AS SIGNED INT), 23950f_charbig = 'just inserted' 23951 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23952DELETE FROM t0_aux 23953WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23955SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23956'just inserted' FROM t0_template 23957WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23958CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23959BEGIN 23960UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23961f_charbig = 'updated by trigger' 23962 WHERE f_int1 = new.f_int1; 23963END| 23964UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23965WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23966 23967# check trigger-3 success: 1 23968DROP TRIGGER trg_1; 23969UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23970f_int2 = CAST(f_char1 AS SIGNED INT), 23971f_charbig = 'just inserted' 23972 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23973DELETE FROM t0_aux 23974WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23975INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23976SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23977'just inserted' FROM t0_template 23978WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23979CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23980BEGIN 23981UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23982f_charbig = 'updated by trigger' 23983 WHERE f_int1 = - old.f_int1; 23984END| 23985UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23986WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23987 23988# check trigger-4 success: 1 23989DROP TRIGGER trg_1; 23990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23991f_int2 = CAST(f_char1 AS SIGNED INT), 23992f_charbig = 'just inserted' 23993 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23994DELETE FROM t0_aux 23995WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23996INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23997SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23998'just inserted' FROM t0_template 23999WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24000CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24001BEGIN 24002UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24003f_charbig = 'updated by trigger' 24004 WHERE f_int1 = new.f_int1; 24005END| 24006UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24007WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24008 24009# check trigger-5 success: 1 24010DROP TRIGGER trg_1; 24011UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24012f_int2 = CAST(f_char1 AS SIGNED INT), 24013f_charbig = 'just inserted' 24014 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24015DELETE FROM t0_aux 24016WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24017INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24018SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24019'just inserted' FROM t0_template 24020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24021CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24022BEGIN 24023UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24024f_charbig = 'updated by trigger' 24025 WHERE f_int1 = - old.f_int1; 24026END| 24027UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24028WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24029 24030# check trigger-6 success: 1 24031DROP TRIGGER trg_1; 24032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24033f_int2 = CAST(f_char1 AS SIGNED INT), 24034f_charbig = 'just inserted' 24035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24036DELETE FROM t0_aux 24037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24040'just inserted' FROM t0_template 24041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24042CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 24043BEGIN 24044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24045f_charbig = 'updated by trigger' 24046 WHERE f_int1 = - old.f_int1; 24047END| 24048DELETE FROM t0_aux 24049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24050 24051# check trigger-7 success: 1 24052DROP TRIGGER trg_1; 24053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24054f_int2 = CAST(f_char1 AS SIGNED INT), 24055f_charbig = 'just inserted' 24056 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24057DELETE FROM t0_aux 24058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24060SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24061'just inserted' FROM t0_template 24062WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24063CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 24064BEGIN 24065UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24066f_charbig = 'updated by trigger' 24067 WHERE f_int1 = - old.f_int1; 24068END| 24069DELETE FROM t0_aux 24070WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24071 24072# check trigger-8 success: 1 24073DROP TRIGGER trg_1; 24074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24075f_int2 = CAST(f_char1 AS SIGNED INT), 24076f_charbig = 'just inserted' 24077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24078DELETE FROM t0_aux 24079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24080DELETE FROM t1 24081WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24082CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24083BEGIN 24084SET new.f_int1 = old.f_int1 + @max_row, 24085new.f_int2 = old.f_int2 - @max_row, 24086new.f_charbig = '####updated per update trigger####'; 24087END| 24088UPDATE t1 24089SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24090f_charbig = '####updated per update statement itself####'; 24091 24092# check trigger-9 success: 1 24093DROP TRIGGER trg_2; 24094UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24095f_int2 = CAST(f_char1 AS SIGNED INT), 24096f_charbig = CONCAT('===',f_char1,'==='); 24097CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24098BEGIN 24099SET new.f_int1 = new.f_int1 + @max_row, 24100new.f_int2 = new.f_int2 - @max_row, 24101new.f_charbig = '####updated per update trigger####'; 24102END| 24103UPDATE t1 24104SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24105f_charbig = '####updated per update statement itself####'; 24106 24107# check trigger-10 success: 1 24108DROP TRIGGER trg_2; 24109UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24110f_int2 = CAST(f_char1 AS SIGNED INT), 24111f_charbig = CONCAT('===',f_char1,'==='); 24112CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24113BEGIN 24114SET new.f_int1 = @my_max1 + @counter, 24115new.f_int2 = @my_min2 - @counter, 24116new.f_charbig = '####updated per insert trigger####'; 24117SET @counter = @counter + 1; 24118END| 24119SET @counter = 1; 24120SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24123CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24125ORDER BY f_int1; 24126DROP TRIGGER trg_3; 24127 24128# check trigger-11 success: 1 24129DELETE FROM t1 24130WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24131AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24132AND f_charbig = '####updated per insert trigger####'; 24133CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24134BEGIN 24135SET new.f_int1 = @my_max1 + @counter, 24136new.f_int2 = @my_min2 - @counter, 24137new.f_charbig = '####updated per insert trigger####'; 24138SET @counter = @counter + 1; 24139END| 24140SET @counter = 1; 24141SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24142INSERT INTO t1 (f_char1, f_char2, f_charbig) 24143SELECT CAST(f_int1 AS CHAR), 24144CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24146ORDER BY f_int1; 24147DROP TRIGGER trg_3; 24148 24149# check trigger-12 success: 1 24150DELETE FROM t1 24151WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24152AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24153AND f_charbig = '####updated per insert trigger####'; 24154ANALYZE TABLE t1; 24155Table Op Msg_type Msg_text 24156test.t1 analyze status OK 24157CHECK TABLE t1 EXTENDED; 24158Table Op Msg_type Msg_text 24159test.t1 check status OK 24160CHECKSUM TABLE t1 EXTENDED; 24161Table Checksum 24162test.t1 <some_value> 24163OPTIMIZE TABLE t1; 24164Table Op Msg_type Msg_text 24165test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 24166test.t1 optimize status OK 24167# check layout success: 1 24168REPAIR TABLE t1 EXTENDED; 24169Table Op Msg_type Msg_text 24170test.t1 repair status OK 24171# check layout success: 1 24172TRUNCATE t1; 24173 24174# check TRUNCATE success: 1 24175# check layout success: 1 24176# End usability test (inc/partition_check.inc) 24177DROP TABLE t1; 24178DROP TABLE IF EXISTS t1; 24179CREATE TABLE t1 ( 24180f_int1 INTEGER, 24181f_int2 INTEGER, 24182f_char1 CHAR(20), 24183f_char2 CHAR(20), 24184f_charbig VARCHAR(1000) 24185, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 24186) 24187PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 24188INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24189SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 24190# Start usability test (inc/partition_check.inc) 24191create_command 24192SHOW CREATE TABLE t1; 24193Table Create Table 24194t1 CREATE TABLE `t1` ( 24195 `f_int1` int(11) NOT NULL, 24196 `f_int2` int(11) NOT NULL, 24197 `f_char1` char(20) DEFAULT NULL, 24198 `f_char2` char(20) DEFAULT NULL, 24199 `f_charbig` varchar(1000) DEFAULT NULL, 24200 PRIMARY KEY (`f_int1`,`f_int2`), 24201 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 24202) ENGINE=InnoDB DEFAULT CHARSET=latin1 24203/*!50100 PARTITION BY HASH (f_int1 + f_int2) 24204PARTITIONS 2 */ 24205 24206unified filelist 24207t1#P#p0.ibd 24208t1#P#p1.ibd 24209t1.frm 24210 24211# check prerequisites-1 success: 1 24212# check COUNT(*) success: 1 24213# check MIN/MAX(f_int1) success: 1 24214# check MIN/MAX(f_int2) success: 1 24215INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24216SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24217CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 24218WHERE f_int1 IN (2,3); 24219ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 24220# check prerequisites-3 success: 1 24221# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 24222INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24223SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24224CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24225WHERE f_int1 IN (2,3); 24226DELETE FROM t1 WHERE f_charbig = 'delete me'; 24227INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24228SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24229CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24230WHERE f_int1 IN (2,3); 24231DELETE FROM t1 WHERE f_charbig = 'delete me'; 24232# check read via f_int1 success: 1 24233# check read via f_int2 success: 1 24234 24235# check multiple-1 success: 1 24236DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 24237 24238# check multiple-2 success: 1 24239INSERT INTO t1 SELECT * FROM t0_template 24240WHERE MOD(f_int1,3) = 0; 24241 24242# check multiple-3 success: 1 24243UPDATE t1 SET f_int1 = f_int1 + @max_row 24244WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 24245AND @max_row_div2 + @max_row_div4; 24246 24247# check multiple-4 success: 1 24248DELETE FROM t1 24249WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 24250AND @max_row_div2 + @max_row_div4 + @max_row; 24251 24252# check multiple-5 success: 1 24253SELECT COUNT(*) INTO @try_count FROM t0_template 24254WHERE MOD(f_int1,3) = 0 24255AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24256SELECT COUNT(*) INTO @clash_count 24257FROM t1 INNER JOIN t0_template USING(f_int1) 24258WHERE MOD(f_int1,3) = 0 24259AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24260SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 24261INSERT INTO t1 24262SET f_int1 = @cur_value , f_int2 = @cur_value, 24263f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24264f_charbig = '#SINGLE#'; 24265 24266# check single-1 success: 1 24267SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 24268INSERT INTO t1 24269SET f_int1 = @cur_value , f_int2 = @cur_value, 24270f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24271f_charbig = '#SINGLE#'; 24272 24273# check single-2 success: 1 24274SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 24275SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 24276UPDATE t1 SET f_int1 = @cur_value2 24277WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 24278 24279# check single-3 success: 1 24280SET @cur_value1= -1; 24281SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 24282UPDATE t1 SET f_int1 = @cur_value1 24283WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 24284 24285# check single-4 success: 1 24286SELECT MAX(f_int1) INTO @cur_value FROM t1; 24287DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 24288 24289# check single-5 success: 1 24290DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 24291 24292# check single-6 success: 1 24293INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 24294 24295# check single-7 success: 1 24296DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 24297DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 24298INSERT t1 SET f_int1 = 0 , f_int2 = 0, 24299f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 24300f_charbig = '#NULL#'; 24301INSERT INTO t1 24302SET f_int1 = NULL , f_int2 = -@max_row, 24303f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 24304f_charbig = '#NULL#'; 24305ERROR 23000: Column 'f_int1' cannot be null 24306# check null success: 1 24307DELETE FROM t1 24308WHERE f_int1 = 0 AND f_int2 = 0 24309AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 24310AND f_charbig = '#NULL#'; 24311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24312SELECT f_int1, f_int1, '', '', 'was inserted' 24313 FROM t0_template source_tab 24314WHERE MOD(f_int1,3) = 0 24315AND f_int1 BETWEEN @max_row_div2 AND @max_row 24316ON DUPLICATE KEY 24317UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 24318f_int2 = 2 * @max_row + source_tab.f_int1, 24319f_charbig = 'was updated'; 24320 24321# check unique-1-a success: 1 24322 24323# check unique-1-b success: 1 24324DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24325UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24326f_int2 = CAST(f_char1 AS SIGNED INT), 24327f_charbig = CONCAT('===',f_char1,'===') 24328WHERE f_charbig = 'was updated'; 24329REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24330SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 24331 FROM t0_template source_tab 24332WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24333 24334# check replace success: 1 24335DELETE FROM t1 24336WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 24337DELETE FROM t1 24338WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 24339f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 24340UPDATE t1 SET f_int2 = f_int1, 24341f_char1 = CAST(f_int1 AS CHAR), 24342f_char2 = CAST(f_int1 AS CHAR), 24343f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 24344WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 24345SET AUTOCOMMIT= 0; 24346INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24347SELECT f_int1, f_int1, '', '', 'was inserted' 24348FROM t0_template source_tab 24349WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24350 24351# check transactions-1 success: 1 24352COMMIT WORK; 24353 24354# check transactions-2 success: 1 24355ROLLBACK WORK; 24356 24357# check transactions-3 success: 1 24358DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24359COMMIT WORK; 24360ROLLBACK WORK; 24361 24362# check transactions-4 success: 1 24363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24364SELECT f_int1, f_int1, '', '', 'was inserted' 24365FROM t0_template source_tab 24366WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24367 24368# check transactions-5 success: 1 24369ROLLBACK WORK; 24370 24371# check transactions-6 success: 1 24372# INFO: Storage engine used for t1 seems to be transactional. 24373COMMIT; 24374 24375# check transactions-7 success: 1 24376DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24377COMMIT WORK; 24378SET @@session.sql_mode = 'traditional'; 24379Warnings: 24380Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24381SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 24382INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24383SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 24384'', '', 'was inserted' FROM t0_template 24385WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24386ERROR 22012: Division by 0 24387COMMIT; 24388 24389# check transactions-8 success: 1 24390# INFO: Storage engine used for t1 seems to be able to revert 24391# changes made by the failing statement. 24392SET @@session.sql_mode = ''; 24393Warnings: 24394Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24395SET AUTOCOMMIT= 1; 24396DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24397COMMIT WORK; 24398UPDATE t1 SET f_charbig = REPEAT('b', 1000); 24399 24400# check special-1 success: 1 24401UPDATE t1 SET f_charbig = ''; 24402 24403# check special-2 success: 1 24404UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 24405INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24406SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 24407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24408INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24409SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24410'just inserted' FROM t0_template 24411WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24412CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 24413BEGIN 24414UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24415f_charbig = 'updated by trigger' 24416 WHERE f_int1 = new.f_int1; 24417END| 24418INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24419SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24420WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24421 24422# check trigger-1 success: 1 24423DROP TRIGGER trg_1; 24424UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24425f_int2 = CAST(f_char1 AS SIGNED INT), 24426f_charbig = 'just inserted' 24427 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24428DELETE FROM t0_aux 24429WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24430INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24431SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24432'just inserted' FROM t0_template 24433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24434CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 24435BEGIN 24436UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24437f_charbig = 'updated by trigger' 24438 WHERE f_int1 = new.f_int1; 24439END| 24440INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24441SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24442WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24443 24444# check trigger-2 success: 1 24445DROP TRIGGER trg_1; 24446UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24447f_int2 = CAST(f_char1 AS SIGNED INT), 24448f_charbig = 'just inserted' 24449 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24450DELETE FROM t0_aux 24451WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24452INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24453SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24454'just inserted' FROM t0_template 24455WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24456CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24457BEGIN 24458UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24459f_charbig = 'updated by trigger' 24460 WHERE f_int1 = new.f_int1; 24461END| 24462UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24463WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24464 24465# check trigger-3 success: 1 24466DROP TRIGGER trg_1; 24467UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24468f_int2 = CAST(f_char1 AS SIGNED INT), 24469f_charbig = 'just inserted' 24470 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24471DELETE FROM t0_aux 24472WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24473INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24474SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24475'just inserted' FROM t0_template 24476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24477CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24478BEGIN 24479UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24480f_charbig = 'updated by trigger' 24481 WHERE f_int1 = - old.f_int1; 24482END| 24483UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24484WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24485 24486# check trigger-4 success: 1 24487DROP TRIGGER trg_1; 24488UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24489f_int2 = CAST(f_char1 AS SIGNED INT), 24490f_charbig = 'just inserted' 24491 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24492DELETE FROM t0_aux 24493WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24494INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24495SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24496'just inserted' FROM t0_template 24497WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24498CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24499BEGIN 24500UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24501f_charbig = 'updated by trigger' 24502 WHERE f_int1 = new.f_int1; 24503END| 24504UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24505WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24506 24507# check trigger-5 success: 1 24508DROP TRIGGER trg_1; 24509UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24510f_int2 = CAST(f_char1 AS SIGNED INT), 24511f_charbig = 'just inserted' 24512 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24513DELETE FROM t0_aux 24514WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24515INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24516SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24517'just inserted' FROM t0_template 24518WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24519CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24520BEGIN 24521UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24522f_charbig = 'updated by trigger' 24523 WHERE f_int1 = - old.f_int1; 24524END| 24525UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24526WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24527 24528# check trigger-6 success: 1 24529DROP TRIGGER trg_1; 24530UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24531f_int2 = CAST(f_char1 AS SIGNED INT), 24532f_charbig = 'just inserted' 24533 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24534DELETE FROM t0_aux 24535WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24536INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24537SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24538'just inserted' FROM t0_template 24539WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24540CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 24541BEGIN 24542UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24543f_charbig = 'updated by trigger' 24544 WHERE f_int1 = - old.f_int1; 24545END| 24546DELETE FROM t0_aux 24547WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24548 24549# check trigger-7 success: 1 24550DROP TRIGGER trg_1; 24551UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24552f_int2 = CAST(f_char1 AS SIGNED INT), 24553f_charbig = 'just inserted' 24554 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24555DELETE FROM t0_aux 24556WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24557INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24558SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24559'just inserted' FROM t0_template 24560WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24561CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 24562BEGIN 24563UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24564f_charbig = 'updated by trigger' 24565 WHERE f_int1 = - old.f_int1; 24566END| 24567DELETE FROM t0_aux 24568WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24569 24570# check trigger-8 success: 1 24571DROP TRIGGER trg_1; 24572UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24573f_int2 = CAST(f_char1 AS SIGNED INT), 24574f_charbig = 'just inserted' 24575 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24576DELETE FROM t0_aux 24577WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24578DELETE FROM t1 24579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24580CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24581BEGIN 24582SET new.f_int1 = old.f_int1 + @max_row, 24583new.f_int2 = old.f_int2 - @max_row, 24584new.f_charbig = '####updated per update trigger####'; 24585END| 24586UPDATE t1 24587SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24588f_charbig = '####updated per update statement itself####'; 24589 24590# check trigger-9 success: 1 24591DROP TRIGGER trg_2; 24592UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24593f_int2 = CAST(f_char1 AS SIGNED INT), 24594f_charbig = CONCAT('===',f_char1,'==='); 24595CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24596BEGIN 24597SET new.f_int1 = new.f_int1 + @max_row, 24598new.f_int2 = new.f_int2 - @max_row, 24599new.f_charbig = '####updated per update trigger####'; 24600END| 24601UPDATE t1 24602SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24603f_charbig = '####updated per update statement itself####'; 24604 24605# check trigger-10 success: 1 24606DROP TRIGGER trg_2; 24607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24608f_int2 = CAST(f_char1 AS SIGNED INT), 24609f_charbig = CONCAT('===',f_char1,'==='); 24610CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24611BEGIN 24612SET new.f_int1 = @my_max1 + @counter, 24613new.f_int2 = @my_min2 - @counter, 24614new.f_charbig = '####updated per insert trigger####'; 24615SET @counter = @counter + 1; 24616END| 24617SET @counter = 1; 24618SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24619INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24620SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24621CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24622WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24623ORDER BY f_int1; 24624DROP TRIGGER trg_3; 24625 24626# check trigger-11 success: 1 24627DELETE FROM t1 24628WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24629AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24630AND f_charbig = '####updated per insert trigger####'; 24631CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24632BEGIN 24633SET new.f_int1 = @my_max1 + @counter, 24634new.f_int2 = @my_min2 - @counter, 24635new.f_charbig = '####updated per insert trigger####'; 24636SET @counter = @counter + 1; 24637END| 24638SET @counter = 1; 24639SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24640INSERT INTO t1 (f_char1, f_char2, f_charbig) 24641SELECT CAST(f_int1 AS CHAR), 24642CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24643WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24644ORDER BY f_int1; 24645DROP TRIGGER trg_3; 24646 24647# check trigger-12 success: 1 24648DELETE FROM t1 24649WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24650AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24651AND f_charbig = '####updated per insert trigger####'; 24652ANALYZE TABLE t1; 24653Table Op Msg_type Msg_text 24654test.t1 analyze status OK 24655CHECK TABLE t1 EXTENDED; 24656Table Op Msg_type Msg_text 24657test.t1 check status OK 24658CHECKSUM TABLE t1 EXTENDED; 24659Table Checksum 24660test.t1 <some_value> 24661OPTIMIZE TABLE t1; 24662Table Op Msg_type Msg_text 24663test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 24664test.t1 optimize status OK 24665# check layout success: 1 24666REPAIR TABLE t1 EXTENDED; 24667Table Op Msg_type Msg_text 24668test.t1 repair status OK 24669# check layout success: 1 24670TRUNCATE t1; 24671 24672# check TRUNCATE success: 1 24673# check layout success: 1 24674# End usability test (inc/partition_check.inc) 24675DROP TABLE t1; 24676CREATE TABLE t1 ( 24677f_int1 INTEGER, 24678f_int2 INTEGER, 24679f_char1 CHAR(20), 24680f_char2 CHAR(20), 24681f_charbig VARCHAR(1000) 24682, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 24683) 24684PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 24685INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24686SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 24687# Start usability test (inc/partition_check.inc) 24688create_command 24689SHOW CREATE TABLE t1; 24690Table Create Table 24691t1 CREATE TABLE `t1` ( 24692 `f_int1` int(11) NOT NULL, 24693 `f_int2` int(11) NOT NULL, 24694 `f_char1` char(20) DEFAULT NULL, 24695 `f_char2` char(20) DEFAULT NULL, 24696 `f_charbig` varchar(1000) DEFAULT NULL, 24697 PRIMARY KEY (`f_int1`,`f_int2`), 24698 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 24699) ENGINE=InnoDB DEFAULT CHARSET=latin1 24700/*!50100 PARTITION BY KEY (f_int1,f_int2) 24701PARTITIONS 5 */ 24702 24703unified filelist 24704t1#P#p0.ibd 24705t1#P#p1.ibd 24706t1#P#p2.ibd 24707t1#P#p3.ibd 24708t1#P#p4.ibd 24709t1.frm 24710 24711# check prerequisites-1 success: 1 24712# check COUNT(*) success: 1 24713# check MIN/MAX(f_int1) success: 1 24714# check MIN/MAX(f_int2) success: 1 24715INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24716SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24717CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 24718WHERE f_int1 IN (2,3); 24719ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 24720# check prerequisites-3 success: 1 24721# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 24722INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24723SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24724CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24725WHERE f_int1 IN (2,3); 24726DELETE FROM t1 WHERE f_charbig = 'delete me'; 24727INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24728SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24729CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24730WHERE f_int1 IN (2,3); 24731DELETE FROM t1 WHERE f_charbig = 'delete me'; 24732# check read via f_int1 success: 1 24733# check read via f_int2 success: 1 24734 24735# check multiple-1 success: 1 24736DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 24737 24738# check multiple-2 success: 1 24739INSERT INTO t1 SELECT * FROM t0_template 24740WHERE MOD(f_int1,3) = 0; 24741 24742# check multiple-3 success: 1 24743UPDATE t1 SET f_int1 = f_int1 + @max_row 24744WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 24745AND @max_row_div2 + @max_row_div4; 24746 24747# check multiple-4 success: 1 24748DELETE FROM t1 24749WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 24750AND @max_row_div2 + @max_row_div4 + @max_row; 24751 24752# check multiple-5 success: 1 24753SELECT COUNT(*) INTO @try_count FROM t0_template 24754WHERE MOD(f_int1,3) = 0 24755AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24756SELECT COUNT(*) INTO @clash_count 24757FROM t1 INNER JOIN t0_template USING(f_int1) 24758WHERE MOD(f_int1,3) = 0 24759AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24760SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 24761INSERT INTO t1 24762SET f_int1 = @cur_value , f_int2 = @cur_value, 24763f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24764f_charbig = '#SINGLE#'; 24765 24766# check single-1 success: 1 24767SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 24768INSERT INTO t1 24769SET f_int1 = @cur_value , f_int2 = @cur_value, 24770f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24771f_charbig = '#SINGLE#'; 24772 24773# check single-2 success: 1 24774SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 24775SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 24776UPDATE t1 SET f_int1 = @cur_value2 24777WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 24778 24779# check single-3 success: 1 24780SET @cur_value1= -1; 24781SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 24782UPDATE t1 SET f_int1 = @cur_value1 24783WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 24784 24785# check single-4 success: 1 24786SELECT MAX(f_int1) INTO @cur_value FROM t1; 24787DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 24788 24789# check single-5 success: 1 24790DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 24791 24792# check single-6 success: 1 24793INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 24794 24795# check single-7 success: 1 24796DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 24797DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 24798INSERT t1 SET f_int1 = 0 , f_int2 = 0, 24799f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 24800f_charbig = '#NULL#'; 24801INSERT INTO t1 24802SET f_int1 = NULL , f_int2 = -@max_row, 24803f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 24804f_charbig = '#NULL#'; 24805ERROR 23000: Column 'f_int1' cannot be null 24806# check null success: 1 24807DELETE FROM t1 24808WHERE f_int1 = 0 AND f_int2 = 0 24809AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 24810AND f_charbig = '#NULL#'; 24811INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24812SELECT f_int1, f_int1, '', '', 'was inserted' 24813 FROM t0_template source_tab 24814WHERE MOD(f_int1,3) = 0 24815AND f_int1 BETWEEN @max_row_div2 AND @max_row 24816ON DUPLICATE KEY 24817UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 24818f_int2 = 2 * @max_row + source_tab.f_int1, 24819f_charbig = 'was updated'; 24820 24821# check unique-1-a success: 1 24822 24823# check unique-1-b success: 1 24824DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24825UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24826f_int2 = CAST(f_char1 AS SIGNED INT), 24827f_charbig = CONCAT('===',f_char1,'===') 24828WHERE f_charbig = 'was updated'; 24829REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24830SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 24831 FROM t0_template source_tab 24832WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24833 24834# check replace success: 1 24835DELETE FROM t1 24836WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 24837DELETE FROM t1 24838WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 24839f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 24840UPDATE t1 SET f_int2 = f_int1, 24841f_char1 = CAST(f_int1 AS CHAR), 24842f_char2 = CAST(f_int1 AS CHAR), 24843f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 24844WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 24845SET AUTOCOMMIT= 0; 24846INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24847SELECT f_int1, f_int1, '', '', 'was inserted' 24848FROM t0_template source_tab 24849WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24850 24851# check transactions-1 success: 1 24852COMMIT WORK; 24853 24854# check transactions-2 success: 1 24855ROLLBACK WORK; 24856 24857# check transactions-3 success: 1 24858DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24859COMMIT WORK; 24860ROLLBACK WORK; 24861 24862# check transactions-4 success: 1 24863INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24864SELECT f_int1, f_int1, '', '', 'was inserted' 24865FROM t0_template source_tab 24866WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24867 24868# check transactions-5 success: 1 24869ROLLBACK WORK; 24870 24871# check transactions-6 success: 1 24872# INFO: Storage engine used for t1 seems to be transactional. 24873COMMIT; 24874 24875# check transactions-7 success: 1 24876DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24877COMMIT WORK; 24878SET @@session.sql_mode = 'traditional'; 24879Warnings: 24880Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24881SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 24882INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24883SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 24884'', '', 'was inserted' FROM t0_template 24885WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24886ERROR 22012: Division by 0 24887COMMIT; 24888 24889# check transactions-8 success: 1 24890# INFO: Storage engine used for t1 seems to be able to revert 24891# changes made by the failing statement. 24892SET @@session.sql_mode = ''; 24893Warnings: 24894Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24895SET AUTOCOMMIT= 1; 24896DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24897COMMIT WORK; 24898UPDATE t1 SET f_charbig = REPEAT('b', 1000); 24899 24900# check special-1 success: 1 24901UPDATE t1 SET f_charbig = ''; 24902 24903# check special-2 success: 1 24904UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 24905INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24906SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 24907WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24908INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24909SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24910'just inserted' FROM t0_template 24911WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24912CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 24913BEGIN 24914UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24915f_charbig = 'updated by trigger' 24916 WHERE f_int1 = new.f_int1; 24917END| 24918INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24919SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24920WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24921 24922# check trigger-1 success: 1 24923DROP TRIGGER trg_1; 24924UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24925f_int2 = CAST(f_char1 AS SIGNED INT), 24926f_charbig = 'just inserted' 24927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24928DELETE FROM t0_aux 24929WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24930INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24931SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24932'just inserted' FROM t0_template 24933WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24934CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 24935BEGIN 24936UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24937f_charbig = 'updated by trigger' 24938 WHERE f_int1 = new.f_int1; 24939END| 24940INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24941SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24942WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24943 24944# check trigger-2 success: 1 24945DROP TRIGGER trg_1; 24946UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24947f_int2 = CAST(f_char1 AS SIGNED INT), 24948f_charbig = 'just inserted' 24949 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24950DELETE FROM t0_aux 24951WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24952INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24953SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24954'just inserted' FROM t0_template 24955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24956CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24957BEGIN 24958UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24959f_charbig = 'updated by trigger' 24960 WHERE f_int1 = new.f_int1; 24961END| 24962UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24963WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24964 24965# check trigger-3 success: 1 24966DROP TRIGGER trg_1; 24967UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24968f_int2 = CAST(f_char1 AS SIGNED INT), 24969f_charbig = 'just inserted' 24970 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24971DELETE FROM t0_aux 24972WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24974SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24975'just inserted' FROM t0_template 24976WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24977CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24978BEGIN 24979UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24980f_charbig = 'updated by trigger' 24981 WHERE f_int1 = - old.f_int1; 24982END| 24983UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24984WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24985 24986# check trigger-4 success: 1 24987DROP TRIGGER trg_1; 24988UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24989f_int2 = CAST(f_char1 AS SIGNED INT), 24990f_charbig = 'just inserted' 24991 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24992DELETE FROM t0_aux 24993WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24996'just inserted' FROM t0_template 24997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24998CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24999BEGIN 25000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25001f_charbig = 'updated by trigger' 25002 WHERE f_int1 = new.f_int1; 25003END| 25004UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25005WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25006 25007# check trigger-5 success: 1 25008DROP TRIGGER trg_1; 25009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25010f_int2 = CAST(f_char1 AS SIGNED INT), 25011f_charbig = 'just inserted' 25012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25013DELETE FROM t0_aux 25014WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25016SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25017'just inserted' FROM t0_template 25018WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25019CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25020BEGIN 25021UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25022f_charbig = 'updated by trigger' 25023 WHERE f_int1 = - old.f_int1; 25024END| 25025UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25026WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25027 25028# check trigger-6 success: 1 25029DROP TRIGGER trg_1; 25030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25031f_int2 = CAST(f_char1 AS SIGNED INT), 25032f_charbig = 'just inserted' 25033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25034DELETE FROM t0_aux 25035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25038'just inserted' FROM t0_template 25039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25040CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 25041BEGIN 25042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25043f_charbig = 'updated by trigger' 25044 WHERE f_int1 = - old.f_int1; 25045END| 25046DELETE FROM t0_aux 25047WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25048 25049# check trigger-7 success: 1 25050DROP TRIGGER trg_1; 25051UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25052f_int2 = CAST(f_char1 AS SIGNED INT), 25053f_charbig = 'just inserted' 25054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25055DELETE FROM t0_aux 25056WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25057INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25058SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25059'just inserted' FROM t0_template 25060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25061CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 25062BEGIN 25063UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25064f_charbig = 'updated by trigger' 25065 WHERE f_int1 = - old.f_int1; 25066END| 25067DELETE FROM t0_aux 25068WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25069 25070# check trigger-8 success: 1 25071DROP TRIGGER trg_1; 25072UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25073f_int2 = CAST(f_char1 AS SIGNED INT), 25074f_charbig = 'just inserted' 25075 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25076DELETE FROM t0_aux 25077WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25078DELETE FROM t1 25079WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25080CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25081BEGIN 25082SET new.f_int1 = old.f_int1 + @max_row, 25083new.f_int2 = old.f_int2 - @max_row, 25084new.f_charbig = '####updated per update trigger####'; 25085END| 25086UPDATE t1 25087SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25088f_charbig = '####updated per update statement itself####'; 25089 25090# check trigger-9 success: 1 25091DROP TRIGGER trg_2; 25092UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25093f_int2 = CAST(f_char1 AS SIGNED INT), 25094f_charbig = CONCAT('===',f_char1,'==='); 25095CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25096BEGIN 25097SET new.f_int1 = new.f_int1 + @max_row, 25098new.f_int2 = new.f_int2 - @max_row, 25099new.f_charbig = '####updated per update trigger####'; 25100END| 25101UPDATE t1 25102SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25103f_charbig = '####updated per update statement itself####'; 25104 25105# check trigger-10 success: 1 25106DROP TRIGGER trg_2; 25107UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25108f_int2 = CAST(f_char1 AS SIGNED INT), 25109f_charbig = CONCAT('===',f_char1,'==='); 25110CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25111BEGIN 25112SET new.f_int1 = @my_max1 + @counter, 25113new.f_int2 = @my_min2 - @counter, 25114new.f_charbig = '####updated per insert trigger####'; 25115SET @counter = @counter + 1; 25116END| 25117SET @counter = 1; 25118SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25119INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25120SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25121CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25123ORDER BY f_int1; 25124DROP TRIGGER trg_3; 25125 25126# check trigger-11 success: 1 25127DELETE FROM t1 25128WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25129AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25130AND f_charbig = '####updated per insert trigger####'; 25131CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25132BEGIN 25133SET new.f_int1 = @my_max1 + @counter, 25134new.f_int2 = @my_min2 - @counter, 25135new.f_charbig = '####updated per insert trigger####'; 25136SET @counter = @counter + 1; 25137END| 25138SET @counter = 1; 25139SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25140INSERT INTO t1 (f_char1, f_char2, f_charbig) 25141SELECT CAST(f_int1 AS CHAR), 25142CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25144ORDER BY f_int1; 25145DROP TRIGGER trg_3; 25146 25147# check trigger-12 success: 1 25148DELETE FROM t1 25149WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25150AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25151AND f_charbig = '####updated per insert trigger####'; 25152ANALYZE TABLE t1; 25153Table Op Msg_type Msg_text 25154test.t1 analyze status OK 25155CHECK TABLE t1 EXTENDED; 25156Table Op Msg_type Msg_text 25157test.t1 check status OK 25158CHECKSUM TABLE t1 EXTENDED; 25159Table Checksum 25160test.t1 <some_value> 25161OPTIMIZE TABLE t1; 25162Table Op Msg_type Msg_text 25163test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 25164test.t1 optimize status OK 25165# check layout success: 1 25166REPAIR TABLE t1 EXTENDED; 25167Table Op Msg_type Msg_text 25168test.t1 repair status OK 25169# check layout success: 1 25170TRUNCATE t1; 25171 25172# check TRUNCATE success: 1 25173# check layout success: 1 25174# End usability test (inc/partition_check.inc) 25175DROP TABLE t1; 25176CREATE TABLE t1 ( 25177f_int1 INTEGER, 25178f_int2 INTEGER, 25179f_char1 CHAR(20), 25180f_char2 CHAR(20), 25181f_charbig VARCHAR(1000) 25182, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 25183) 25184PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 25185(PARTITION part_3 VALUES IN (-3), 25186PARTITION part_2 VALUES IN (-2), 25187PARTITION part_1 VALUES IN (-1), 25188PARTITION part_N VALUES IN (NULL), 25189PARTITION part0 VALUES IN (0), 25190PARTITION part1 VALUES IN (1), 25191PARTITION part2 VALUES IN (2), 25192PARTITION part3 VALUES IN (3)); 25193INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25194SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 25195# Start usability test (inc/partition_check.inc) 25196create_command 25197SHOW CREATE TABLE t1; 25198Table Create Table 25199t1 CREATE TABLE `t1` ( 25200 `f_int1` int(11) NOT NULL, 25201 `f_int2` int(11) NOT NULL, 25202 `f_char1` char(20) DEFAULT NULL, 25203 `f_char2` char(20) DEFAULT NULL, 25204 `f_charbig` varchar(1000) DEFAULT NULL, 25205 PRIMARY KEY (`f_int1`,`f_int2`), 25206 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 25207) ENGINE=InnoDB DEFAULT CHARSET=latin1 25208/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 25209(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 25210 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 25211 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 25212 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 25213 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 25214 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 25215 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 25216 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 25217 25218unified filelist 25219t1#P#part0.ibd 25220t1#P#part1.ibd 25221t1#P#part2.ibd 25222t1#P#part3.ibd 25223t1#P#part_1.ibd 25224t1#P#part_2.ibd 25225t1#P#part_3.ibd 25226t1#P#part_N.ibd 25227t1.frm 25228 25229# check prerequisites-1 success: 1 25230# check COUNT(*) success: 1 25231# check MIN/MAX(f_int1) success: 1 25232# check MIN/MAX(f_int2) success: 1 25233INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25234SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25235CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 25236WHERE f_int1 IN (2,3); 25237ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 25238# check prerequisites-3 success: 1 25239# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 25240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25241SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25242CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25243WHERE f_int1 IN (2,3); 25244DELETE FROM t1 WHERE f_charbig = 'delete me'; 25245INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25246SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25247CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25248WHERE f_int1 IN (2,3); 25249DELETE FROM t1 WHERE f_charbig = 'delete me'; 25250# check read via f_int1 success: 1 25251# check read via f_int2 success: 1 25252 25253# check multiple-1 success: 1 25254DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 25255 25256# check multiple-2 success: 1 25257INSERT INTO t1 SELECT * FROM t0_template 25258WHERE MOD(f_int1,3) = 0; 25259 25260# check multiple-3 success: 1 25261UPDATE t1 SET f_int1 = f_int1 + @max_row 25262WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 25263AND @max_row_div2 + @max_row_div4; 25264 25265# check multiple-4 success: 1 25266DELETE FROM t1 25267WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 25268AND @max_row_div2 + @max_row_div4 + @max_row; 25269 25270# check multiple-5 success: 1 25271SELECT COUNT(*) INTO @try_count FROM t0_template 25272WHERE MOD(f_int1,3) = 0 25273AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25274SELECT COUNT(*) INTO @clash_count 25275FROM t1 INNER JOIN t0_template USING(f_int1) 25276WHERE MOD(f_int1,3) = 0 25277AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25278SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 25279INSERT INTO t1 25280SET f_int1 = @cur_value , f_int2 = @cur_value, 25281f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25282f_charbig = '#SINGLE#'; 25283 25284# check single-1 success: 1 25285SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 25286INSERT INTO t1 25287SET f_int1 = @cur_value , f_int2 = @cur_value, 25288f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25289f_charbig = '#SINGLE#'; 25290 25291# check single-2 success: 1 25292SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 25293SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 25294UPDATE t1 SET f_int1 = @cur_value2 25295WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 25296 25297# check single-3 success: 1 25298SET @cur_value1= -1; 25299SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 25300UPDATE t1 SET f_int1 = @cur_value1 25301WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 25302 25303# check single-4 success: 1 25304SELECT MAX(f_int1) INTO @cur_value FROM t1; 25305DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 25306 25307# check single-5 success: 1 25308DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 25309 25310# check single-6 success: 1 25311INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 25312 25313# check single-7 success: 1 25314DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 25315DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 25316INSERT t1 SET f_int1 = 0 , f_int2 = 0, 25317f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 25318f_charbig = '#NULL#'; 25319INSERT INTO t1 25320SET f_int1 = NULL , f_int2 = -@max_row, 25321f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 25322f_charbig = '#NULL#'; 25323ERROR 23000: Column 'f_int1' cannot be null 25324# check null success: 1 25325DELETE FROM t1 25326WHERE f_int1 = 0 AND f_int2 = 0 25327AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 25328AND f_charbig = '#NULL#'; 25329INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25330SELECT f_int1, f_int1, '', '', 'was inserted' 25331 FROM t0_template source_tab 25332WHERE MOD(f_int1,3) = 0 25333AND f_int1 BETWEEN @max_row_div2 AND @max_row 25334ON DUPLICATE KEY 25335UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 25336f_int2 = 2 * @max_row + source_tab.f_int1, 25337f_charbig = 'was updated'; 25338 25339# check unique-1-a success: 1 25340 25341# check unique-1-b success: 1 25342DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25343UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25344f_int2 = CAST(f_char1 AS SIGNED INT), 25345f_charbig = CONCAT('===',f_char1,'===') 25346WHERE f_charbig = 'was updated'; 25347REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25348SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 25349 FROM t0_template source_tab 25350WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25351 25352# check replace success: 1 25353DELETE FROM t1 25354WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 25355DELETE FROM t1 25356WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 25357f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 25358UPDATE t1 SET f_int2 = f_int1, 25359f_char1 = CAST(f_int1 AS CHAR), 25360f_char2 = CAST(f_int1 AS CHAR), 25361f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 25362WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 25363SET AUTOCOMMIT= 0; 25364INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25365SELECT f_int1, f_int1, '', '', 'was inserted' 25366FROM t0_template source_tab 25367WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25368 25369# check transactions-1 success: 1 25370COMMIT WORK; 25371 25372# check transactions-2 success: 1 25373ROLLBACK WORK; 25374 25375# check transactions-3 success: 1 25376DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25377COMMIT WORK; 25378ROLLBACK WORK; 25379 25380# check transactions-4 success: 1 25381INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25382SELECT f_int1, f_int1, '', '', 'was inserted' 25383FROM t0_template source_tab 25384WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25385 25386# check transactions-5 success: 1 25387ROLLBACK WORK; 25388 25389# check transactions-6 success: 1 25390# INFO: Storage engine used for t1 seems to be transactional. 25391COMMIT; 25392 25393# check transactions-7 success: 1 25394DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25395COMMIT WORK; 25396SET @@session.sql_mode = 'traditional'; 25397Warnings: 25398Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25399SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 25400INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25401SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 25402'', '', 'was inserted' FROM t0_template 25403WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25404ERROR 22012: Division by 0 25405COMMIT; 25406 25407# check transactions-8 success: 1 25408# INFO: Storage engine used for t1 seems to be able to revert 25409# changes made by the failing statement. 25410SET @@session.sql_mode = ''; 25411Warnings: 25412Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25413SET AUTOCOMMIT= 1; 25414DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25415COMMIT WORK; 25416UPDATE t1 SET f_charbig = REPEAT('b', 1000); 25417 25418# check special-1 success: 1 25419UPDATE t1 SET f_charbig = ''; 25420 25421# check special-2 success: 1 25422UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 25423INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25424SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 25425WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25426INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25427SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25428'just inserted' FROM t0_template 25429WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25430CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 25431BEGIN 25432UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25433f_charbig = 'updated by trigger' 25434 WHERE f_int1 = new.f_int1; 25435END| 25436INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25437SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25438WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25439 25440# check trigger-1 success: 1 25441DROP TRIGGER trg_1; 25442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25443f_int2 = CAST(f_char1 AS SIGNED INT), 25444f_charbig = 'just inserted' 25445 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25446DELETE FROM t0_aux 25447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25448INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25449SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25450'just inserted' FROM t0_template 25451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25452CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 25453BEGIN 25454UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25455f_charbig = 'updated by trigger' 25456 WHERE f_int1 = new.f_int1; 25457END| 25458INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25459SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25460WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25461 25462# check trigger-2 success: 1 25463DROP TRIGGER trg_1; 25464UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25465f_int2 = CAST(f_char1 AS SIGNED INT), 25466f_charbig = 'just inserted' 25467 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25468DELETE FROM t0_aux 25469WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25470INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25471SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25472'just inserted' FROM t0_template 25473WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25474CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25475BEGIN 25476UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25477f_charbig = 'updated by trigger' 25478 WHERE f_int1 = new.f_int1; 25479END| 25480UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25481WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25482 25483# check trigger-3 success: 1 25484DROP TRIGGER trg_1; 25485UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25486f_int2 = CAST(f_char1 AS SIGNED INT), 25487f_charbig = 'just inserted' 25488 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25489DELETE FROM t0_aux 25490WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25491INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25492SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25493'just inserted' FROM t0_template 25494WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25495CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25496BEGIN 25497UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25498f_charbig = 'updated by trigger' 25499 WHERE f_int1 = - old.f_int1; 25500END| 25501UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25502WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25503 25504# check trigger-4 success: 1 25505DROP TRIGGER trg_1; 25506UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25507f_int2 = CAST(f_char1 AS SIGNED INT), 25508f_charbig = 'just inserted' 25509 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25510DELETE FROM t0_aux 25511WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25512INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25513SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25514'just inserted' FROM t0_template 25515WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25516CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25517BEGIN 25518UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25519f_charbig = 'updated by trigger' 25520 WHERE f_int1 = new.f_int1; 25521END| 25522UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25523WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25524 25525# check trigger-5 success: 1 25526DROP TRIGGER trg_1; 25527UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25528f_int2 = CAST(f_char1 AS SIGNED INT), 25529f_charbig = 'just inserted' 25530 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25531DELETE FROM t0_aux 25532WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25533INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25534SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25535'just inserted' FROM t0_template 25536WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25537CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25538BEGIN 25539UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25540f_charbig = 'updated by trigger' 25541 WHERE f_int1 = - old.f_int1; 25542END| 25543UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25544WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25545 25546# check trigger-6 success: 1 25547DROP TRIGGER trg_1; 25548UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25549f_int2 = CAST(f_char1 AS SIGNED INT), 25550f_charbig = 'just inserted' 25551 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25552DELETE FROM t0_aux 25553WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25554INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25555SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25556'just inserted' FROM t0_template 25557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25558CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 25559BEGIN 25560UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25561f_charbig = 'updated by trigger' 25562 WHERE f_int1 = - old.f_int1; 25563END| 25564DELETE FROM t0_aux 25565WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25566 25567# check trigger-7 success: 1 25568DROP TRIGGER trg_1; 25569UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25570f_int2 = CAST(f_char1 AS SIGNED INT), 25571f_charbig = 'just inserted' 25572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25573DELETE FROM t0_aux 25574WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25575INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25576SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25577'just inserted' FROM t0_template 25578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25579CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 25580BEGIN 25581UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25582f_charbig = 'updated by trigger' 25583 WHERE f_int1 = - old.f_int1; 25584END| 25585DELETE FROM t0_aux 25586WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25587 25588# check trigger-8 success: 1 25589DROP TRIGGER trg_1; 25590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25591f_int2 = CAST(f_char1 AS SIGNED INT), 25592f_charbig = 'just inserted' 25593 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25594DELETE FROM t0_aux 25595WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25596DELETE FROM t1 25597WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25598CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25599BEGIN 25600SET new.f_int1 = old.f_int1 + @max_row, 25601new.f_int2 = old.f_int2 - @max_row, 25602new.f_charbig = '####updated per update trigger####'; 25603END| 25604UPDATE t1 25605SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25606f_charbig = '####updated per update statement itself####'; 25607 25608# check trigger-9 success: 1 25609DROP TRIGGER trg_2; 25610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25611f_int2 = CAST(f_char1 AS SIGNED INT), 25612f_charbig = CONCAT('===',f_char1,'==='); 25613CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25614BEGIN 25615SET new.f_int1 = new.f_int1 + @max_row, 25616new.f_int2 = new.f_int2 - @max_row, 25617new.f_charbig = '####updated per update trigger####'; 25618END| 25619UPDATE t1 25620SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25621f_charbig = '####updated per update statement itself####'; 25622 25623# check trigger-10 success: 1 25624DROP TRIGGER trg_2; 25625UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25626f_int2 = CAST(f_char1 AS SIGNED INT), 25627f_charbig = CONCAT('===',f_char1,'==='); 25628CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25629BEGIN 25630SET new.f_int1 = @my_max1 + @counter, 25631new.f_int2 = @my_min2 - @counter, 25632new.f_charbig = '####updated per insert trigger####'; 25633SET @counter = @counter + 1; 25634END| 25635SET @counter = 1; 25636SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25637INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25638SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25639CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25640WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25641ORDER BY f_int1; 25642DROP TRIGGER trg_3; 25643 25644# check trigger-11 success: 1 25645DELETE FROM t1 25646WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25647AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25648AND f_charbig = '####updated per insert trigger####'; 25649CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25650BEGIN 25651SET new.f_int1 = @my_max1 + @counter, 25652new.f_int2 = @my_min2 - @counter, 25653new.f_charbig = '####updated per insert trigger####'; 25654SET @counter = @counter + 1; 25655END| 25656SET @counter = 1; 25657SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25658INSERT INTO t1 (f_char1, f_char2, f_charbig) 25659SELECT CAST(f_int1 AS CHAR), 25660CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25661WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25662ORDER BY f_int1; 25663DROP TRIGGER trg_3; 25664 25665# check trigger-12 success: 1 25666DELETE FROM t1 25667WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25668AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25669AND f_charbig = '####updated per insert trigger####'; 25670ANALYZE TABLE t1; 25671Table Op Msg_type Msg_text 25672test.t1 analyze status OK 25673CHECK TABLE t1 EXTENDED; 25674Table Op Msg_type Msg_text 25675test.t1 check status OK 25676CHECKSUM TABLE t1 EXTENDED; 25677Table Checksum 25678test.t1 <some_value> 25679OPTIMIZE TABLE t1; 25680Table Op Msg_type Msg_text 25681test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 25682test.t1 optimize status OK 25683# check layout success: 1 25684REPAIR TABLE t1 EXTENDED; 25685Table Op Msg_type Msg_text 25686test.t1 repair status OK 25687# check layout success: 1 25688TRUNCATE t1; 25689 25690# check TRUNCATE success: 1 25691# check layout success: 1 25692# End usability test (inc/partition_check.inc) 25693DROP TABLE t1; 25694CREATE TABLE t1 ( 25695f_int1 INTEGER, 25696f_int2 INTEGER, 25697f_char1 CHAR(20), 25698f_char2 CHAR(20), 25699f_charbig VARCHAR(1000) 25700, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 25701) 25702PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 25703(PARTITION parta VALUES LESS THAN (0), 25704PARTITION partb VALUES LESS THAN (5), 25705PARTITION partc VALUES LESS THAN (10), 25706PARTITION partd VALUES LESS THAN (10 + 5), 25707PARTITION parte VALUES LESS THAN (20), 25708PARTITION partf VALUES LESS THAN (2147483646)); 25709INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25710SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 25711# Start usability test (inc/partition_check.inc) 25712create_command 25713SHOW CREATE TABLE t1; 25714Table Create Table 25715t1 CREATE TABLE `t1` ( 25716 `f_int1` int(11) NOT NULL, 25717 `f_int2` int(11) NOT NULL, 25718 `f_char1` char(20) DEFAULT NULL, 25719 `f_char2` char(20) DEFAULT NULL, 25720 `f_charbig` varchar(1000) DEFAULT NULL, 25721 PRIMARY KEY (`f_int1`,`f_int2`), 25722 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 25723) ENGINE=InnoDB DEFAULT CHARSET=latin1 25724/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 25725(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 25726 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 25727 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 25728 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 25729 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 25730 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 25731 25732unified filelist 25733t1#P#parta.ibd 25734t1#P#partb.ibd 25735t1#P#partc.ibd 25736t1#P#partd.ibd 25737t1#P#parte.ibd 25738t1#P#partf.ibd 25739t1.frm 25740 25741# check prerequisites-1 success: 1 25742# check COUNT(*) success: 1 25743# check MIN/MAX(f_int1) success: 1 25744# check MIN/MAX(f_int2) success: 1 25745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25746SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25747CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 25748WHERE f_int1 IN (2,3); 25749ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 25750# check prerequisites-3 success: 1 25751# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 25752INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25753SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25754CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25755WHERE f_int1 IN (2,3); 25756DELETE FROM t1 WHERE f_charbig = 'delete me'; 25757INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25758SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25759CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25760WHERE f_int1 IN (2,3); 25761DELETE FROM t1 WHERE f_charbig = 'delete me'; 25762# check read via f_int1 success: 1 25763# check read via f_int2 success: 1 25764 25765# check multiple-1 success: 1 25766DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 25767 25768# check multiple-2 success: 1 25769INSERT INTO t1 SELECT * FROM t0_template 25770WHERE MOD(f_int1,3) = 0; 25771 25772# check multiple-3 success: 1 25773UPDATE t1 SET f_int1 = f_int1 + @max_row 25774WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 25775AND @max_row_div2 + @max_row_div4; 25776 25777# check multiple-4 success: 1 25778DELETE FROM t1 25779WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 25780AND @max_row_div2 + @max_row_div4 + @max_row; 25781 25782# check multiple-5 success: 1 25783SELECT COUNT(*) INTO @try_count FROM t0_template 25784WHERE MOD(f_int1,3) = 0 25785AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25786SELECT COUNT(*) INTO @clash_count 25787FROM t1 INNER JOIN t0_template USING(f_int1) 25788WHERE MOD(f_int1,3) = 0 25789AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25790SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 25791INSERT INTO t1 25792SET f_int1 = @cur_value , f_int2 = @cur_value, 25793f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25794f_charbig = '#SINGLE#'; 25795 25796# check single-1 success: 1 25797SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 25798INSERT INTO t1 25799SET f_int1 = @cur_value , f_int2 = @cur_value, 25800f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25801f_charbig = '#SINGLE#'; 25802 25803# check single-2 success: 1 25804SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 25805SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 25806UPDATE t1 SET f_int1 = @cur_value2 25807WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 25808 25809# check single-3 success: 1 25810SET @cur_value1= -1; 25811SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 25812UPDATE t1 SET f_int1 = @cur_value1 25813WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 25814 25815# check single-4 success: 1 25816SELECT MAX(f_int1) INTO @cur_value FROM t1; 25817DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 25818 25819# check single-5 success: 1 25820DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 25821 25822# check single-6 success: 1 25823INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 25824ERROR HY000: Table has no partition for value 2147483647 25825DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 25826INSERT t1 SET f_int1 = 0 , f_int2 = 0, 25827f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 25828f_charbig = '#NULL#'; 25829INSERT INTO t1 25830SET f_int1 = NULL , f_int2 = -@max_row, 25831f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 25832f_charbig = '#NULL#'; 25833ERROR 23000: Column 'f_int1' cannot be null 25834# check null success: 1 25835DELETE FROM t1 25836WHERE f_int1 = 0 AND f_int2 = 0 25837AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 25838AND f_charbig = '#NULL#'; 25839INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25840SELECT f_int1, f_int1, '', '', 'was inserted' 25841 FROM t0_template source_tab 25842WHERE MOD(f_int1,3) = 0 25843AND f_int1 BETWEEN @max_row_div2 AND @max_row 25844ON DUPLICATE KEY 25845UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 25846f_int2 = 2 * @max_row + source_tab.f_int1, 25847f_charbig = 'was updated'; 25848 25849# check unique-1-a success: 1 25850 25851# check unique-1-b success: 1 25852DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25853UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25854f_int2 = CAST(f_char1 AS SIGNED INT), 25855f_charbig = CONCAT('===',f_char1,'===') 25856WHERE f_charbig = 'was updated'; 25857REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25858SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 25859 FROM t0_template source_tab 25860WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25861 25862# check replace success: 1 25863DELETE FROM t1 25864WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 25865DELETE FROM t1 25866WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 25867f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 25868UPDATE t1 SET f_int2 = f_int1, 25869f_char1 = CAST(f_int1 AS CHAR), 25870f_char2 = CAST(f_int1 AS CHAR), 25871f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 25872WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 25873SET AUTOCOMMIT= 0; 25874INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25875SELECT f_int1, f_int1, '', '', 'was inserted' 25876FROM t0_template source_tab 25877WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25878 25879# check transactions-1 success: 1 25880COMMIT WORK; 25881 25882# check transactions-2 success: 1 25883ROLLBACK WORK; 25884 25885# check transactions-3 success: 1 25886DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25887COMMIT WORK; 25888ROLLBACK WORK; 25889 25890# check transactions-4 success: 1 25891INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25892SELECT f_int1, f_int1, '', '', 'was inserted' 25893FROM t0_template source_tab 25894WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25895 25896# check transactions-5 success: 1 25897ROLLBACK WORK; 25898 25899# check transactions-6 success: 1 25900# INFO: Storage engine used for t1 seems to be transactional. 25901COMMIT; 25902 25903# check transactions-7 success: 1 25904DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25905COMMIT WORK; 25906SET @@session.sql_mode = 'traditional'; 25907Warnings: 25908Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25909SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 25910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25911SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 25912'', '', 'was inserted' FROM t0_template 25913WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25914ERROR 22012: Division by 0 25915COMMIT; 25916 25917# check transactions-8 success: 1 25918# INFO: Storage engine used for t1 seems to be able to revert 25919# changes made by the failing statement. 25920SET @@session.sql_mode = ''; 25921Warnings: 25922Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25923SET AUTOCOMMIT= 1; 25924DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25925COMMIT WORK; 25926UPDATE t1 SET f_charbig = REPEAT('b', 1000); 25927 25928# check special-1 success: 1 25929UPDATE t1 SET f_charbig = ''; 25930 25931# check special-2 success: 1 25932UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 25933INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25934SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 25935WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25936INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25937SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25938'just inserted' FROM t0_template 25939WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25940CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 25941BEGIN 25942UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25943f_charbig = 'updated by trigger' 25944 WHERE f_int1 = new.f_int1; 25945END| 25946INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25947SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25948WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25949 25950# check trigger-1 success: 1 25951DROP TRIGGER trg_1; 25952UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25953f_int2 = CAST(f_char1 AS SIGNED INT), 25954f_charbig = 'just inserted' 25955 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25956DELETE FROM t0_aux 25957WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25958INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25959SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25960'just inserted' FROM t0_template 25961WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25962CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 25963BEGIN 25964UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25965f_charbig = 'updated by trigger' 25966 WHERE f_int1 = new.f_int1; 25967END| 25968INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25969SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25970WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25971 25972# check trigger-2 success: 1 25973DROP TRIGGER trg_1; 25974UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25975f_int2 = CAST(f_char1 AS SIGNED INT), 25976f_charbig = 'just inserted' 25977 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25978DELETE FROM t0_aux 25979WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25980INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25981SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25982'just inserted' FROM t0_template 25983WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25984CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25985BEGIN 25986UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25987f_charbig = 'updated by trigger' 25988 WHERE f_int1 = new.f_int1; 25989END| 25990UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25991WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25992 25993# check trigger-3 success: 1 25994DROP TRIGGER trg_1; 25995UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25996f_int2 = CAST(f_char1 AS SIGNED INT), 25997f_charbig = 'just inserted' 25998 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25999DELETE FROM t0_aux 26000WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26001INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26002SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26003'just inserted' FROM t0_template 26004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26005CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 26006BEGIN 26007UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26008f_charbig = 'updated by trigger' 26009 WHERE f_int1 = - old.f_int1; 26010END| 26011UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26012WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26013 26014# check trigger-4 success: 1 26015DROP TRIGGER trg_1; 26016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26017f_int2 = CAST(f_char1 AS SIGNED INT), 26018f_charbig = 'just inserted' 26019 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26020DELETE FROM t0_aux 26021WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26022INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26023SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26024'just inserted' FROM t0_template 26025WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26026CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26027BEGIN 26028UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26029f_charbig = 'updated by trigger' 26030 WHERE f_int1 = new.f_int1; 26031END| 26032UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26033WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26034 26035# check trigger-5 success: 1 26036DROP TRIGGER trg_1; 26037UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26038f_int2 = CAST(f_char1 AS SIGNED INT), 26039f_charbig = 'just inserted' 26040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26041DELETE FROM t0_aux 26042WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26043INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26044SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26045'just inserted' FROM t0_template 26046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26047CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26048BEGIN 26049UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26050f_charbig = 'updated by trigger' 26051 WHERE f_int1 = - old.f_int1; 26052END| 26053UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26054WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26055 26056# check trigger-6 success: 1 26057DROP TRIGGER trg_1; 26058UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26059f_int2 = CAST(f_char1 AS SIGNED INT), 26060f_charbig = 'just inserted' 26061 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26062DELETE FROM t0_aux 26063WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26065SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26066'just inserted' FROM t0_template 26067WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26068CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 26069BEGIN 26070UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26071f_charbig = 'updated by trigger' 26072 WHERE f_int1 = - old.f_int1; 26073END| 26074DELETE FROM t0_aux 26075WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26076 26077# check trigger-7 success: 1 26078DROP TRIGGER trg_1; 26079UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26080f_int2 = CAST(f_char1 AS SIGNED INT), 26081f_charbig = 'just inserted' 26082 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26083DELETE FROM t0_aux 26084WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26086SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26087'just inserted' FROM t0_template 26088WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26089CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 26090BEGIN 26091UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26092f_charbig = 'updated by trigger' 26093 WHERE f_int1 = - old.f_int1; 26094END| 26095DELETE FROM t0_aux 26096WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26097 26098# check trigger-8 success: 1 26099DROP TRIGGER trg_1; 26100UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26101f_int2 = CAST(f_char1 AS SIGNED INT), 26102f_charbig = 'just inserted' 26103 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26104DELETE FROM t0_aux 26105WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26106DELETE FROM t1 26107WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26108CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26109BEGIN 26110SET new.f_int1 = old.f_int1 + @max_row, 26111new.f_int2 = old.f_int2 - @max_row, 26112new.f_charbig = '####updated per update trigger####'; 26113END| 26114UPDATE t1 26115SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26116f_charbig = '####updated per update statement itself####'; 26117 26118# check trigger-9 success: 1 26119DROP TRIGGER trg_2; 26120UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26121f_int2 = CAST(f_char1 AS SIGNED INT), 26122f_charbig = CONCAT('===',f_char1,'==='); 26123CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26124BEGIN 26125SET new.f_int1 = new.f_int1 + @max_row, 26126new.f_int2 = new.f_int2 - @max_row, 26127new.f_charbig = '####updated per update trigger####'; 26128END| 26129UPDATE t1 26130SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26131f_charbig = '####updated per update statement itself####'; 26132 26133# check trigger-10 success: 1 26134DROP TRIGGER trg_2; 26135UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26136f_int2 = CAST(f_char1 AS SIGNED INT), 26137f_charbig = CONCAT('===',f_char1,'==='); 26138CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26139BEGIN 26140SET new.f_int1 = @my_max1 + @counter, 26141new.f_int2 = @my_min2 - @counter, 26142new.f_charbig = '####updated per insert trigger####'; 26143SET @counter = @counter + 1; 26144END| 26145SET @counter = 1; 26146SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26147INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26148SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26149CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26150WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26151ORDER BY f_int1; 26152DROP TRIGGER trg_3; 26153 26154# check trigger-11 success: 1 26155DELETE FROM t1 26156WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26157AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26158AND f_charbig = '####updated per insert trigger####'; 26159CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26160BEGIN 26161SET new.f_int1 = @my_max1 + @counter, 26162new.f_int2 = @my_min2 - @counter, 26163new.f_charbig = '####updated per insert trigger####'; 26164SET @counter = @counter + 1; 26165END| 26166SET @counter = 1; 26167SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26168INSERT INTO t1 (f_char1, f_char2, f_charbig) 26169SELECT CAST(f_int1 AS CHAR), 26170CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26172ORDER BY f_int1; 26173DROP TRIGGER trg_3; 26174 26175# check trigger-12 success: 1 26176DELETE FROM t1 26177WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26178AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26179AND f_charbig = '####updated per insert trigger####'; 26180ANALYZE TABLE t1; 26181Table Op Msg_type Msg_text 26182test.t1 analyze status OK 26183CHECK TABLE t1 EXTENDED; 26184Table Op Msg_type Msg_text 26185test.t1 check status OK 26186CHECKSUM TABLE t1 EXTENDED; 26187Table Checksum 26188test.t1 <some_value> 26189OPTIMIZE TABLE t1; 26190Table Op Msg_type Msg_text 26191test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 26192test.t1 optimize status OK 26193# check layout success: 1 26194REPAIR TABLE t1 EXTENDED; 26195Table Op Msg_type Msg_text 26196test.t1 repair status OK 26197# check layout success: 1 26198TRUNCATE t1; 26199 26200# check TRUNCATE success: 1 26201# check layout success: 1 26202# End usability test (inc/partition_check.inc) 26203DROP TABLE t1; 26204CREATE TABLE t1 ( 26205f_int1 INTEGER, 26206f_int2 INTEGER, 26207f_char1 CHAR(20), 26208f_char2 CHAR(20), 26209f_charbig VARCHAR(1000) 26210, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 26211) 26212PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 26213(PARTITION parta VALUES LESS THAN (0), 26214PARTITION partb VALUES LESS THAN (5), 26215PARTITION partc VALUES LESS THAN (10), 26216PARTITION partd VALUES LESS THAN (2147483646)); 26217INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26218SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 26219# Start usability test (inc/partition_check.inc) 26220create_command 26221SHOW CREATE TABLE t1; 26222Table Create Table 26223t1 CREATE TABLE `t1` ( 26224 `f_int1` int(11) NOT NULL, 26225 `f_int2` int(11) NOT NULL, 26226 `f_char1` char(20) DEFAULT NULL, 26227 `f_char2` char(20) DEFAULT NULL, 26228 `f_charbig` varchar(1000) DEFAULT NULL, 26229 PRIMARY KEY (`f_int1`,`f_int2`), 26230 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 26231) ENGINE=InnoDB DEFAULT CHARSET=latin1 26232/*!50100 PARTITION BY RANGE (f_int1) 26233SUBPARTITION BY HASH (f_int2) 26234SUBPARTITIONS 2 26235(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 26236 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 26237 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 26238 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 26239 26240unified filelist 26241t1#P#parta#SP#partasp0.ibd 26242t1#P#parta#SP#partasp1.ibd 26243t1#P#partb#SP#partbsp0.ibd 26244t1#P#partb#SP#partbsp1.ibd 26245t1#P#partc#SP#partcsp0.ibd 26246t1#P#partc#SP#partcsp1.ibd 26247t1#P#partd#SP#partdsp0.ibd 26248t1#P#partd#SP#partdsp1.ibd 26249t1.frm 26250 26251# check prerequisites-1 success: 1 26252# check COUNT(*) success: 1 26253# check MIN/MAX(f_int1) success: 1 26254# check MIN/MAX(f_int2) success: 1 26255INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26256SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26257CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 26258WHERE f_int1 IN (2,3); 26259ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 26260# check prerequisites-3 success: 1 26261# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 26262INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26263SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26264CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26265WHERE f_int1 IN (2,3); 26266DELETE FROM t1 WHERE f_charbig = 'delete me'; 26267INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26268SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26269CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26270WHERE f_int1 IN (2,3); 26271DELETE FROM t1 WHERE f_charbig = 'delete me'; 26272# check read via f_int1 success: 1 26273# check read via f_int2 success: 1 26274 26275# check multiple-1 success: 1 26276DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 26277 26278# check multiple-2 success: 1 26279INSERT INTO t1 SELECT * FROM t0_template 26280WHERE MOD(f_int1,3) = 0; 26281 26282# check multiple-3 success: 1 26283UPDATE t1 SET f_int1 = f_int1 + @max_row 26284WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 26285AND @max_row_div2 + @max_row_div4; 26286 26287# check multiple-4 success: 1 26288DELETE FROM t1 26289WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 26290AND @max_row_div2 + @max_row_div4 + @max_row; 26291 26292# check multiple-5 success: 1 26293SELECT COUNT(*) INTO @try_count FROM t0_template 26294WHERE MOD(f_int1,3) = 0 26295AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26296SELECT COUNT(*) INTO @clash_count 26297FROM t1 INNER JOIN t0_template USING(f_int1) 26298WHERE MOD(f_int1,3) = 0 26299AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26300SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 26301INSERT INTO t1 26302SET f_int1 = @cur_value , f_int2 = @cur_value, 26303f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26304f_charbig = '#SINGLE#'; 26305 26306# check single-1 success: 1 26307SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 26308INSERT INTO t1 26309SET f_int1 = @cur_value , f_int2 = @cur_value, 26310f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26311f_charbig = '#SINGLE#'; 26312 26313# check single-2 success: 1 26314SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 26315SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 26316UPDATE t1 SET f_int1 = @cur_value2 26317WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 26318 26319# check single-3 success: 1 26320SET @cur_value1= -1; 26321SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 26322UPDATE t1 SET f_int1 = @cur_value1 26323WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 26324 26325# check single-4 success: 1 26326SELECT MAX(f_int1) INTO @cur_value FROM t1; 26327DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 26328 26329# check single-5 success: 1 26330DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 26331 26332# check single-6 success: 1 26333INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 26334ERROR HY000: Table has no partition for value 2147483647 26335DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 26336INSERT t1 SET f_int1 = 0 , f_int2 = 0, 26337f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 26338f_charbig = '#NULL#'; 26339INSERT INTO t1 26340SET f_int1 = NULL , f_int2 = -@max_row, 26341f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 26342f_charbig = '#NULL#'; 26343ERROR 23000: Column 'f_int1' cannot be null 26344# check null success: 1 26345DELETE FROM t1 26346WHERE f_int1 = 0 AND f_int2 = 0 26347AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 26348AND f_charbig = '#NULL#'; 26349INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26350SELECT f_int1, f_int1, '', '', 'was inserted' 26351 FROM t0_template source_tab 26352WHERE MOD(f_int1,3) = 0 26353AND f_int1 BETWEEN @max_row_div2 AND @max_row 26354ON DUPLICATE KEY 26355UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 26356f_int2 = 2 * @max_row + source_tab.f_int1, 26357f_charbig = 'was updated'; 26358 26359# check unique-1-a success: 1 26360 26361# check unique-1-b success: 1 26362DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26363UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26364f_int2 = CAST(f_char1 AS SIGNED INT), 26365f_charbig = CONCAT('===',f_char1,'===') 26366WHERE f_charbig = 'was updated'; 26367REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26368SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 26369 FROM t0_template source_tab 26370WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26371 26372# check replace success: 1 26373DELETE FROM t1 26374WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 26375DELETE FROM t1 26376WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 26377f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 26378UPDATE t1 SET f_int2 = f_int1, 26379f_char1 = CAST(f_int1 AS CHAR), 26380f_char2 = CAST(f_int1 AS CHAR), 26381f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 26382WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 26383SET AUTOCOMMIT= 0; 26384INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26385SELECT f_int1, f_int1, '', '', 'was inserted' 26386FROM t0_template source_tab 26387WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26388 26389# check transactions-1 success: 1 26390COMMIT WORK; 26391 26392# check transactions-2 success: 1 26393ROLLBACK WORK; 26394 26395# check transactions-3 success: 1 26396DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26397COMMIT WORK; 26398ROLLBACK WORK; 26399 26400# check transactions-4 success: 1 26401INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26402SELECT f_int1, f_int1, '', '', 'was inserted' 26403FROM t0_template source_tab 26404WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26405 26406# check transactions-5 success: 1 26407ROLLBACK WORK; 26408 26409# check transactions-6 success: 1 26410# INFO: Storage engine used for t1 seems to be transactional. 26411COMMIT; 26412 26413# check transactions-7 success: 1 26414DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26415COMMIT WORK; 26416SET @@session.sql_mode = 'traditional'; 26417Warnings: 26418Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26419SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 26420INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26421SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 26422'', '', 'was inserted' FROM t0_template 26423WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26424ERROR 22012: Division by 0 26425COMMIT; 26426 26427# check transactions-8 success: 1 26428# INFO: Storage engine used for t1 seems to be able to revert 26429# changes made by the failing statement. 26430SET @@session.sql_mode = ''; 26431Warnings: 26432Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26433SET AUTOCOMMIT= 1; 26434DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26435COMMIT WORK; 26436UPDATE t1 SET f_charbig = REPEAT('b', 1000); 26437 26438# check special-1 success: 1 26439UPDATE t1 SET f_charbig = ''; 26440 26441# check special-2 success: 1 26442UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 26443INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26444SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 26445WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26446INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26447SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26448'just inserted' FROM t0_template 26449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26450CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 26451BEGIN 26452UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26453f_charbig = 'updated by trigger' 26454 WHERE f_int1 = new.f_int1; 26455END| 26456INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26457SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 26458WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26459 26460# check trigger-1 success: 1 26461DROP TRIGGER trg_1; 26462UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26463f_int2 = CAST(f_char1 AS SIGNED INT), 26464f_charbig = 'just inserted' 26465 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26466DELETE FROM t0_aux 26467WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26468INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26469SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26470'just inserted' FROM t0_template 26471WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26472CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 26473BEGIN 26474UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26475f_charbig = 'updated by trigger' 26476 WHERE f_int1 = new.f_int1; 26477END| 26478INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26479SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 26480WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26481 26482# check trigger-2 success: 1 26483DROP TRIGGER trg_1; 26484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26485f_int2 = CAST(f_char1 AS SIGNED INT), 26486f_charbig = 'just inserted' 26487 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26488DELETE FROM t0_aux 26489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26492'just inserted' FROM t0_template 26493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26494CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 26495BEGIN 26496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26497f_charbig = 'updated by trigger' 26498 WHERE f_int1 = new.f_int1; 26499END| 26500UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26502 26503# check trigger-3 success: 1 26504DROP TRIGGER trg_1; 26505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26506f_int2 = CAST(f_char1 AS SIGNED INT), 26507f_charbig = 'just inserted' 26508 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26509DELETE FROM t0_aux 26510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26513'just inserted' FROM t0_template 26514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26515CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 26516BEGIN 26517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26518f_charbig = 'updated by trigger' 26519 WHERE f_int1 = - old.f_int1; 26520END| 26521UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26523 26524# check trigger-4 success: 1 26525DROP TRIGGER trg_1; 26526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26527f_int2 = CAST(f_char1 AS SIGNED INT), 26528f_charbig = 'just inserted' 26529 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26530DELETE FROM t0_aux 26531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26534'just inserted' FROM t0_template 26535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26536CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26537BEGIN 26538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26539f_charbig = 'updated by trigger' 26540 WHERE f_int1 = new.f_int1; 26541END| 26542UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26544 26545# check trigger-5 success: 1 26546DROP TRIGGER trg_1; 26547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26548f_int2 = CAST(f_char1 AS SIGNED INT), 26549f_charbig = 'just inserted' 26550 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26551DELETE FROM t0_aux 26552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26555'just inserted' FROM t0_template 26556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26557CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26558BEGIN 26559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26560f_charbig = 'updated by trigger' 26561 WHERE f_int1 = - old.f_int1; 26562END| 26563UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26565 26566# check trigger-6 success: 1 26567DROP TRIGGER trg_1; 26568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26569f_int2 = CAST(f_char1 AS SIGNED INT), 26570f_charbig = 'just inserted' 26571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26572DELETE FROM t0_aux 26573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26576'just inserted' FROM t0_template 26577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26578CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 26579BEGIN 26580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26581f_charbig = 'updated by trigger' 26582 WHERE f_int1 = - old.f_int1; 26583END| 26584DELETE FROM t0_aux 26585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26586 26587# check trigger-7 success: 1 26588DROP TRIGGER trg_1; 26589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26590f_int2 = CAST(f_char1 AS SIGNED INT), 26591f_charbig = 'just inserted' 26592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26593DELETE FROM t0_aux 26594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26595INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26596SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26597'just inserted' FROM t0_template 26598WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26599CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 26600BEGIN 26601UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26602f_charbig = 'updated by trigger' 26603 WHERE f_int1 = - old.f_int1; 26604END| 26605DELETE FROM t0_aux 26606WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26607 26608# check trigger-8 success: 1 26609DROP TRIGGER trg_1; 26610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26611f_int2 = CAST(f_char1 AS SIGNED INT), 26612f_charbig = 'just inserted' 26613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26614DELETE FROM t0_aux 26615WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26616DELETE FROM t1 26617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26618CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26619BEGIN 26620SET new.f_int1 = old.f_int1 + @max_row, 26621new.f_int2 = old.f_int2 - @max_row, 26622new.f_charbig = '####updated per update trigger####'; 26623END| 26624UPDATE t1 26625SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26626f_charbig = '####updated per update statement itself####'; 26627 26628# check trigger-9 success: 1 26629DROP TRIGGER trg_2; 26630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26631f_int2 = CAST(f_char1 AS SIGNED INT), 26632f_charbig = CONCAT('===',f_char1,'==='); 26633CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26634BEGIN 26635SET new.f_int1 = new.f_int1 + @max_row, 26636new.f_int2 = new.f_int2 - @max_row, 26637new.f_charbig = '####updated per update trigger####'; 26638END| 26639UPDATE t1 26640SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26641f_charbig = '####updated per update statement itself####'; 26642 26643# check trigger-10 success: 1 26644DROP TRIGGER trg_2; 26645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26646f_int2 = CAST(f_char1 AS SIGNED INT), 26647f_charbig = CONCAT('===',f_char1,'==='); 26648CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26649BEGIN 26650SET new.f_int1 = @my_max1 + @counter, 26651new.f_int2 = @my_min2 - @counter, 26652new.f_charbig = '####updated per insert trigger####'; 26653SET @counter = @counter + 1; 26654END| 26655SET @counter = 1; 26656SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26657INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26658SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26659CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26661ORDER BY f_int1; 26662DROP TRIGGER trg_3; 26663 26664# check trigger-11 success: 1 26665DELETE FROM t1 26666WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26667AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26668AND f_charbig = '####updated per insert trigger####'; 26669CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26670BEGIN 26671SET new.f_int1 = @my_max1 + @counter, 26672new.f_int2 = @my_min2 - @counter, 26673new.f_charbig = '####updated per insert trigger####'; 26674SET @counter = @counter + 1; 26675END| 26676SET @counter = 1; 26677SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26678INSERT INTO t1 (f_char1, f_char2, f_charbig) 26679SELECT CAST(f_int1 AS CHAR), 26680CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26681WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26682ORDER BY f_int1; 26683DROP TRIGGER trg_3; 26684 26685# check trigger-12 success: 1 26686DELETE FROM t1 26687WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26688AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26689AND f_charbig = '####updated per insert trigger####'; 26690ANALYZE TABLE t1; 26691Table Op Msg_type Msg_text 26692test.t1 analyze status OK 26693CHECK TABLE t1 EXTENDED; 26694Table Op Msg_type Msg_text 26695test.t1 check status OK 26696CHECKSUM TABLE t1 EXTENDED; 26697Table Checksum 26698test.t1 <some_value> 26699OPTIMIZE TABLE t1; 26700Table Op Msg_type Msg_text 26701test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 26702test.t1 optimize status OK 26703# check layout success: 1 26704REPAIR TABLE t1 EXTENDED; 26705Table Op Msg_type Msg_text 26706test.t1 repair status OK 26707# check layout success: 1 26708TRUNCATE t1; 26709 26710# check TRUNCATE success: 1 26711# check layout success: 1 26712# End usability test (inc/partition_check.inc) 26713DROP TABLE t1; 26714CREATE TABLE t1 ( 26715f_int1 INTEGER, 26716f_int2 INTEGER, 26717f_char1 CHAR(20), 26718f_char2 CHAR(20), 26719f_charbig VARCHAR(1000) 26720, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 26721) 26722PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 26723(PARTITION part1 VALUES LESS THAN (0) 26724(SUBPARTITION subpart11, SUBPARTITION subpart12), 26725PARTITION part2 VALUES LESS THAN (5) 26726(SUBPARTITION subpart21, SUBPARTITION subpart22), 26727PARTITION part3 VALUES LESS THAN (10) 26728(SUBPARTITION subpart31, SUBPARTITION subpart32), 26729PARTITION part4 VALUES LESS THAN (2147483646) 26730(SUBPARTITION subpart41, SUBPARTITION subpart42)); 26731INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26732SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 26733# Start usability test (inc/partition_check.inc) 26734create_command 26735SHOW CREATE TABLE t1; 26736Table Create Table 26737t1 CREATE TABLE `t1` ( 26738 `f_int1` int(11) NOT NULL, 26739 `f_int2` int(11) NOT NULL, 26740 `f_char1` char(20) DEFAULT NULL, 26741 `f_char2` char(20) DEFAULT NULL, 26742 `f_charbig` varchar(1000) DEFAULT NULL, 26743 PRIMARY KEY (`f_int1`,`f_int2`), 26744 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 26745) ENGINE=InnoDB DEFAULT CHARSET=latin1 26746/*!50100 PARTITION BY RANGE (f_int1) 26747SUBPARTITION BY KEY (f_int2) 26748(PARTITION part1 VALUES LESS THAN (0) 26749 (SUBPARTITION subpart11 ENGINE = InnoDB, 26750 SUBPARTITION subpart12 ENGINE = InnoDB), 26751 PARTITION part2 VALUES LESS THAN (5) 26752 (SUBPARTITION subpart21 ENGINE = InnoDB, 26753 SUBPARTITION subpart22 ENGINE = InnoDB), 26754 PARTITION part3 VALUES LESS THAN (10) 26755 (SUBPARTITION subpart31 ENGINE = InnoDB, 26756 SUBPARTITION subpart32 ENGINE = InnoDB), 26757 PARTITION part4 VALUES LESS THAN (2147483646) 26758 (SUBPARTITION subpart41 ENGINE = InnoDB, 26759 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 26760 26761unified filelist 26762t1#P#part1#SP#subpart11.ibd 26763t1#P#part1#SP#subpart12.ibd 26764t1#P#part2#SP#subpart21.ibd 26765t1#P#part2#SP#subpart22.ibd 26766t1#P#part3#SP#subpart31.ibd 26767t1#P#part3#SP#subpart32.ibd 26768t1#P#part4#SP#subpart41.ibd 26769t1#P#part4#SP#subpart42.ibd 26770t1.frm 26771 26772# check prerequisites-1 success: 1 26773# check COUNT(*) success: 1 26774# check MIN/MAX(f_int1) success: 1 26775# check MIN/MAX(f_int2) success: 1 26776INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26777SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26778CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 26779WHERE f_int1 IN (2,3); 26780ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 26781# check prerequisites-3 success: 1 26782# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 26783INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26784SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26785CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26786WHERE f_int1 IN (2,3); 26787DELETE FROM t1 WHERE f_charbig = 'delete me'; 26788INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26789SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26790CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26791WHERE f_int1 IN (2,3); 26792DELETE FROM t1 WHERE f_charbig = 'delete me'; 26793# check read via f_int1 success: 1 26794# check read via f_int2 success: 1 26795 26796# check multiple-1 success: 1 26797DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 26798 26799# check multiple-2 success: 1 26800INSERT INTO t1 SELECT * FROM t0_template 26801WHERE MOD(f_int1,3) = 0; 26802 26803# check multiple-3 success: 1 26804UPDATE t1 SET f_int1 = f_int1 + @max_row 26805WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 26806AND @max_row_div2 + @max_row_div4; 26807 26808# check multiple-4 success: 1 26809DELETE FROM t1 26810WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 26811AND @max_row_div2 + @max_row_div4 + @max_row; 26812 26813# check multiple-5 success: 1 26814SELECT COUNT(*) INTO @try_count FROM t0_template 26815WHERE MOD(f_int1,3) = 0 26816AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26817SELECT COUNT(*) INTO @clash_count 26818FROM t1 INNER JOIN t0_template USING(f_int1) 26819WHERE MOD(f_int1,3) = 0 26820AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26821SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 26822INSERT INTO t1 26823SET f_int1 = @cur_value , f_int2 = @cur_value, 26824f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26825f_charbig = '#SINGLE#'; 26826 26827# check single-1 success: 1 26828SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 26829INSERT INTO t1 26830SET f_int1 = @cur_value , f_int2 = @cur_value, 26831f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26832f_charbig = '#SINGLE#'; 26833 26834# check single-2 success: 1 26835SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 26836SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 26837UPDATE t1 SET f_int1 = @cur_value2 26838WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 26839 26840# check single-3 success: 1 26841SET @cur_value1= -1; 26842SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 26843UPDATE t1 SET f_int1 = @cur_value1 26844WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 26845 26846# check single-4 success: 1 26847SELECT MAX(f_int1) INTO @cur_value FROM t1; 26848DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 26849 26850# check single-5 success: 1 26851DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 26852 26853# check single-6 success: 1 26854INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 26855ERROR HY000: Table has no partition for value 2147483647 26856DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 26857INSERT t1 SET f_int1 = 0 , f_int2 = 0, 26858f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 26859f_charbig = '#NULL#'; 26860INSERT INTO t1 26861SET f_int1 = NULL , f_int2 = -@max_row, 26862f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 26863f_charbig = '#NULL#'; 26864ERROR 23000: Column 'f_int1' cannot be null 26865# check null success: 1 26866DELETE FROM t1 26867WHERE f_int1 = 0 AND f_int2 = 0 26868AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 26869AND f_charbig = '#NULL#'; 26870INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26871SELECT f_int1, f_int1, '', '', 'was inserted' 26872 FROM t0_template source_tab 26873WHERE MOD(f_int1,3) = 0 26874AND f_int1 BETWEEN @max_row_div2 AND @max_row 26875ON DUPLICATE KEY 26876UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 26877f_int2 = 2 * @max_row + source_tab.f_int1, 26878f_charbig = 'was updated'; 26879 26880# check unique-1-a success: 1 26881 26882# check unique-1-b success: 1 26883DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26884UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26885f_int2 = CAST(f_char1 AS SIGNED INT), 26886f_charbig = CONCAT('===',f_char1,'===') 26887WHERE f_charbig = 'was updated'; 26888REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26889SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 26890 FROM t0_template source_tab 26891WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26892 26893# check replace success: 1 26894DELETE FROM t1 26895WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 26896DELETE FROM t1 26897WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 26898f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 26899UPDATE t1 SET f_int2 = f_int1, 26900f_char1 = CAST(f_int1 AS CHAR), 26901f_char2 = CAST(f_int1 AS CHAR), 26902f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 26903WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 26904SET AUTOCOMMIT= 0; 26905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26906SELECT f_int1, f_int1, '', '', 'was inserted' 26907FROM t0_template source_tab 26908WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26909 26910# check transactions-1 success: 1 26911COMMIT WORK; 26912 26913# check transactions-2 success: 1 26914ROLLBACK WORK; 26915 26916# check transactions-3 success: 1 26917DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26918COMMIT WORK; 26919ROLLBACK WORK; 26920 26921# check transactions-4 success: 1 26922INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26923SELECT f_int1, f_int1, '', '', 'was inserted' 26924FROM t0_template source_tab 26925WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26926 26927# check transactions-5 success: 1 26928ROLLBACK WORK; 26929 26930# check transactions-6 success: 1 26931# INFO: Storage engine used for t1 seems to be transactional. 26932COMMIT; 26933 26934# check transactions-7 success: 1 26935DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26936COMMIT WORK; 26937SET @@session.sql_mode = 'traditional'; 26938Warnings: 26939Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26940SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 26941INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26942SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 26943'', '', 'was inserted' FROM t0_template 26944WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26945ERROR 22012: Division by 0 26946COMMIT; 26947 26948# check transactions-8 success: 1 26949# INFO: Storage engine used for t1 seems to be able to revert 26950# changes made by the failing statement. 26951SET @@session.sql_mode = ''; 26952Warnings: 26953Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26954SET AUTOCOMMIT= 1; 26955DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26956COMMIT WORK; 26957UPDATE t1 SET f_charbig = REPEAT('b', 1000); 26958 26959# check special-1 success: 1 26960UPDATE t1 SET f_charbig = ''; 26961 26962# check special-2 success: 1 26963UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 26964INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26965SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 26966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26967INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26968SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26969'just inserted' FROM t0_template 26970WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26971CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 26972BEGIN 26973UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26974f_charbig = 'updated by trigger' 26975 WHERE f_int1 = new.f_int1; 26976END| 26977INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26978SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 26979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26980 26981# check trigger-1 success: 1 26982DROP TRIGGER trg_1; 26983UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26984f_int2 = CAST(f_char1 AS SIGNED INT), 26985f_charbig = 'just inserted' 26986 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26987DELETE FROM t0_aux 26988WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26989INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26990SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26991'just inserted' FROM t0_template 26992WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26993CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 26994BEGIN 26995UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26996f_charbig = 'updated by trigger' 26997 WHERE f_int1 = new.f_int1; 26998END| 26999INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27000SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 27001WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27002 27003# check trigger-2 success: 1 27004DROP TRIGGER trg_1; 27005UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27006f_int2 = CAST(f_char1 AS SIGNED INT), 27007f_charbig = 'just inserted' 27008 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27009DELETE FROM t0_aux 27010WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27011INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27012SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27013'just inserted' FROM t0_template 27014WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27015CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 27016BEGIN 27017UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27018f_charbig = 'updated by trigger' 27019 WHERE f_int1 = new.f_int1; 27020END| 27021UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27022WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27023 27024# check trigger-3 success: 1 27025DROP TRIGGER trg_1; 27026UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27027f_int2 = CAST(f_char1 AS SIGNED INT), 27028f_charbig = 'just inserted' 27029 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27030DELETE FROM t0_aux 27031WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27032INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27033SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27034'just inserted' FROM t0_template 27035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27036CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 27037BEGIN 27038UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27039f_charbig = 'updated by trigger' 27040 WHERE f_int1 = - old.f_int1; 27041END| 27042UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27043WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27044 27045# check trigger-4 success: 1 27046DROP TRIGGER trg_1; 27047UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27048f_int2 = CAST(f_char1 AS SIGNED INT), 27049f_charbig = 'just inserted' 27050 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27051DELETE FROM t0_aux 27052WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27053INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27054SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27055'just inserted' FROM t0_template 27056WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27057CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 27058BEGIN 27059UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27060f_charbig = 'updated by trigger' 27061 WHERE f_int1 = new.f_int1; 27062END| 27063UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27064WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27065 27066# check trigger-5 success: 1 27067DROP TRIGGER trg_1; 27068UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27069f_int2 = CAST(f_char1 AS SIGNED INT), 27070f_charbig = 'just inserted' 27071 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27072DELETE FROM t0_aux 27073WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27074INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27075SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27076'just inserted' FROM t0_template 27077WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27078CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 27079BEGIN 27080UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27081f_charbig = 'updated by trigger' 27082 WHERE f_int1 = - old.f_int1; 27083END| 27084UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27085WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27086 27087# check trigger-6 success: 1 27088DROP TRIGGER trg_1; 27089UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27090f_int2 = CAST(f_char1 AS SIGNED INT), 27091f_charbig = 'just inserted' 27092 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27093DELETE FROM t0_aux 27094WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27095INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27096SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27097'just inserted' FROM t0_template 27098WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27099CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 27100BEGIN 27101UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27102f_charbig = 'updated by trigger' 27103 WHERE f_int1 = - old.f_int1; 27104END| 27105DELETE FROM t0_aux 27106WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27107 27108# check trigger-7 success: 1 27109DROP TRIGGER trg_1; 27110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27111f_int2 = CAST(f_char1 AS SIGNED INT), 27112f_charbig = 'just inserted' 27113 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27114DELETE FROM t0_aux 27115WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27116INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27117SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27118'just inserted' FROM t0_template 27119WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27120CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 27121BEGIN 27122UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27123f_charbig = 'updated by trigger' 27124 WHERE f_int1 = - old.f_int1; 27125END| 27126DELETE FROM t0_aux 27127WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27128 27129# check trigger-8 success: 1 27130DROP TRIGGER trg_1; 27131UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27132f_int2 = CAST(f_char1 AS SIGNED INT), 27133f_charbig = 'just inserted' 27134 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27135DELETE FROM t0_aux 27136WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27137DELETE FROM t1 27138WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27139CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 27140BEGIN 27141SET new.f_int1 = old.f_int1 + @max_row, 27142new.f_int2 = old.f_int2 - @max_row, 27143new.f_charbig = '####updated per update trigger####'; 27144END| 27145UPDATE t1 27146SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 27147f_charbig = '####updated per update statement itself####'; 27148 27149# check trigger-9 success: 1 27150DROP TRIGGER trg_2; 27151UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27152f_int2 = CAST(f_char1 AS SIGNED INT), 27153f_charbig = CONCAT('===',f_char1,'==='); 27154CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 27155BEGIN 27156SET new.f_int1 = new.f_int1 + @max_row, 27157new.f_int2 = new.f_int2 - @max_row, 27158new.f_charbig = '####updated per update trigger####'; 27159END| 27160UPDATE t1 27161SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 27162f_charbig = '####updated per update statement itself####'; 27163 27164# check trigger-10 success: 1 27165DROP TRIGGER trg_2; 27166UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27167f_int2 = CAST(f_char1 AS SIGNED INT), 27168f_charbig = CONCAT('===',f_char1,'==='); 27169CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 27170BEGIN 27171SET new.f_int1 = @my_max1 + @counter, 27172new.f_int2 = @my_min2 - @counter, 27173new.f_charbig = '####updated per insert trigger####'; 27174SET @counter = @counter + 1; 27175END| 27176SET @counter = 1; 27177SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 27178INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27179SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 27180CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 27181WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 27182ORDER BY f_int1; 27183DROP TRIGGER trg_3; 27184 27185# check trigger-11 success: 1 27186DELETE FROM t1 27187WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 27188AND f_int2 <> CAST(f_char1 AS SIGNED INT) 27189AND f_charbig = '####updated per insert trigger####'; 27190CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 27191BEGIN 27192SET new.f_int1 = @my_max1 + @counter, 27193new.f_int2 = @my_min2 - @counter, 27194new.f_charbig = '####updated per insert trigger####'; 27195SET @counter = @counter + 1; 27196END| 27197SET @counter = 1; 27198SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 27199INSERT INTO t1 (f_char1, f_char2, f_charbig) 27200SELECT CAST(f_int1 AS CHAR), 27201CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 27202WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 27203ORDER BY f_int1; 27204DROP TRIGGER trg_3; 27205 27206# check trigger-12 success: 1 27207DELETE FROM t1 27208WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 27209AND f_int2 <> CAST(f_char1 AS SIGNED INT) 27210AND f_charbig = '####updated per insert trigger####'; 27211ANALYZE TABLE t1; 27212Table Op Msg_type Msg_text 27213test.t1 analyze status OK 27214CHECK TABLE t1 EXTENDED; 27215Table Op Msg_type Msg_text 27216test.t1 check status OK 27217CHECKSUM TABLE t1 EXTENDED; 27218Table Checksum 27219test.t1 <some_value> 27220OPTIMIZE TABLE t1; 27221Table Op Msg_type Msg_text 27222test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 27223test.t1 optimize status OK 27224# check layout success: 1 27225REPAIR TABLE t1 EXTENDED; 27226Table Op Msg_type Msg_text 27227test.t1 repair status OK 27228# check layout success: 1 27229TRUNCATE t1; 27230 27231# check TRUNCATE success: 1 27232# check layout success: 1 27233# End usability test (inc/partition_check.inc) 27234DROP TABLE t1; 27235CREATE TABLE t1 ( 27236f_int1 INTEGER, 27237f_int2 INTEGER, 27238f_char1 CHAR(20), 27239f_char2 CHAR(20), 27240f_charbig VARCHAR(1000) 27241, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 27242) 27243PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 27244(PARTITION part1 VALUES IN (0) 27245(SUBPARTITION sp11, SUBPARTITION sp12), 27246PARTITION part2 VALUES IN (1) 27247(SUBPARTITION sp21, SUBPARTITION sp22), 27248PARTITION part3 VALUES IN (2) 27249(SUBPARTITION sp31, SUBPARTITION sp32), 27250PARTITION part4 VALUES IN (NULL) 27251(SUBPARTITION sp41, SUBPARTITION sp42)); 27252INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 27253SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 27254# Start usability test (inc/partition_check.inc) 27255create_command 27256SHOW CREATE TABLE t1; 27257Table Create Table 27258t1 CREATE TABLE `t1` ( 27259 `f_int1` int(11) NOT NULL, 27260 `f_int2` int(11) NOT NULL, 27261 `f_char1` char(20) DEFAULT NULL, 27262 `f_char2` char(20) DEFAULT NULL, 27263 `f_charbig` varchar(1000) DEFAULT NULL, 27264 PRIMARY KEY (`f_int1`,`f_int2`), 27265 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 27266) ENGINE=InnoDB DEFAULT CHARSET=latin1 27267/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 27268SUBPARTITION BY HASH (f_int2 + 1) 27269(PARTITION part1 VALUES IN (0) 27270 (SUBPARTITION sp11 ENGINE = InnoDB, 27271 SUBPARTITION sp12 ENGINE = InnoDB), 27272 PARTITION part2 VALUES IN (1) 27273 (SUBPARTITION sp21 ENGINE = InnoDB, 27274 SUBPARTITION sp22 ENGINE = InnoDB), 27275 PARTITION part3 VALUES IN (2) 27276 (SUBPARTITION sp31 ENGINE = InnoDB, 27277 SUBPARTITION sp32 ENGINE = InnoDB), 27278 PARTITION part4 VALUES IN (NULL) 27279 (SUBPARTITION sp41 ENGINE = InnoDB, 27280 SUBPARTITION sp42 ENGINE = InnoDB)) */ 27281 27282unified filelist 27283t1#P#part1#SP#sp11.ibd 27284t1#P#part1#SP#sp12.ibd 27285t1#P#part2#SP#sp21.ibd 27286t1#P#part2#SP#sp22.ibd 27287t1#P#part3#SP#sp31.ibd 27288t1#P#part3#SP#sp32.ibd 27289t1#P#part4#SP#sp41.ibd 27290t1#P#part4#SP#sp42.ibd 27291t1.frm 27292 27293# check prerequisites-1 success: 1 27294# check COUNT(*) success: 1 27295# check MIN/MAX(f_int1) success: 1 27296# check MIN/MAX(f_int2) success: 1 27297INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27298SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 27299CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 27300WHERE f_int1 IN (2,3); 27301ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 27302# check prerequisites-3 success: 1 27303# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 27304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27305SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 27306CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 27307WHERE f_int1 IN (2,3); 27308DELETE FROM t1 WHERE f_charbig = 'delete me'; 27309INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27310SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 27311CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 27312WHERE f_int1 IN (2,3); 27313DELETE FROM t1 WHERE f_charbig = 'delete me'; 27314# check read via f_int1 success: 1 27315# check read via f_int2 success: 1 27316 27317# check multiple-1 success: 1 27318DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 27319 27320# check multiple-2 success: 1 27321INSERT INTO t1 SELECT * FROM t0_template 27322WHERE MOD(f_int1,3) = 0; 27323 27324# check multiple-3 success: 1 27325UPDATE t1 SET f_int1 = f_int1 + @max_row 27326WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 27327AND @max_row_div2 + @max_row_div4; 27328 27329# check multiple-4 success: 1 27330DELETE FROM t1 27331WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 27332AND @max_row_div2 + @max_row_div4 + @max_row; 27333 27334# check multiple-5 success: 1 27335SELECT COUNT(*) INTO @try_count FROM t0_template 27336WHERE MOD(f_int1,3) = 0 27337AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27338SELECT COUNT(*) INTO @clash_count 27339FROM t1 INNER JOIN t0_template USING(f_int1) 27340WHERE MOD(f_int1,3) = 0 27341AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27342SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 27343INSERT INTO t1 27344SET f_int1 = @cur_value , f_int2 = @cur_value, 27345f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 27346f_charbig = '#SINGLE#'; 27347 27348# check single-1 success: 1 27349SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 27350INSERT INTO t1 27351SET f_int1 = @cur_value , f_int2 = @cur_value, 27352f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 27353f_charbig = '#SINGLE#'; 27354 27355# check single-2 success: 1 27356SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 27357SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 27358UPDATE t1 SET f_int1 = @cur_value2 27359WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 27360 27361# check single-3 success: 1 27362SET @cur_value1= -1; 27363SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 27364UPDATE t1 SET f_int1 = @cur_value1 27365WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 27366 27367# check single-4 success: 1 27368SELECT MAX(f_int1) INTO @cur_value FROM t1; 27369DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 27370 27371# check single-5 success: 1 27372DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 27373 27374# check single-6 success: 1 27375INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 27376 27377# check single-7 success: 1 27378DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 27379DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 27380INSERT t1 SET f_int1 = 0 , f_int2 = 0, 27381f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 27382f_charbig = '#NULL#'; 27383INSERT INTO t1 27384SET f_int1 = NULL , f_int2 = -@max_row, 27385f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 27386f_charbig = '#NULL#'; 27387ERROR 23000: Column 'f_int1' cannot be null 27388# check null success: 1 27389DELETE FROM t1 27390WHERE f_int1 = 0 AND f_int2 = 0 27391AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 27392AND f_charbig = '#NULL#'; 27393INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27394SELECT f_int1, f_int1, '', '', 'was inserted' 27395 FROM t0_template source_tab 27396WHERE MOD(f_int1,3) = 0 27397AND f_int1 BETWEEN @max_row_div2 AND @max_row 27398ON DUPLICATE KEY 27399UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 27400f_int2 = 2 * @max_row + source_tab.f_int1, 27401f_charbig = 'was updated'; 27402 27403# check unique-1-a success: 1 27404 27405# check unique-1-b success: 1 27406DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27407UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27408f_int2 = CAST(f_char1 AS SIGNED INT), 27409f_charbig = CONCAT('===',f_char1,'===') 27410WHERE f_charbig = 'was updated'; 27411REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27412SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 27413 FROM t0_template source_tab 27414WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27415 27416# check replace success: 1 27417DELETE FROM t1 27418WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 27419DELETE FROM t1 27420WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 27421f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 27422UPDATE t1 SET f_int2 = f_int1, 27423f_char1 = CAST(f_int1 AS CHAR), 27424f_char2 = CAST(f_int1 AS CHAR), 27425f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 27426WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 27427SET AUTOCOMMIT= 0; 27428INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27429SELECT f_int1, f_int1, '', '', 'was inserted' 27430FROM t0_template source_tab 27431WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27432 27433# check transactions-1 success: 1 27434COMMIT WORK; 27435 27436# check transactions-2 success: 1 27437ROLLBACK WORK; 27438 27439# check transactions-3 success: 1 27440DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27441COMMIT WORK; 27442ROLLBACK WORK; 27443 27444# check transactions-4 success: 1 27445INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27446SELECT f_int1, f_int1, '', '', 'was inserted' 27447FROM t0_template source_tab 27448WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27449 27450# check transactions-5 success: 1 27451ROLLBACK WORK; 27452 27453# check transactions-6 success: 1 27454# INFO: Storage engine used for t1 seems to be transactional. 27455COMMIT; 27456 27457# check transactions-7 success: 1 27458DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27459COMMIT WORK; 27460SET @@session.sql_mode = 'traditional'; 27461Warnings: 27462Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 27463SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 27464INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27465SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 27466'', '', 'was inserted' FROM t0_template 27467WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27468ERROR 22012: Division by 0 27469COMMIT; 27470 27471# check transactions-8 success: 1 27472# INFO: Storage engine used for t1 seems to be able to revert 27473# changes made by the failing statement. 27474SET @@session.sql_mode = ''; 27475Warnings: 27476Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 27477SET AUTOCOMMIT= 1; 27478DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27479COMMIT WORK; 27480UPDATE t1 SET f_charbig = REPEAT('b', 1000); 27481 27482# check special-1 success: 1 27483UPDATE t1 SET f_charbig = ''; 27484 27485# check special-2 success: 1 27486UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 27487INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 27488SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 27489WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27492'just inserted' FROM t0_template 27493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27494CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 27495BEGIN 27496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27497f_charbig = 'updated by trigger' 27498 WHERE f_int1 = new.f_int1; 27499END| 27500INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27501SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 27502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27503 27504# check trigger-1 success: 1 27505DROP TRIGGER trg_1; 27506UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27507f_int2 = CAST(f_char1 AS SIGNED INT), 27508f_charbig = 'just inserted' 27509 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27510DELETE FROM t0_aux 27511WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27512INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27513SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27514'just inserted' FROM t0_template 27515WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27516CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 27517BEGIN 27518UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27519f_charbig = 'updated by trigger' 27520 WHERE f_int1 = new.f_int1; 27521END| 27522INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27523SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 27524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27525 27526# check trigger-2 success: 1 27527DROP TRIGGER trg_1; 27528UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27529f_int2 = CAST(f_char1 AS SIGNED INT), 27530f_charbig = 'just inserted' 27531 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27532DELETE FROM t0_aux 27533WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27534INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27535SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27536'just inserted' FROM t0_template 27537WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27538CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 27539BEGIN 27540UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27541f_charbig = 'updated by trigger' 27542 WHERE f_int1 = new.f_int1; 27543END| 27544UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27545WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27546 27547# check trigger-3 success: 1 27548DROP TRIGGER trg_1; 27549UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27550f_int2 = CAST(f_char1 AS SIGNED INT), 27551f_charbig = 'just inserted' 27552 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27553DELETE FROM t0_aux 27554WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27555INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27556SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27557'just inserted' FROM t0_template 27558WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27559CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 27560BEGIN 27561UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27562f_charbig = 'updated by trigger' 27563 WHERE f_int1 = - old.f_int1; 27564END| 27565UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27566WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27567 27568# check trigger-4 success: 1 27569DROP TRIGGER trg_1; 27570UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27571f_int2 = CAST(f_char1 AS SIGNED INT), 27572f_charbig = 'just inserted' 27573 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27574DELETE FROM t0_aux 27575WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27576INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27577SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27578'just inserted' FROM t0_template 27579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27580CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 27581BEGIN 27582UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27583f_charbig = 'updated by trigger' 27584 WHERE f_int1 = new.f_int1; 27585END| 27586UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27587WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27588 27589# check trigger-5 success: 1 27590DROP TRIGGER trg_1; 27591UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27592f_int2 = CAST(f_char1 AS SIGNED INT), 27593f_charbig = 'just inserted' 27594 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27595DELETE FROM t0_aux 27596WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27597INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27598SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27599'just inserted' FROM t0_template 27600WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27601CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 27602BEGIN 27603UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27604f_charbig = 'updated by trigger' 27605 WHERE f_int1 = - old.f_int1; 27606END| 27607UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 27608WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27609 27610# check trigger-6 success: 1 27611DROP TRIGGER trg_1; 27612UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27613f_int2 = CAST(f_char1 AS SIGNED INT), 27614f_charbig = 'just inserted' 27615 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27616DELETE FROM t0_aux 27617WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27618INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27619SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27620'just inserted' FROM t0_template 27621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27622CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 27623BEGIN 27624UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27625f_charbig = 'updated by trigger' 27626 WHERE f_int1 = - old.f_int1; 27627END| 27628DELETE FROM t0_aux 27629WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27630 27631# check trigger-7 success: 1 27632DROP TRIGGER trg_1; 27633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27634f_int2 = CAST(f_char1 AS SIGNED INT), 27635f_charbig = 'just inserted' 27636 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27637DELETE FROM t0_aux 27638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 27640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 27641'just inserted' FROM t0_template 27642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27643CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 27644BEGIN 27645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 27646f_charbig = 'updated by trigger' 27647 WHERE f_int1 = - old.f_int1; 27648END| 27649DELETE FROM t0_aux 27650WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 27651 27652# check trigger-8 success: 1 27653DROP TRIGGER trg_1; 27654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27655f_int2 = CAST(f_char1 AS SIGNED INT), 27656f_charbig = 'just inserted' 27657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 27658DELETE FROM t0_aux 27659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27660DELETE FROM t1 27661WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 27662CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 27663BEGIN 27664SET new.f_int1 = old.f_int1 + @max_row, 27665new.f_int2 = old.f_int2 - @max_row, 27666new.f_charbig = '####updated per update trigger####'; 27667END| 27668UPDATE t1 27669SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 27670f_charbig = '####updated per update statement itself####'; 27671 27672# check trigger-9 success: 1 27673DROP TRIGGER trg_2; 27674UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27675f_int2 = CAST(f_char1 AS SIGNED INT), 27676f_charbig = CONCAT('===',f_char1,'==='); 27677CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 27678BEGIN 27679SET new.f_int1 = new.f_int1 + @max_row, 27680new.f_int2 = new.f_int2 - @max_row, 27681new.f_charbig = '####updated per update trigger####'; 27682END| 27683UPDATE t1 27684SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 27685f_charbig = '####updated per update statement itself####'; 27686 27687# check trigger-10 success: 1 27688DROP TRIGGER trg_2; 27689UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27690f_int2 = CAST(f_char1 AS SIGNED INT), 27691f_charbig = CONCAT('===',f_char1,'==='); 27692CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 27693BEGIN 27694SET new.f_int1 = @my_max1 + @counter, 27695new.f_int2 = @my_min2 - @counter, 27696new.f_charbig = '####updated per insert trigger####'; 27697SET @counter = @counter + 1; 27698END| 27699SET @counter = 1; 27700SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 27701INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27702SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 27703CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 27704WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 27705ORDER BY f_int1; 27706DROP TRIGGER trg_3; 27707 27708# check trigger-11 success: 1 27709DELETE FROM t1 27710WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 27711AND f_int2 <> CAST(f_char1 AS SIGNED INT) 27712AND f_charbig = '####updated per insert trigger####'; 27713CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 27714BEGIN 27715SET new.f_int1 = @my_max1 + @counter, 27716new.f_int2 = @my_min2 - @counter, 27717new.f_charbig = '####updated per insert trigger####'; 27718SET @counter = @counter + 1; 27719END| 27720SET @counter = 1; 27721SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 27722INSERT INTO t1 (f_char1, f_char2, f_charbig) 27723SELECT CAST(f_int1 AS CHAR), 27724CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 27725WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 27726ORDER BY f_int1; 27727DROP TRIGGER trg_3; 27728 27729# check trigger-12 success: 1 27730DELETE FROM t1 27731WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 27732AND f_int2 <> CAST(f_char1 AS SIGNED INT) 27733AND f_charbig = '####updated per insert trigger####'; 27734ANALYZE TABLE t1; 27735Table Op Msg_type Msg_text 27736test.t1 analyze status OK 27737CHECK TABLE t1 EXTENDED; 27738Table Op Msg_type Msg_text 27739test.t1 check status OK 27740CHECKSUM TABLE t1 EXTENDED; 27741Table Checksum 27742test.t1 <some_value> 27743OPTIMIZE TABLE t1; 27744Table Op Msg_type Msg_text 27745test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 27746test.t1 optimize status OK 27747# check layout success: 1 27748REPAIR TABLE t1 EXTENDED; 27749Table Op Msg_type Msg_text 27750test.t1 repair status OK 27751# check layout success: 1 27752TRUNCATE t1; 27753 27754# check TRUNCATE success: 1 27755# check layout success: 1 27756# End usability test (inc/partition_check.inc) 27757DROP TABLE t1; 27758CREATE TABLE t1 ( 27759f_int1 INTEGER, 27760f_int2 INTEGER, 27761f_char1 CHAR(20), 27762f_char2 CHAR(20), 27763f_charbig VARCHAR(1000) 27764, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2) 27765) 27766PARTITION BY LIST(ABS(MOD(f_int1,2))) 27767SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 27768(PARTITION part1 VALUES IN (0), 27769PARTITION part2 VALUES IN (1), 27770PARTITION part3 VALUES IN (NULL)); 27771INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 27772SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 27773# Start usability test (inc/partition_check.inc) 27774create_command 27775SHOW CREATE TABLE t1; 27776Table Create Table 27777t1 CREATE TABLE `t1` ( 27778 `f_int1` int(11) NOT NULL, 27779 `f_int2` int(11) NOT NULL, 27780 `f_char1` char(20) DEFAULT NULL, 27781 `f_char2` char(20) DEFAULT NULL, 27782 `f_charbig` varchar(1000) DEFAULT NULL, 27783 PRIMARY KEY (`f_int1`,`f_int2`), 27784 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 27785) ENGINE=InnoDB DEFAULT CHARSET=latin1 27786/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 27787SUBPARTITION BY KEY (f_int2) 27788SUBPARTITIONS 3 27789(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 27790 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 27791 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 27792 27793unified filelist 27794t1#P#part1#SP#part1sp0.ibd 27795t1#P#part1#SP#part1sp1.ibd 27796t1#P#part1#SP#part1sp2.ibd 27797t1#P#part2#SP#part2sp0.ibd 27798t1#P#part2#SP#part2sp1.ibd 27799t1#P#part2#SP#part2sp2.ibd 27800t1#P#part3#SP#part3sp0.ibd 27801t1#P#part3#SP#part3sp1.ibd 27802t1#P#part3#SP#part3sp2.ibd 27803t1.frm 27804 27805# check prerequisites-1 success: 1 27806# check COUNT(*) success: 1 27807# check MIN/MAX(f_int1) success: 1 27808# check MIN/MAX(f_int2) success: 1 27809INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27810SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 27811CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 27812WHERE f_int1 IN (2,3); 27813ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 27814# check prerequisites-3 success: 1 27815# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 27816INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27817SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 27818CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 27819WHERE f_int1 IN (2,3); 27820DELETE FROM t1 WHERE f_charbig = 'delete me'; 27821INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27822SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 27823CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 27824WHERE f_int1 IN (2,3); 27825DELETE FROM t1 WHERE f_charbig = 'delete me'; 27826# check read via f_int1 success: 1 27827# check read via f_int2 success: 1 27828 27829# check multiple-1 success: 1 27830DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 27831 27832# check multiple-2 success: 1 27833INSERT INTO t1 SELECT * FROM t0_template 27834WHERE MOD(f_int1,3) = 0; 27835 27836# check multiple-3 success: 1 27837UPDATE t1 SET f_int1 = f_int1 + @max_row 27838WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 27839AND @max_row_div2 + @max_row_div4; 27840 27841# check multiple-4 success: 1 27842DELETE FROM t1 27843WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 27844AND @max_row_div2 + @max_row_div4 + @max_row; 27845 27846# check multiple-5 success: 1 27847SELECT COUNT(*) INTO @try_count FROM t0_template 27848WHERE MOD(f_int1,3) = 0 27849AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27850SELECT COUNT(*) INTO @clash_count 27851FROM t1 INNER JOIN t0_template USING(f_int1) 27852WHERE MOD(f_int1,3) = 0 27853AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27854SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 27855INSERT INTO t1 27856SET f_int1 = @cur_value , f_int2 = @cur_value, 27857f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 27858f_charbig = '#SINGLE#'; 27859 27860# check single-1 success: 1 27861SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 27862INSERT INTO t1 27863SET f_int1 = @cur_value , f_int2 = @cur_value, 27864f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 27865f_charbig = '#SINGLE#'; 27866 27867# check single-2 success: 1 27868SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 27869SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 27870UPDATE t1 SET f_int1 = @cur_value2 27871WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 27872 27873# check single-3 success: 1 27874SET @cur_value1= -1; 27875SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 27876UPDATE t1 SET f_int1 = @cur_value1 27877WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 27878 27879# check single-4 success: 1 27880SELECT MAX(f_int1) INTO @cur_value FROM t1; 27881DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 27882 27883# check single-5 success: 1 27884DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 27885 27886# check single-6 success: 1 27887INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 27888 27889# check single-7 success: 1 27890DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 27891DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 27892INSERT t1 SET f_int1 = 0 , f_int2 = 0, 27893f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 27894f_charbig = '#NULL#'; 27895INSERT INTO t1 27896SET f_int1 = NULL , f_int2 = -@max_row, 27897f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 27898f_charbig = '#NULL#'; 27899ERROR 23000: Column 'f_int1' cannot be null 27900# check null success: 1 27901DELETE FROM t1 27902WHERE f_int1 = 0 AND f_int2 = 0 27903AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 27904AND f_charbig = '#NULL#'; 27905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27906SELECT f_int1, f_int1, '', '', 'was inserted' 27907 FROM t0_template source_tab 27908WHERE MOD(f_int1,3) = 0 27909AND f_int1 BETWEEN @max_row_div2 AND @max_row 27910ON DUPLICATE KEY 27911UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 27912f_int2 = 2 * @max_row + source_tab.f_int1, 27913f_charbig = 'was updated'; 27914 27915# check unique-1-a success: 1 27916 27917# check unique-1-b success: 1 27918DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27919UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 27920f_int2 = CAST(f_char1 AS SIGNED INT), 27921f_charbig = CONCAT('===',f_char1,'===') 27922WHERE f_charbig = 'was updated'; 27923REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27924SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 27925 FROM t0_template source_tab 27926WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 27927 27928# check replace success: 1 27929DELETE FROM t1 27930WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 27931DELETE FROM t1 27932WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 27933f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 27934UPDATE t1 SET f_int2 = f_int1, 27935f_char1 = CAST(f_int1 AS CHAR), 27936f_char2 = CAST(f_int1 AS CHAR), 27937f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 27938WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 27939SET AUTOCOMMIT= 0; 27940INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27941SELECT f_int1, f_int1, '', '', 'was inserted' 27942FROM t0_template source_tab 27943WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27944 27945# check transactions-1 success: 1 27946COMMIT WORK; 27947 27948# check transactions-2 success: 1 27949ROLLBACK WORK; 27950 27951# check transactions-3 success: 1 27952DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27953COMMIT WORK; 27954ROLLBACK WORK; 27955 27956# check transactions-4 success: 1 27957INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27958SELECT f_int1, f_int1, '', '', 'was inserted' 27959FROM t0_template source_tab 27960WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27961 27962# check transactions-5 success: 1 27963ROLLBACK WORK; 27964 27965# check transactions-6 success: 1 27966# INFO: Storage engine used for t1 seems to be transactional. 27967COMMIT; 27968 27969# check transactions-7 success: 1 27970DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27971COMMIT WORK; 27972SET @@session.sql_mode = 'traditional'; 27973Warnings: 27974Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 27975SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 27976INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 27977SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 27978'', '', 'was inserted' FROM t0_template 27979WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 27980ERROR 22012: Division by 0 27981COMMIT; 27982 27983# check transactions-8 success: 1 27984# INFO: Storage engine used for t1 seems to be able to revert 27985# changes made by the failing statement. 27986SET @@session.sql_mode = ''; 27987Warnings: 27988Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 27989SET AUTOCOMMIT= 1; 27990DELETE FROM t1 WHERE f_charbig = 'was inserted'; 27991COMMIT WORK; 27992UPDATE t1 SET f_charbig = REPEAT('b', 1000); 27993 27994# check special-1 success: 1 27995UPDATE t1 SET f_charbig = ''; 27996 27997# check special-2 success: 1 27998UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 27999INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 28000SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 28001WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28002INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28003SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28004'just inserted' FROM t0_template 28005WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28006CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 28007BEGIN 28008UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28009f_charbig = 'updated by trigger' 28010 WHERE f_int1 = new.f_int1; 28011END| 28012INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28013SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 28014WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28015 28016# check trigger-1 success: 1 28017DROP TRIGGER trg_1; 28018UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28019f_int2 = CAST(f_char1 AS SIGNED INT), 28020f_charbig = 'just inserted' 28021 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28022DELETE FROM t0_aux 28023WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28024INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28025SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28026'just inserted' FROM t0_template 28027WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28028CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 28029BEGIN 28030UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28031f_charbig = 'updated by trigger' 28032 WHERE f_int1 = new.f_int1; 28033END| 28034INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28035SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 28036WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28037 28038# check trigger-2 success: 1 28039DROP TRIGGER trg_1; 28040UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28041f_int2 = CAST(f_char1 AS SIGNED INT), 28042f_charbig = 'just inserted' 28043 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28044DELETE FROM t0_aux 28045WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28046INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28047SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28048'just inserted' FROM t0_template 28049WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28050CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 28051BEGIN 28052UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28053f_charbig = 'updated by trigger' 28054 WHERE f_int1 = new.f_int1; 28055END| 28056UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28057WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28058 28059# check trigger-3 success: 1 28060DROP TRIGGER trg_1; 28061UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28062f_int2 = CAST(f_char1 AS SIGNED INT), 28063f_charbig = 'just inserted' 28064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28065DELETE FROM t0_aux 28066WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28067INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28068SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28069'just inserted' FROM t0_template 28070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28071CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 28072BEGIN 28073UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28074f_charbig = 'updated by trigger' 28075 WHERE f_int1 = - old.f_int1; 28076END| 28077UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28078WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28079 28080# check trigger-4 success: 1 28081DROP TRIGGER trg_1; 28082UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28083f_int2 = CAST(f_char1 AS SIGNED INT), 28084f_charbig = 'just inserted' 28085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28086DELETE FROM t0_aux 28087WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28088INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28089SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28090'just inserted' FROM t0_template 28091WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28092CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 28093BEGIN 28094UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28095f_charbig = 'updated by trigger' 28096 WHERE f_int1 = new.f_int1; 28097END| 28098UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28099WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28100 28101# check trigger-5 success: 1 28102DROP TRIGGER trg_1; 28103UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28104f_int2 = CAST(f_char1 AS SIGNED INT), 28105f_charbig = 'just inserted' 28106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28107DELETE FROM t0_aux 28108WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28109INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28110SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28111'just inserted' FROM t0_template 28112WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28113CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 28114BEGIN 28115UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28116f_charbig = 'updated by trigger' 28117 WHERE f_int1 = - old.f_int1; 28118END| 28119UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28120WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28121 28122# check trigger-6 success: 1 28123DROP TRIGGER trg_1; 28124UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28125f_int2 = CAST(f_char1 AS SIGNED INT), 28126f_charbig = 'just inserted' 28127 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28128DELETE FROM t0_aux 28129WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28130INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28131SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28132'just inserted' FROM t0_template 28133WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28134CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 28135BEGIN 28136UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28137f_charbig = 'updated by trigger' 28138 WHERE f_int1 = - old.f_int1; 28139END| 28140DELETE FROM t0_aux 28141WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28142 28143# check trigger-7 success: 1 28144DROP TRIGGER trg_1; 28145UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28146f_int2 = CAST(f_char1 AS SIGNED INT), 28147f_charbig = 'just inserted' 28148 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28149DELETE FROM t0_aux 28150WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28151INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28152SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28153'just inserted' FROM t0_template 28154WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28155CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 28156BEGIN 28157UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28158f_charbig = 'updated by trigger' 28159 WHERE f_int1 = - old.f_int1; 28160END| 28161DELETE FROM t0_aux 28162WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28163 28164# check trigger-8 success: 1 28165DROP TRIGGER trg_1; 28166UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28167f_int2 = CAST(f_char1 AS SIGNED INT), 28168f_charbig = 'just inserted' 28169 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28170DELETE FROM t0_aux 28171WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28172DELETE FROM t1 28173WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28174CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 28175BEGIN 28176SET new.f_int1 = old.f_int1 + @max_row, 28177new.f_int2 = old.f_int2 - @max_row, 28178new.f_charbig = '####updated per update trigger####'; 28179END| 28180UPDATE t1 28181SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 28182f_charbig = '####updated per update statement itself####'; 28183 28184# check trigger-9 success: 1 28185DROP TRIGGER trg_2; 28186UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28187f_int2 = CAST(f_char1 AS SIGNED INT), 28188f_charbig = CONCAT('===',f_char1,'==='); 28189CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 28190BEGIN 28191SET new.f_int1 = new.f_int1 + @max_row, 28192new.f_int2 = new.f_int2 - @max_row, 28193new.f_charbig = '####updated per update trigger####'; 28194END| 28195UPDATE t1 28196SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 28197f_charbig = '####updated per update statement itself####'; 28198 28199# check trigger-10 success: 1 28200DROP TRIGGER trg_2; 28201UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28202f_int2 = CAST(f_char1 AS SIGNED INT), 28203f_charbig = CONCAT('===',f_char1,'==='); 28204CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 28205BEGIN 28206SET new.f_int1 = @my_max1 + @counter, 28207new.f_int2 = @my_min2 - @counter, 28208new.f_charbig = '####updated per insert trigger####'; 28209SET @counter = @counter + 1; 28210END| 28211SET @counter = 1; 28212SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 28213INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28214SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 28215CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 28216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 28217ORDER BY f_int1; 28218DROP TRIGGER trg_3; 28219 28220# check trigger-11 success: 1 28221DELETE FROM t1 28222WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 28223AND f_int2 <> CAST(f_char1 AS SIGNED INT) 28224AND f_charbig = '####updated per insert trigger####'; 28225CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 28226BEGIN 28227SET new.f_int1 = @my_max1 + @counter, 28228new.f_int2 = @my_min2 - @counter, 28229new.f_charbig = '####updated per insert trigger####'; 28230SET @counter = @counter + 1; 28231END| 28232SET @counter = 1; 28233SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 28234INSERT INTO t1 (f_char1, f_char2, f_charbig) 28235SELECT CAST(f_int1 AS CHAR), 28236CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 28237WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 28238ORDER BY f_int1; 28239DROP TRIGGER trg_3; 28240 28241# check trigger-12 success: 1 28242DELETE FROM t1 28243WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 28244AND f_int2 <> CAST(f_char1 AS SIGNED INT) 28245AND f_charbig = '####updated per insert trigger####'; 28246ANALYZE TABLE t1; 28247Table Op Msg_type Msg_text 28248test.t1 analyze status OK 28249CHECK TABLE t1 EXTENDED; 28250Table Op Msg_type Msg_text 28251test.t1 check status OK 28252CHECKSUM TABLE t1 EXTENDED; 28253Table Checksum 28254test.t1 <some_value> 28255OPTIMIZE TABLE t1; 28256Table Op Msg_type Msg_text 28257test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 28258test.t1 optimize status OK 28259# check layout success: 1 28260REPAIR TABLE t1 EXTENDED; 28261Table Op Msg_type Msg_text 28262test.t1 repair status OK 28263# check layout success: 1 28264TRUNCATE t1; 28265 28266# check TRUNCATE success: 1 28267# check layout success: 1 28268# End usability test (inc/partition_check.inc) 28269DROP TABLE t1; 28270DROP TABLE IF EXISTS t1; 28271CREATE TABLE t1 ( 28272f_int1 INTEGER, 28273f_int2 INTEGER, 28274f_char1 CHAR(20), 28275f_char2 CHAR(20), 28276f_charbig VARCHAR(1000) 28277, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 28278) 28279PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 28280INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 28281SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 28282# Start usability test (inc/partition_check.inc) 28283create_command 28284SHOW CREATE TABLE t1; 28285Table Create Table 28286t1 CREATE TABLE `t1` ( 28287 `f_int1` int(11) DEFAULT NULL, 28288 `f_int2` int(11) DEFAULT NULL, 28289 `f_char1` char(20) DEFAULT NULL, 28290 `f_char2` char(20) DEFAULT NULL, 28291 `f_charbig` varchar(1000) DEFAULT NULL, 28292 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 28293 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 28294) ENGINE=InnoDB DEFAULT CHARSET=latin1 28295/*!50100 PARTITION BY HASH (f_int1 + f_int2) 28296PARTITIONS 2 */ 28297 28298unified filelist 28299t1#P#p0.ibd 28300t1#P#p1.ibd 28301t1.frm 28302 28303# check prerequisites-1 success: 1 28304# check COUNT(*) success: 1 28305# check MIN/MAX(f_int1) success: 1 28306# check MIN/MAX(f_int2) success: 1 28307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28308SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 28309CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 28310WHERE f_int1 IN (2,3); 28311ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 28312# check prerequisites-3 success: 1 28313# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 28314INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28315SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 28316CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 28317WHERE f_int1 IN (2,3); 28318DELETE FROM t1 WHERE f_charbig = 'delete me'; 28319INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28320SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 28321CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 28322WHERE f_int1 IN (2,3); 28323DELETE FROM t1 WHERE f_charbig = 'delete me'; 28324# check read via f_int1 success: 1 28325# check read via f_int2 success: 1 28326 28327# check multiple-1 success: 1 28328DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 28329 28330# check multiple-2 success: 1 28331INSERT INTO t1 SELECT * FROM t0_template 28332WHERE MOD(f_int1,3) = 0; 28333 28334# check multiple-3 success: 1 28335UPDATE t1 SET f_int1 = f_int1 + @max_row 28336WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 28337AND @max_row_div2 + @max_row_div4; 28338 28339# check multiple-4 success: 1 28340DELETE FROM t1 28341WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 28342AND @max_row_div2 + @max_row_div4 + @max_row; 28343 28344# check multiple-5 success: 1 28345SELECT COUNT(*) INTO @try_count FROM t0_template 28346WHERE MOD(f_int1,3) = 0 28347AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28348SELECT COUNT(*) INTO @clash_count 28349FROM t1 INNER JOIN t0_template USING(f_int1) 28350WHERE MOD(f_int1,3) = 0 28351AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28352SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 28353INSERT INTO t1 28354SET f_int1 = @cur_value , f_int2 = @cur_value, 28355f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 28356f_charbig = '#SINGLE#'; 28357 28358# check single-1 success: 1 28359SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 28360INSERT INTO t1 28361SET f_int1 = @cur_value , f_int2 = @cur_value, 28362f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 28363f_charbig = '#SINGLE#'; 28364 28365# check single-2 success: 1 28366SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 28367SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 28368UPDATE t1 SET f_int1 = @cur_value2 28369WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 28370 28371# check single-3 success: 1 28372SET @cur_value1= -1; 28373SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 28374UPDATE t1 SET f_int1 = @cur_value1 28375WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 28376 28377# check single-4 success: 1 28378SELECT MAX(f_int1) INTO @cur_value FROM t1; 28379DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 28380 28381# check single-5 success: 1 28382DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 28383 28384# check single-6 success: 1 28385INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 28386 28387# check single-7 success: 1 28388DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 28389DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 28390INSERT t1 SET f_int1 = 0 , f_int2 = 0, 28391f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 28392f_charbig = '#NULL#'; 28393INSERT INTO t1 28394SET f_int1 = NULL , f_int2 = -@max_row, 28395f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 28396f_charbig = '#NULL#'; 28397# check null success: 1 28398 28399# check null-1 success: 1 28400UPDATE t1 SET f_int1 = -@max_row 28401WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28402AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28403 28404# check null-2 success: 1 28405UPDATE t1 SET f_int1 = NULL 28406WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28407AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28408 28409# check null-3 success: 1 28410DELETE FROM t1 28411WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28412AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28413 28414# check null-4 success: 1 28415DELETE FROM t1 28416WHERE f_int1 = 0 AND f_int2 = 0 28417AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 28418AND f_charbig = '#NULL#'; 28419INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28420SELECT f_int1, f_int1, '', '', 'was inserted' 28421 FROM t0_template source_tab 28422WHERE MOD(f_int1,3) = 0 28423AND f_int1 BETWEEN @max_row_div2 AND @max_row 28424ON DUPLICATE KEY 28425UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 28426f_int2 = 2 * @max_row + source_tab.f_int1, 28427f_charbig = 'was updated'; 28428 28429# check unique-1-a success: 1 28430 28431# check unique-1-b success: 1 28432DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28433UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28434f_int2 = CAST(f_char1 AS SIGNED INT), 28435f_charbig = CONCAT('===',f_char1,'===') 28436WHERE f_charbig = 'was updated'; 28437REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28438SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 28439 FROM t0_template source_tab 28440WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28441 28442# check replace success: 1 28443DELETE FROM t1 28444WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 28445DELETE FROM t1 28446WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 28447f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 28448UPDATE t1 SET f_int2 = f_int1, 28449f_char1 = CAST(f_int1 AS CHAR), 28450f_char2 = CAST(f_int1 AS CHAR), 28451f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 28452WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 28453SET AUTOCOMMIT= 0; 28454INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28455SELECT f_int1, f_int1, '', '', 'was inserted' 28456FROM t0_template source_tab 28457WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 28458 28459# check transactions-1 success: 1 28460COMMIT WORK; 28461 28462# check transactions-2 success: 1 28463ROLLBACK WORK; 28464 28465# check transactions-3 success: 1 28466DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28467COMMIT WORK; 28468ROLLBACK WORK; 28469 28470# check transactions-4 success: 1 28471INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28472SELECT f_int1, f_int1, '', '', 'was inserted' 28473FROM t0_template source_tab 28474WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 28475 28476# check transactions-5 success: 1 28477ROLLBACK WORK; 28478 28479# check transactions-6 success: 1 28480# INFO: Storage engine used for t1 seems to be transactional. 28481COMMIT; 28482 28483# check transactions-7 success: 1 28484DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28485COMMIT WORK; 28486SET @@session.sql_mode = 'traditional'; 28487Warnings: 28488Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 28489SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 28490INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28491SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 28492'', '', 'was inserted' FROM t0_template 28493WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 28494ERROR 22012: Division by 0 28495COMMIT; 28496 28497# check transactions-8 success: 1 28498# INFO: Storage engine used for t1 seems to be able to revert 28499# changes made by the failing statement. 28500SET @@session.sql_mode = ''; 28501Warnings: 28502Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 28503SET AUTOCOMMIT= 1; 28504DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28505COMMIT WORK; 28506UPDATE t1 SET f_charbig = REPEAT('b', 1000); 28507 28508# check special-1 success: 1 28509UPDATE t1 SET f_charbig = ''; 28510 28511# check special-2 success: 1 28512UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 28513INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 28514SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 28515WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28516INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28517SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28518'just inserted' FROM t0_template 28519WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28520CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 28521BEGIN 28522UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28523f_charbig = 'updated by trigger' 28524 WHERE f_int1 = new.f_int1; 28525END| 28526INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28527SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 28528WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28529 28530# check trigger-1 success: 1 28531DROP TRIGGER trg_1; 28532UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28533f_int2 = CAST(f_char1 AS SIGNED INT), 28534f_charbig = 'just inserted' 28535 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28536DELETE FROM t0_aux 28537WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28538INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28539SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28540'just inserted' FROM t0_template 28541WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28542CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 28543BEGIN 28544UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28545f_charbig = 'updated by trigger' 28546 WHERE f_int1 = new.f_int1; 28547END| 28548INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28549SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 28550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28551 28552# check trigger-2 success: 1 28553DROP TRIGGER trg_1; 28554UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28555f_int2 = CAST(f_char1 AS SIGNED INT), 28556f_charbig = 'just inserted' 28557 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28558DELETE FROM t0_aux 28559WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28560INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28561SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28562'just inserted' FROM t0_template 28563WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28564CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 28565BEGIN 28566UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28567f_charbig = 'updated by trigger' 28568 WHERE f_int1 = new.f_int1; 28569END| 28570UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28571WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28572 28573# check trigger-3 success: 1 28574DROP TRIGGER trg_1; 28575UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28576f_int2 = CAST(f_char1 AS SIGNED INT), 28577f_charbig = 'just inserted' 28578 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28579DELETE FROM t0_aux 28580WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28581INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28582SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28583'just inserted' FROM t0_template 28584WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28585CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 28586BEGIN 28587UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28588f_charbig = 'updated by trigger' 28589 WHERE f_int1 = - old.f_int1; 28590END| 28591UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28592WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28593 28594# check trigger-4 success: 1 28595DROP TRIGGER trg_1; 28596UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28597f_int2 = CAST(f_char1 AS SIGNED INT), 28598f_charbig = 'just inserted' 28599 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28600DELETE FROM t0_aux 28601WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28603SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28604'just inserted' FROM t0_template 28605WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28606CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 28607BEGIN 28608UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28609f_charbig = 'updated by trigger' 28610 WHERE f_int1 = new.f_int1; 28611END| 28612UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28613WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28614 28615# check trigger-5 success: 1 28616DROP TRIGGER trg_1; 28617UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28618f_int2 = CAST(f_char1 AS SIGNED INT), 28619f_charbig = 'just inserted' 28620 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28621DELETE FROM t0_aux 28622WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28623INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28624SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28625'just inserted' FROM t0_template 28626WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28627CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 28628BEGIN 28629UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28630f_charbig = 'updated by trigger' 28631 WHERE f_int1 = - old.f_int1; 28632END| 28633UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 28634WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28635 28636# check trigger-6 success: 1 28637DROP TRIGGER trg_1; 28638UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28639f_int2 = CAST(f_char1 AS SIGNED INT), 28640f_charbig = 'just inserted' 28641 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28642DELETE FROM t0_aux 28643WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28644INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28645SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28646'just inserted' FROM t0_template 28647WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28648CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 28649BEGIN 28650UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28651f_charbig = 'updated by trigger' 28652 WHERE f_int1 = - old.f_int1; 28653END| 28654DELETE FROM t0_aux 28655WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28656 28657# check trigger-7 success: 1 28658DROP TRIGGER trg_1; 28659UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28660f_int2 = CAST(f_char1 AS SIGNED INT), 28661f_charbig = 'just inserted' 28662 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28663DELETE FROM t0_aux 28664WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28665INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 28666SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 28667'just inserted' FROM t0_template 28668WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28669CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 28670BEGIN 28671UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 28672f_charbig = 'updated by trigger' 28673 WHERE f_int1 = - old.f_int1; 28674END| 28675DELETE FROM t0_aux 28676WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 28677 28678# check trigger-8 success: 1 28679DROP TRIGGER trg_1; 28680UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28681f_int2 = CAST(f_char1 AS SIGNED INT), 28682f_charbig = 'just inserted' 28683 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 28684DELETE FROM t0_aux 28685WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28686DELETE FROM t1 28687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 28688CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 28689BEGIN 28690SET new.f_int1 = old.f_int1 + @max_row, 28691new.f_int2 = old.f_int2 - @max_row, 28692new.f_charbig = '####updated per update trigger####'; 28693END| 28694UPDATE t1 28695SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 28696f_charbig = '####updated per update statement itself####'; 28697 28698# check trigger-9 success: 1 28699DROP TRIGGER trg_2; 28700UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28701f_int2 = CAST(f_char1 AS SIGNED INT), 28702f_charbig = CONCAT('===',f_char1,'==='); 28703CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 28704BEGIN 28705SET new.f_int1 = new.f_int1 + @max_row, 28706new.f_int2 = new.f_int2 - @max_row, 28707new.f_charbig = '####updated per update trigger####'; 28708END| 28709UPDATE t1 28710SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 28711f_charbig = '####updated per update statement itself####'; 28712 28713# check trigger-10 success: 1 28714DROP TRIGGER trg_2; 28715UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28716f_int2 = CAST(f_char1 AS SIGNED INT), 28717f_charbig = CONCAT('===',f_char1,'==='); 28718CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 28719BEGIN 28720SET new.f_int1 = @my_max1 + @counter, 28721new.f_int2 = @my_min2 - @counter, 28722new.f_charbig = '####updated per insert trigger####'; 28723SET @counter = @counter + 1; 28724END| 28725SET @counter = 1; 28726SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 28727INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28728SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 28729CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 28730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 28731ORDER BY f_int1; 28732DROP TRIGGER trg_3; 28733 28734# check trigger-11 success: 1 28735DELETE FROM t1 28736WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 28737AND f_int2 <> CAST(f_char1 AS SIGNED INT) 28738AND f_charbig = '####updated per insert trigger####'; 28739CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 28740BEGIN 28741SET new.f_int1 = @my_max1 + @counter, 28742new.f_int2 = @my_min2 - @counter, 28743new.f_charbig = '####updated per insert trigger####'; 28744SET @counter = @counter + 1; 28745END| 28746SET @counter = 1; 28747SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 28748INSERT INTO t1 (f_char1, f_char2, f_charbig) 28749SELECT CAST(f_int1 AS CHAR), 28750CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 28751WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 28752ORDER BY f_int1; 28753DROP TRIGGER trg_3; 28754 28755# check trigger-12 success: 1 28756DELETE FROM t1 28757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 28758AND f_int2 <> CAST(f_char1 AS SIGNED INT) 28759AND f_charbig = '####updated per insert trigger####'; 28760ANALYZE TABLE t1; 28761Table Op Msg_type Msg_text 28762test.t1 analyze status OK 28763CHECK TABLE t1 EXTENDED; 28764Table Op Msg_type Msg_text 28765test.t1 check status OK 28766CHECKSUM TABLE t1 EXTENDED; 28767Table Checksum 28768test.t1 <some_value> 28769OPTIMIZE TABLE t1; 28770Table Op Msg_type Msg_text 28771test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 28772test.t1 optimize status OK 28773# check layout success: 1 28774REPAIR TABLE t1 EXTENDED; 28775Table Op Msg_type Msg_text 28776test.t1 repair status OK 28777# check layout success: 1 28778TRUNCATE t1; 28779 28780# check TRUNCATE success: 1 28781# check layout success: 1 28782# End usability test (inc/partition_check.inc) 28783DROP TABLE t1; 28784CREATE TABLE t1 ( 28785f_int1 INTEGER, 28786f_int2 INTEGER, 28787f_char1 CHAR(20), 28788f_char2 CHAR(20), 28789f_charbig VARCHAR(1000) 28790, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 28791) 28792PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 28793INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 28794SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 28795# Start usability test (inc/partition_check.inc) 28796create_command 28797SHOW CREATE TABLE t1; 28798Table Create Table 28799t1 CREATE TABLE `t1` ( 28800 `f_int1` int(11) DEFAULT NULL, 28801 `f_int2` int(11) DEFAULT NULL, 28802 `f_char1` char(20) DEFAULT NULL, 28803 `f_char2` char(20) DEFAULT NULL, 28804 `f_charbig` varchar(1000) DEFAULT NULL, 28805 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 28806 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 28807) ENGINE=InnoDB DEFAULT CHARSET=latin1 28808/*!50100 PARTITION BY KEY (f_int1,f_int2) 28809PARTITIONS 5 */ 28810 28811unified filelist 28812t1#P#p0.ibd 28813t1#P#p1.ibd 28814t1#P#p2.ibd 28815t1#P#p3.ibd 28816t1#P#p4.ibd 28817t1.frm 28818 28819# check prerequisites-1 success: 1 28820# check COUNT(*) success: 1 28821# check MIN/MAX(f_int1) success: 1 28822# check MIN/MAX(f_int2) success: 1 28823INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28824SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 28825CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 28826WHERE f_int1 IN (2,3); 28827ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 28828# check prerequisites-3 success: 1 28829# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 28830INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28831SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 28832CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 28833WHERE f_int1 IN (2,3); 28834DELETE FROM t1 WHERE f_charbig = 'delete me'; 28835INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28836SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 28837CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 28838WHERE f_int1 IN (2,3); 28839DELETE FROM t1 WHERE f_charbig = 'delete me'; 28840# check read via f_int1 success: 1 28841# check read via f_int2 success: 1 28842 28843# check multiple-1 success: 1 28844DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 28845 28846# check multiple-2 success: 1 28847INSERT INTO t1 SELECT * FROM t0_template 28848WHERE MOD(f_int1,3) = 0; 28849 28850# check multiple-3 success: 1 28851UPDATE t1 SET f_int1 = f_int1 + @max_row 28852WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 28853AND @max_row_div2 + @max_row_div4; 28854 28855# check multiple-4 success: 1 28856DELETE FROM t1 28857WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 28858AND @max_row_div2 + @max_row_div4 + @max_row; 28859 28860# check multiple-5 success: 1 28861SELECT COUNT(*) INTO @try_count FROM t0_template 28862WHERE MOD(f_int1,3) = 0 28863AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28864SELECT COUNT(*) INTO @clash_count 28865FROM t1 INNER JOIN t0_template USING(f_int1) 28866WHERE MOD(f_int1,3) = 0 28867AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28868SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 28869INSERT INTO t1 28870SET f_int1 = @cur_value , f_int2 = @cur_value, 28871f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 28872f_charbig = '#SINGLE#'; 28873 28874# check single-1 success: 1 28875SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 28876INSERT INTO t1 28877SET f_int1 = @cur_value , f_int2 = @cur_value, 28878f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 28879f_charbig = '#SINGLE#'; 28880 28881# check single-2 success: 1 28882SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 28883SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 28884UPDATE t1 SET f_int1 = @cur_value2 28885WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 28886 28887# check single-3 success: 1 28888SET @cur_value1= -1; 28889SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 28890UPDATE t1 SET f_int1 = @cur_value1 28891WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 28892 28893# check single-4 success: 1 28894SELECT MAX(f_int1) INTO @cur_value FROM t1; 28895DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 28896 28897# check single-5 success: 1 28898DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 28899 28900# check single-6 success: 1 28901INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 28902 28903# check single-7 success: 1 28904DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 28905DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 28906INSERT t1 SET f_int1 = 0 , f_int2 = 0, 28907f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 28908f_charbig = '#NULL#'; 28909INSERT INTO t1 28910SET f_int1 = NULL , f_int2 = -@max_row, 28911f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 28912f_charbig = '#NULL#'; 28913# check null success: 1 28914 28915# check null-1 success: 1 28916UPDATE t1 SET f_int1 = -@max_row 28917WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28918AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28919 28920# check null-2 success: 1 28921UPDATE t1 SET f_int1 = NULL 28922WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28923AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28924 28925# check null-3 success: 1 28926DELETE FROM t1 28927WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 28928AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 28929 28930# check null-4 success: 1 28931DELETE FROM t1 28932WHERE f_int1 = 0 AND f_int2 = 0 28933AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 28934AND f_charbig = '#NULL#'; 28935INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28936SELECT f_int1, f_int1, '', '', 'was inserted' 28937 FROM t0_template source_tab 28938WHERE MOD(f_int1,3) = 0 28939AND f_int1 BETWEEN @max_row_div2 AND @max_row 28940ON DUPLICATE KEY 28941UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 28942f_int2 = 2 * @max_row + source_tab.f_int1, 28943f_charbig = 'was updated'; 28944 28945# check unique-1-a success: 1 28946 28947# check unique-1-b success: 1 28948DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 28950f_int2 = CAST(f_char1 AS SIGNED INT), 28951f_charbig = CONCAT('===',f_char1,'===') 28952WHERE f_charbig = 'was updated'; 28953REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28954SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 28955 FROM t0_template source_tab 28956WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 28957 28958# check replace success: 1 28959DELETE FROM t1 28960WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 28961DELETE FROM t1 28962WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 28963f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 28964UPDATE t1 SET f_int2 = f_int1, 28965f_char1 = CAST(f_int1 AS CHAR), 28966f_char2 = CAST(f_int1 AS CHAR), 28967f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 28968WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 28969SET AUTOCOMMIT= 0; 28970INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28971SELECT f_int1, f_int1, '', '', 'was inserted' 28972FROM t0_template source_tab 28973WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 28974 28975# check transactions-1 success: 1 28976COMMIT WORK; 28977 28978# check transactions-2 success: 1 28979ROLLBACK WORK; 28980 28981# check transactions-3 success: 1 28982DELETE FROM t1 WHERE f_charbig = 'was inserted'; 28983COMMIT WORK; 28984ROLLBACK WORK; 28985 28986# check transactions-4 success: 1 28987INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 28988SELECT f_int1, f_int1, '', '', 'was inserted' 28989FROM t0_template source_tab 28990WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 28991 28992# check transactions-5 success: 1 28993ROLLBACK WORK; 28994 28995# check transactions-6 success: 1 28996# INFO: Storage engine used for t1 seems to be transactional. 28997COMMIT; 28998 28999# check transactions-7 success: 1 29000DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29001COMMIT WORK; 29002SET @@session.sql_mode = 'traditional'; 29003Warnings: 29004Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 29005SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 29006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29007SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 29008'', '', 'was inserted' FROM t0_template 29009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 29010ERROR 22012: Division by 0 29011COMMIT; 29012 29013# check transactions-8 success: 1 29014# INFO: Storage engine used for t1 seems to be able to revert 29015# changes made by the failing statement. 29016SET @@session.sql_mode = ''; 29017Warnings: 29018Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 29019SET AUTOCOMMIT= 1; 29020DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29021COMMIT WORK; 29022UPDATE t1 SET f_charbig = REPEAT('b', 1000); 29023 29024# check special-1 success: 1 29025UPDATE t1 SET f_charbig = ''; 29026 29027# check special-2 success: 1 29028UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 29029INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 29030SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 29031WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29032INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29033SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29034'just inserted' FROM t0_template 29035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29036CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 29037BEGIN 29038UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29039f_charbig = 'updated by trigger' 29040 WHERE f_int1 = new.f_int1; 29041END| 29042INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29043SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 29044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29045 29046# check trigger-1 success: 1 29047DROP TRIGGER trg_1; 29048UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29049f_int2 = CAST(f_char1 AS SIGNED INT), 29050f_charbig = 'just inserted' 29051 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29052DELETE FROM t0_aux 29053WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29054INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29055SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29056'just inserted' FROM t0_template 29057WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29058CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 29059BEGIN 29060UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29061f_charbig = 'updated by trigger' 29062 WHERE f_int1 = new.f_int1; 29063END| 29064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29065SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 29066WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29067 29068# check trigger-2 success: 1 29069DROP TRIGGER trg_1; 29070UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29071f_int2 = CAST(f_char1 AS SIGNED INT), 29072f_charbig = 'just inserted' 29073 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29074DELETE FROM t0_aux 29075WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29076INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29077SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29078'just inserted' FROM t0_template 29079WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29080CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 29081BEGIN 29082UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29083f_charbig = 'updated by trigger' 29084 WHERE f_int1 = new.f_int1; 29085END| 29086UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29087WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29088 29089# check trigger-3 success: 1 29090DROP TRIGGER trg_1; 29091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29092f_int2 = CAST(f_char1 AS SIGNED INT), 29093f_charbig = 'just inserted' 29094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29095DELETE FROM t0_aux 29096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29099'just inserted' FROM t0_template 29100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29101CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 29102BEGIN 29103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29104f_charbig = 'updated by trigger' 29105 WHERE f_int1 = - old.f_int1; 29106END| 29107UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29108WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29109 29110# check trigger-4 success: 1 29111DROP TRIGGER trg_1; 29112UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29113f_int2 = CAST(f_char1 AS SIGNED INT), 29114f_charbig = 'just inserted' 29115 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29116DELETE FROM t0_aux 29117WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29118INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29119SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29120'just inserted' FROM t0_template 29121WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29122CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 29123BEGIN 29124UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29125f_charbig = 'updated by trigger' 29126 WHERE f_int1 = new.f_int1; 29127END| 29128UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29129WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29130 29131# check trigger-5 success: 1 29132DROP TRIGGER trg_1; 29133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29134f_int2 = CAST(f_char1 AS SIGNED INT), 29135f_charbig = 'just inserted' 29136 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29137DELETE FROM t0_aux 29138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29141'just inserted' FROM t0_template 29142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29143CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 29144BEGIN 29145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29146f_charbig = 'updated by trigger' 29147 WHERE f_int1 = - old.f_int1; 29148END| 29149UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29150WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29151 29152# check trigger-6 success: 1 29153DROP TRIGGER trg_1; 29154UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29155f_int2 = CAST(f_char1 AS SIGNED INT), 29156f_charbig = 'just inserted' 29157 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29158DELETE FROM t0_aux 29159WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29160INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29161SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29162'just inserted' FROM t0_template 29163WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29164CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 29165BEGIN 29166UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29167f_charbig = 'updated by trigger' 29168 WHERE f_int1 = - old.f_int1; 29169END| 29170DELETE FROM t0_aux 29171WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29172 29173# check trigger-7 success: 1 29174DROP TRIGGER trg_1; 29175UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29176f_int2 = CAST(f_char1 AS SIGNED INT), 29177f_charbig = 'just inserted' 29178 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29179DELETE FROM t0_aux 29180WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29181INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29182SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29183'just inserted' FROM t0_template 29184WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29185CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 29186BEGIN 29187UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29188f_charbig = 'updated by trigger' 29189 WHERE f_int1 = - old.f_int1; 29190END| 29191DELETE FROM t0_aux 29192WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29193 29194# check trigger-8 success: 1 29195DROP TRIGGER trg_1; 29196UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29197f_int2 = CAST(f_char1 AS SIGNED INT), 29198f_charbig = 'just inserted' 29199 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29200DELETE FROM t0_aux 29201WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29202DELETE FROM t1 29203WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29204CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 29205BEGIN 29206SET new.f_int1 = old.f_int1 + @max_row, 29207new.f_int2 = old.f_int2 - @max_row, 29208new.f_charbig = '####updated per update trigger####'; 29209END| 29210UPDATE t1 29211SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 29212f_charbig = '####updated per update statement itself####'; 29213 29214# check trigger-9 success: 1 29215DROP TRIGGER trg_2; 29216UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29217f_int2 = CAST(f_char1 AS SIGNED INT), 29218f_charbig = CONCAT('===',f_char1,'==='); 29219CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 29220BEGIN 29221SET new.f_int1 = new.f_int1 + @max_row, 29222new.f_int2 = new.f_int2 - @max_row, 29223new.f_charbig = '####updated per update trigger####'; 29224END| 29225UPDATE t1 29226SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 29227f_charbig = '####updated per update statement itself####'; 29228 29229# check trigger-10 success: 1 29230DROP TRIGGER trg_2; 29231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29232f_int2 = CAST(f_char1 AS SIGNED INT), 29233f_charbig = CONCAT('===',f_char1,'==='); 29234CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 29235BEGIN 29236SET new.f_int1 = @my_max1 + @counter, 29237new.f_int2 = @my_min2 - @counter, 29238new.f_charbig = '####updated per insert trigger####'; 29239SET @counter = @counter + 1; 29240END| 29241SET @counter = 1; 29242SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 29243INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29244SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 29245CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 29246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 29247ORDER BY f_int1; 29248DROP TRIGGER trg_3; 29249 29250# check trigger-11 success: 1 29251DELETE FROM t1 29252WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 29253AND f_int2 <> CAST(f_char1 AS SIGNED INT) 29254AND f_charbig = '####updated per insert trigger####'; 29255CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 29256BEGIN 29257SET new.f_int1 = @my_max1 + @counter, 29258new.f_int2 = @my_min2 - @counter, 29259new.f_charbig = '####updated per insert trigger####'; 29260SET @counter = @counter + 1; 29261END| 29262SET @counter = 1; 29263SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 29264INSERT INTO t1 (f_char1, f_char2, f_charbig) 29265SELECT CAST(f_int1 AS CHAR), 29266CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 29267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 29268ORDER BY f_int1; 29269DROP TRIGGER trg_3; 29270 29271# check trigger-12 success: 1 29272DELETE FROM t1 29273WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 29274AND f_int2 <> CAST(f_char1 AS SIGNED INT) 29275AND f_charbig = '####updated per insert trigger####'; 29276ANALYZE TABLE t1; 29277Table Op Msg_type Msg_text 29278test.t1 analyze status OK 29279CHECK TABLE t1 EXTENDED; 29280Table Op Msg_type Msg_text 29281test.t1 check status OK 29282CHECKSUM TABLE t1 EXTENDED; 29283Table Checksum 29284test.t1 <some_value> 29285OPTIMIZE TABLE t1; 29286Table Op Msg_type Msg_text 29287test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 29288test.t1 optimize status OK 29289# check layout success: 1 29290REPAIR TABLE t1 EXTENDED; 29291Table Op Msg_type Msg_text 29292test.t1 repair status OK 29293# check layout success: 1 29294TRUNCATE t1; 29295 29296# check TRUNCATE success: 1 29297# check layout success: 1 29298# End usability test (inc/partition_check.inc) 29299DROP TABLE t1; 29300CREATE TABLE t1 ( 29301f_int1 INTEGER, 29302f_int2 INTEGER, 29303f_char1 CHAR(20), 29304f_char2 CHAR(20), 29305f_charbig VARCHAR(1000) 29306, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 29307) 29308PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 29309(PARTITION part_3 VALUES IN (-3), 29310PARTITION part_2 VALUES IN (-2), 29311PARTITION part_1 VALUES IN (-1), 29312PARTITION part_N VALUES IN (NULL), 29313PARTITION part0 VALUES IN (0), 29314PARTITION part1 VALUES IN (1), 29315PARTITION part2 VALUES IN (2), 29316PARTITION part3 VALUES IN (3)); 29317INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 29318SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 29319# Start usability test (inc/partition_check.inc) 29320create_command 29321SHOW CREATE TABLE t1; 29322Table Create Table 29323t1 CREATE TABLE `t1` ( 29324 `f_int1` int(11) DEFAULT NULL, 29325 `f_int2` int(11) DEFAULT NULL, 29326 `f_char1` char(20) DEFAULT NULL, 29327 `f_char2` char(20) DEFAULT NULL, 29328 `f_charbig` varchar(1000) DEFAULT NULL, 29329 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 29330 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 29331) ENGINE=InnoDB DEFAULT CHARSET=latin1 29332/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 29333(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, 29334 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, 29335 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, 29336 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, 29337 PARTITION part0 VALUES IN (0) ENGINE = InnoDB, 29338 PARTITION part1 VALUES IN (1) ENGINE = InnoDB, 29339 PARTITION part2 VALUES IN (2) ENGINE = InnoDB, 29340 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ 29341 29342unified filelist 29343t1#P#part0.ibd 29344t1#P#part1.ibd 29345t1#P#part2.ibd 29346t1#P#part3.ibd 29347t1#P#part_1.ibd 29348t1#P#part_2.ibd 29349t1#P#part_3.ibd 29350t1#P#part_N.ibd 29351t1.frm 29352 29353# check prerequisites-1 success: 1 29354# check COUNT(*) success: 1 29355# check MIN/MAX(f_int1) success: 1 29356# check MIN/MAX(f_int2) success: 1 29357INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29358SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 29359CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 29360WHERE f_int1 IN (2,3); 29361ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 29362# check prerequisites-3 success: 1 29363# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 29364INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29365SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 29366CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 29367WHERE f_int1 IN (2,3); 29368DELETE FROM t1 WHERE f_charbig = 'delete me'; 29369INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29370SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 29371CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 29372WHERE f_int1 IN (2,3); 29373DELETE FROM t1 WHERE f_charbig = 'delete me'; 29374# check read via f_int1 success: 1 29375# check read via f_int2 success: 1 29376 29377# check multiple-1 success: 1 29378DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 29379 29380# check multiple-2 success: 1 29381INSERT INTO t1 SELECT * FROM t0_template 29382WHERE MOD(f_int1,3) = 0; 29383 29384# check multiple-3 success: 1 29385UPDATE t1 SET f_int1 = f_int1 + @max_row 29386WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 29387AND @max_row_div2 + @max_row_div4; 29388 29389# check multiple-4 success: 1 29390DELETE FROM t1 29391WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 29392AND @max_row_div2 + @max_row_div4 + @max_row; 29393 29394# check multiple-5 success: 1 29395SELECT COUNT(*) INTO @try_count FROM t0_template 29396WHERE MOD(f_int1,3) = 0 29397AND f_int1 BETWEEN @max_row_div2 AND @max_row; 29398SELECT COUNT(*) INTO @clash_count 29399FROM t1 INNER JOIN t0_template USING(f_int1) 29400WHERE MOD(f_int1,3) = 0 29401AND f_int1 BETWEEN @max_row_div2 AND @max_row; 29402SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 29403INSERT INTO t1 29404SET f_int1 = @cur_value , f_int2 = @cur_value, 29405f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 29406f_charbig = '#SINGLE#'; 29407 29408# check single-1 success: 1 29409SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 29410INSERT INTO t1 29411SET f_int1 = @cur_value , f_int2 = @cur_value, 29412f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 29413f_charbig = '#SINGLE#'; 29414 29415# check single-2 success: 1 29416SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 29417SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 29418UPDATE t1 SET f_int1 = @cur_value2 29419WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 29420 29421# check single-3 success: 1 29422SET @cur_value1= -1; 29423SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 29424UPDATE t1 SET f_int1 = @cur_value1 29425WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 29426 29427# check single-4 success: 1 29428SELECT MAX(f_int1) INTO @cur_value FROM t1; 29429DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 29430 29431# check single-5 success: 1 29432DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 29433 29434# check single-6 success: 1 29435INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 29436 29437# check single-7 success: 1 29438DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 29439DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 29440INSERT t1 SET f_int1 = 0 , f_int2 = 0, 29441f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 29442f_charbig = '#NULL#'; 29443INSERT INTO t1 29444SET f_int1 = NULL , f_int2 = -@max_row, 29445f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 29446f_charbig = '#NULL#'; 29447# check null success: 1 29448 29449# check null-1 success: 1 29450UPDATE t1 SET f_int1 = -@max_row 29451WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29452AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29453 29454# check null-2 success: 1 29455UPDATE t1 SET f_int1 = NULL 29456WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29457AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29458 29459# check null-3 success: 1 29460DELETE FROM t1 29461WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29462AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29463 29464# check null-4 success: 1 29465DELETE FROM t1 29466WHERE f_int1 = 0 AND f_int2 = 0 29467AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 29468AND f_charbig = '#NULL#'; 29469INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29470SELECT f_int1, f_int1, '', '', 'was inserted' 29471 FROM t0_template source_tab 29472WHERE MOD(f_int1,3) = 0 29473AND f_int1 BETWEEN @max_row_div2 AND @max_row 29474ON DUPLICATE KEY 29475UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 29476f_int2 = 2 * @max_row + source_tab.f_int1, 29477f_charbig = 'was updated'; 29478 29479# check unique-1-a success: 1 29480 29481# check unique-1-b success: 1 29482DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29483UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29484f_int2 = CAST(f_char1 AS SIGNED INT), 29485f_charbig = CONCAT('===',f_char1,'===') 29486WHERE f_charbig = 'was updated'; 29487REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29488SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 29489 FROM t0_template source_tab 29490WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 29491 29492# check replace success: 1 29493DELETE FROM t1 29494WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 29495DELETE FROM t1 29496WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 29497f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 29498UPDATE t1 SET f_int2 = f_int1, 29499f_char1 = CAST(f_int1 AS CHAR), 29500f_char2 = CAST(f_int1 AS CHAR), 29501f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 29502WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 29503SET AUTOCOMMIT= 0; 29504INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29505SELECT f_int1, f_int1, '', '', 'was inserted' 29506FROM t0_template source_tab 29507WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 29508 29509# check transactions-1 success: 1 29510COMMIT WORK; 29511 29512# check transactions-2 success: 1 29513ROLLBACK WORK; 29514 29515# check transactions-3 success: 1 29516DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29517COMMIT WORK; 29518ROLLBACK WORK; 29519 29520# check transactions-4 success: 1 29521INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29522SELECT f_int1, f_int1, '', '', 'was inserted' 29523FROM t0_template source_tab 29524WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 29525 29526# check transactions-5 success: 1 29527ROLLBACK WORK; 29528 29529# check transactions-6 success: 1 29530# INFO: Storage engine used for t1 seems to be transactional. 29531COMMIT; 29532 29533# check transactions-7 success: 1 29534DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29535COMMIT WORK; 29536SET @@session.sql_mode = 'traditional'; 29537Warnings: 29538Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 29539SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 29540INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29541SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 29542'', '', 'was inserted' FROM t0_template 29543WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 29544ERROR 22012: Division by 0 29545COMMIT; 29546 29547# check transactions-8 success: 1 29548# INFO: Storage engine used for t1 seems to be able to revert 29549# changes made by the failing statement. 29550SET @@session.sql_mode = ''; 29551Warnings: 29552Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 29553SET AUTOCOMMIT= 1; 29554DELETE FROM t1 WHERE f_charbig = 'was inserted'; 29555COMMIT WORK; 29556UPDATE t1 SET f_charbig = REPEAT('b', 1000); 29557 29558# check special-1 success: 1 29559UPDATE t1 SET f_charbig = ''; 29560 29561# check special-2 success: 1 29562UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 29563INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 29564SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 29565WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29566INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29567SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29568'just inserted' FROM t0_template 29569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29570CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 29571BEGIN 29572UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29573f_charbig = 'updated by trigger' 29574 WHERE f_int1 = new.f_int1; 29575END| 29576INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29577SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 29578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29579 29580# check trigger-1 success: 1 29581DROP TRIGGER trg_1; 29582UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29583f_int2 = CAST(f_char1 AS SIGNED INT), 29584f_charbig = 'just inserted' 29585 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29586DELETE FROM t0_aux 29587WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29588INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29589SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29590'just inserted' FROM t0_template 29591WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29592CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 29593BEGIN 29594UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29595f_charbig = 'updated by trigger' 29596 WHERE f_int1 = new.f_int1; 29597END| 29598INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29599SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 29600WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29601 29602# check trigger-2 success: 1 29603DROP TRIGGER trg_1; 29604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29605f_int2 = CAST(f_char1 AS SIGNED INT), 29606f_charbig = 'just inserted' 29607 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29608DELETE FROM t0_aux 29609WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29610INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29611SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29612'just inserted' FROM t0_template 29613WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29614CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 29615BEGIN 29616UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29617f_charbig = 'updated by trigger' 29618 WHERE f_int1 = new.f_int1; 29619END| 29620UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29621WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29622 29623# check trigger-3 success: 1 29624DROP TRIGGER trg_1; 29625UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29626f_int2 = CAST(f_char1 AS SIGNED INT), 29627f_charbig = 'just inserted' 29628 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29629DELETE FROM t0_aux 29630WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29631INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29632SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29633'just inserted' FROM t0_template 29634WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29635CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 29636BEGIN 29637UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29638f_charbig = 'updated by trigger' 29639 WHERE f_int1 = - old.f_int1; 29640END| 29641UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29642WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29643 29644# check trigger-4 success: 1 29645DROP TRIGGER trg_1; 29646UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29647f_int2 = CAST(f_char1 AS SIGNED INT), 29648f_charbig = 'just inserted' 29649 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29650DELETE FROM t0_aux 29651WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29652INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29653SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29654'just inserted' FROM t0_template 29655WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29656CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 29657BEGIN 29658UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29659f_charbig = 'updated by trigger' 29660 WHERE f_int1 = new.f_int1; 29661END| 29662UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29663WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29664 29665# check trigger-5 success: 1 29666DROP TRIGGER trg_1; 29667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29668f_int2 = CAST(f_char1 AS SIGNED INT), 29669f_charbig = 'just inserted' 29670 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29671DELETE FROM t0_aux 29672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29675'just inserted' FROM t0_template 29676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29677CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 29678BEGIN 29679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29680f_charbig = 'updated by trigger' 29681 WHERE f_int1 = - old.f_int1; 29682END| 29683UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 29684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29685 29686# check trigger-6 success: 1 29687DROP TRIGGER trg_1; 29688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29689f_int2 = CAST(f_char1 AS SIGNED INT), 29690f_charbig = 'just inserted' 29691 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29692DELETE FROM t0_aux 29693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29696'just inserted' FROM t0_template 29697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29698CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 29699BEGIN 29700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29701f_charbig = 'updated by trigger' 29702 WHERE f_int1 = - old.f_int1; 29703END| 29704DELETE FROM t0_aux 29705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29706 29707# check trigger-7 success: 1 29708DROP TRIGGER trg_1; 29709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29710f_int2 = CAST(f_char1 AS SIGNED INT), 29711f_charbig = 'just inserted' 29712 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29713DELETE FROM t0_aux 29714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29715INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 29716SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 29717'just inserted' FROM t0_template 29718WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29719CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 29720BEGIN 29721UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 29722f_charbig = 'updated by trigger' 29723 WHERE f_int1 = - old.f_int1; 29724END| 29725DELETE FROM t0_aux 29726WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 29727 29728# check trigger-8 success: 1 29729DROP TRIGGER trg_1; 29730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29731f_int2 = CAST(f_char1 AS SIGNED INT), 29732f_charbig = 'just inserted' 29733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 29734DELETE FROM t0_aux 29735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29736DELETE FROM t1 29737WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 29738CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 29739BEGIN 29740SET new.f_int1 = old.f_int1 + @max_row, 29741new.f_int2 = old.f_int2 - @max_row, 29742new.f_charbig = '####updated per update trigger####'; 29743END| 29744UPDATE t1 29745SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 29746f_charbig = '####updated per update statement itself####'; 29747 29748# check trigger-9 success: 1 29749DROP TRIGGER trg_2; 29750UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29751f_int2 = CAST(f_char1 AS SIGNED INT), 29752f_charbig = CONCAT('===',f_char1,'==='); 29753CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 29754BEGIN 29755SET new.f_int1 = new.f_int1 + @max_row, 29756new.f_int2 = new.f_int2 - @max_row, 29757new.f_charbig = '####updated per update trigger####'; 29758END| 29759UPDATE t1 29760SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 29761f_charbig = '####updated per update statement itself####'; 29762 29763# check trigger-10 success: 1 29764DROP TRIGGER trg_2; 29765UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 29766f_int2 = CAST(f_char1 AS SIGNED INT), 29767f_charbig = CONCAT('===',f_char1,'==='); 29768CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 29769BEGIN 29770SET new.f_int1 = @my_max1 + @counter, 29771new.f_int2 = @my_min2 - @counter, 29772new.f_charbig = '####updated per insert trigger####'; 29773SET @counter = @counter + 1; 29774END| 29775SET @counter = 1; 29776SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 29777INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29778SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 29779CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 29780WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 29781ORDER BY f_int1; 29782DROP TRIGGER trg_3; 29783 29784# check trigger-11 success: 1 29785DELETE FROM t1 29786WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 29787AND f_int2 <> CAST(f_char1 AS SIGNED INT) 29788AND f_charbig = '####updated per insert trigger####'; 29789CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 29790BEGIN 29791SET new.f_int1 = @my_max1 + @counter, 29792new.f_int2 = @my_min2 - @counter, 29793new.f_charbig = '####updated per insert trigger####'; 29794SET @counter = @counter + 1; 29795END| 29796SET @counter = 1; 29797SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 29798INSERT INTO t1 (f_char1, f_char2, f_charbig) 29799SELECT CAST(f_int1 AS CHAR), 29800CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 29801WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 29802ORDER BY f_int1; 29803DROP TRIGGER trg_3; 29804 29805# check trigger-12 success: 1 29806DELETE FROM t1 29807WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 29808AND f_int2 <> CAST(f_char1 AS SIGNED INT) 29809AND f_charbig = '####updated per insert trigger####'; 29810ANALYZE TABLE t1; 29811Table Op Msg_type Msg_text 29812test.t1 analyze status OK 29813CHECK TABLE t1 EXTENDED; 29814Table Op Msg_type Msg_text 29815test.t1 check status OK 29816CHECKSUM TABLE t1 EXTENDED; 29817Table Checksum 29818test.t1 <some_value> 29819OPTIMIZE TABLE t1; 29820Table Op Msg_type Msg_text 29821test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 29822test.t1 optimize status OK 29823# check layout success: 1 29824REPAIR TABLE t1 EXTENDED; 29825Table Op Msg_type Msg_text 29826test.t1 repair status OK 29827# check layout success: 1 29828TRUNCATE t1; 29829 29830# check TRUNCATE success: 1 29831# check layout success: 1 29832# End usability test (inc/partition_check.inc) 29833DROP TABLE t1; 29834CREATE TABLE t1 ( 29835f_int1 INTEGER, 29836f_int2 INTEGER, 29837f_char1 CHAR(20), 29838f_char2 CHAR(20), 29839f_charbig VARCHAR(1000) 29840, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 29841) 29842PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 29843(PARTITION parta VALUES LESS THAN (0), 29844PARTITION partb VALUES LESS THAN (5), 29845PARTITION partc VALUES LESS THAN (10), 29846PARTITION partd VALUES LESS THAN (10 + 5), 29847PARTITION parte VALUES LESS THAN (20), 29848PARTITION partf VALUES LESS THAN (2147483646)); 29849INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 29850SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 29851# Start usability test (inc/partition_check.inc) 29852create_command 29853SHOW CREATE TABLE t1; 29854Table Create Table 29855t1 CREATE TABLE `t1` ( 29856 `f_int1` int(11) DEFAULT NULL, 29857 `f_int2` int(11) DEFAULT NULL, 29858 `f_char1` char(20) DEFAULT NULL, 29859 `f_char2` char(20) DEFAULT NULL, 29860 `f_charbig` varchar(1000) DEFAULT NULL, 29861 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 29862 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 29863) ENGINE=InnoDB DEFAULT CHARSET=latin1 29864/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 29865(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 29866 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 29867 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 29868 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, 29869 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, 29870 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 29871 29872unified filelist 29873t1#P#parta.ibd 29874t1#P#partb.ibd 29875t1#P#partc.ibd 29876t1#P#partd.ibd 29877t1#P#parte.ibd 29878t1#P#partf.ibd 29879t1.frm 29880 29881# check prerequisites-1 success: 1 29882# check COUNT(*) success: 1 29883# check MIN/MAX(f_int1) success: 1 29884# check MIN/MAX(f_int2) success: 1 29885INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29886SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 29887CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 29888WHERE f_int1 IN (2,3); 29889ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 29890# check prerequisites-3 success: 1 29891# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 29892INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29893SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 29894CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 29895WHERE f_int1 IN (2,3); 29896DELETE FROM t1 WHERE f_charbig = 'delete me'; 29897INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29898SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 29899CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 29900WHERE f_int1 IN (2,3); 29901DELETE FROM t1 WHERE f_charbig = 'delete me'; 29902# check read via f_int1 success: 1 29903# check read via f_int2 success: 1 29904 29905# check multiple-1 success: 1 29906DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 29907 29908# check multiple-2 success: 1 29909INSERT INTO t1 SELECT * FROM t0_template 29910WHERE MOD(f_int1,3) = 0; 29911 29912# check multiple-3 success: 1 29913UPDATE t1 SET f_int1 = f_int1 + @max_row 29914WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 29915AND @max_row_div2 + @max_row_div4; 29916 29917# check multiple-4 success: 1 29918DELETE FROM t1 29919WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 29920AND @max_row_div2 + @max_row_div4 + @max_row; 29921 29922# check multiple-5 success: 1 29923SELECT COUNT(*) INTO @try_count FROM t0_template 29924WHERE MOD(f_int1,3) = 0 29925AND f_int1 BETWEEN @max_row_div2 AND @max_row; 29926SELECT COUNT(*) INTO @clash_count 29927FROM t1 INNER JOIN t0_template USING(f_int1) 29928WHERE MOD(f_int1,3) = 0 29929AND f_int1 BETWEEN @max_row_div2 AND @max_row; 29930SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 29931INSERT INTO t1 29932SET f_int1 = @cur_value , f_int2 = @cur_value, 29933f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 29934f_charbig = '#SINGLE#'; 29935 29936# check single-1 success: 1 29937SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 29938INSERT INTO t1 29939SET f_int1 = @cur_value , f_int2 = @cur_value, 29940f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 29941f_charbig = '#SINGLE#'; 29942 29943# check single-2 success: 1 29944SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 29945SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 29946UPDATE t1 SET f_int1 = @cur_value2 29947WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 29948 29949# check single-3 success: 1 29950SET @cur_value1= -1; 29951SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 29952UPDATE t1 SET f_int1 = @cur_value1 29953WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 29954 29955# check single-4 success: 1 29956SELECT MAX(f_int1) INTO @cur_value FROM t1; 29957DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 29958 29959# check single-5 success: 1 29960DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 29961 29962# check single-6 success: 1 29963INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 29964ERROR HY000: Table has no partition for value 2147483647 29965DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 29966INSERT t1 SET f_int1 = 0 , f_int2 = 0, 29967f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 29968f_charbig = '#NULL#'; 29969INSERT INTO t1 29970SET f_int1 = NULL , f_int2 = -@max_row, 29971f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 29972f_charbig = '#NULL#'; 29973# check null success: 1 29974 29975# check null-1 success: 1 29976UPDATE t1 SET f_int1 = -@max_row 29977WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29978AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29979 29980# check null-2 success: 1 29981UPDATE t1 SET f_int1 = NULL 29982WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29983AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29984 29985# check null-3 success: 1 29986DELETE FROM t1 29987WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 29988AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 29989 29990# check null-4 success: 1 29991DELETE FROM t1 29992WHERE f_int1 = 0 AND f_int2 = 0 29993AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 29994AND f_charbig = '#NULL#'; 29995INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 29996SELECT f_int1, f_int1, '', '', 'was inserted' 29997 FROM t0_template source_tab 29998WHERE MOD(f_int1,3) = 0 29999AND f_int1 BETWEEN @max_row_div2 AND @max_row 30000ON DUPLICATE KEY 30001UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 30002f_int2 = 2 * @max_row + source_tab.f_int1, 30003f_charbig = 'was updated'; 30004 30005# check unique-1-a success: 1 30006 30007# check unique-1-b success: 1 30008DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30010f_int2 = CAST(f_char1 AS SIGNED INT), 30011f_charbig = CONCAT('===',f_char1,'===') 30012WHERE f_charbig = 'was updated'; 30013REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30014SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 30015 FROM t0_template source_tab 30016WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30017 30018# check replace success: 1 30019DELETE FROM t1 30020WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 30021DELETE FROM t1 30022WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 30023f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 30024UPDATE t1 SET f_int2 = f_int1, 30025f_char1 = CAST(f_int1 AS CHAR), 30026f_char2 = CAST(f_int1 AS CHAR), 30027f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 30028WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 30029SET AUTOCOMMIT= 0; 30030INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30031SELECT f_int1, f_int1, '', '', 'was inserted' 30032FROM t0_template source_tab 30033WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30034 30035# check transactions-1 success: 1 30036COMMIT WORK; 30037 30038# check transactions-2 success: 1 30039ROLLBACK WORK; 30040 30041# check transactions-3 success: 1 30042DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30043COMMIT WORK; 30044ROLLBACK WORK; 30045 30046# check transactions-4 success: 1 30047INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30048SELECT f_int1, f_int1, '', '', 'was inserted' 30049FROM t0_template source_tab 30050WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30051 30052# check transactions-5 success: 1 30053ROLLBACK WORK; 30054 30055# check transactions-6 success: 1 30056# INFO: Storage engine used for t1 seems to be transactional. 30057COMMIT; 30058 30059# check transactions-7 success: 1 30060DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30061COMMIT WORK; 30062SET @@session.sql_mode = 'traditional'; 30063Warnings: 30064Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 30065SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 30066INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30067SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 30068'', '', 'was inserted' FROM t0_template 30069WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30070ERROR 22012: Division by 0 30071COMMIT; 30072 30073# check transactions-8 success: 1 30074# INFO: Storage engine used for t1 seems to be able to revert 30075# changes made by the failing statement. 30076SET @@session.sql_mode = ''; 30077Warnings: 30078Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 30079SET AUTOCOMMIT= 1; 30080DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30081COMMIT WORK; 30082UPDATE t1 SET f_charbig = REPEAT('b', 1000); 30083 30084# check special-1 success: 1 30085UPDATE t1 SET f_charbig = ''; 30086 30087# check special-2 success: 1 30088UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 30089INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 30090SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 30091WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30093SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30094'just inserted' FROM t0_template 30095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30096CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 30097BEGIN 30098UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30099f_charbig = 'updated by trigger' 30100 WHERE f_int1 = new.f_int1; 30101END| 30102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30103SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 30104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30105 30106# check trigger-1 success: 1 30107DROP TRIGGER trg_1; 30108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30109f_int2 = CAST(f_char1 AS SIGNED INT), 30110f_charbig = 'just inserted' 30111 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30112DELETE FROM t0_aux 30113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30115SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30116'just inserted' FROM t0_template 30117WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30118CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 30119BEGIN 30120UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30121f_charbig = 'updated by trigger' 30122 WHERE f_int1 = new.f_int1; 30123END| 30124INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30125SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 30126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30127 30128# check trigger-2 success: 1 30129DROP TRIGGER trg_1; 30130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30131f_int2 = CAST(f_char1 AS SIGNED INT), 30132f_charbig = 'just inserted' 30133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30134DELETE FROM t0_aux 30135WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30136INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30137SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30138'just inserted' FROM t0_template 30139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30140CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 30141BEGIN 30142UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30143f_charbig = 'updated by trigger' 30144 WHERE f_int1 = new.f_int1; 30145END| 30146UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30147WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30148 30149# check trigger-3 success: 1 30150DROP TRIGGER trg_1; 30151UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30152f_int2 = CAST(f_char1 AS SIGNED INT), 30153f_charbig = 'just inserted' 30154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30155DELETE FROM t0_aux 30156WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30157INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30158SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30159'just inserted' FROM t0_template 30160WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30161CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 30162BEGIN 30163UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30164f_charbig = 'updated by trigger' 30165 WHERE f_int1 = - old.f_int1; 30166END| 30167UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30168WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30169 30170# check trigger-4 success: 1 30171DROP TRIGGER trg_1; 30172UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30173f_int2 = CAST(f_char1 AS SIGNED INT), 30174f_charbig = 'just inserted' 30175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30176DELETE FROM t0_aux 30177WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30178INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30179SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30180'just inserted' FROM t0_template 30181WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30182CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 30183BEGIN 30184UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30185f_charbig = 'updated by trigger' 30186 WHERE f_int1 = new.f_int1; 30187END| 30188UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30189WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30190 30191# check trigger-5 success: 1 30192DROP TRIGGER trg_1; 30193UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30194f_int2 = CAST(f_char1 AS SIGNED INT), 30195f_charbig = 'just inserted' 30196 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30197DELETE FROM t0_aux 30198WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30199INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30200SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30201'just inserted' FROM t0_template 30202WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30203CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 30204BEGIN 30205UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30206f_charbig = 'updated by trigger' 30207 WHERE f_int1 = - old.f_int1; 30208END| 30209UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30210WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30211 30212# check trigger-6 success: 1 30213DROP TRIGGER trg_1; 30214UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30215f_int2 = CAST(f_char1 AS SIGNED INT), 30216f_charbig = 'just inserted' 30217 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30218DELETE FROM t0_aux 30219WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30220INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30221SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30222'just inserted' FROM t0_template 30223WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30224CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 30225BEGIN 30226UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30227f_charbig = 'updated by trigger' 30228 WHERE f_int1 = - old.f_int1; 30229END| 30230DELETE FROM t0_aux 30231WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30232 30233# check trigger-7 success: 1 30234DROP TRIGGER trg_1; 30235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30236f_int2 = CAST(f_char1 AS SIGNED INT), 30237f_charbig = 'just inserted' 30238 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30239DELETE FROM t0_aux 30240WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30241INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30242SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30243'just inserted' FROM t0_template 30244WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30245CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 30246BEGIN 30247UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30248f_charbig = 'updated by trigger' 30249 WHERE f_int1 = - old.f_int1; 30250END| 30251DELETE FROM t0_aux 30252WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30253 30254# check trigger-8 success: 1 30255DROP TRIGGER trg_1; 30256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30257f_int2 = CAST(f_char1 AS SIGNED INT), 30258f_charbig = 'just inserted' 30259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30260DELETE FROM t0_aux 30261WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30262DELETE FROM t1 30263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30264CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 30265BEGIN 30266SET new.f_int1 = old.f_int1 + @max_row, 30267new.f_int2 = old.f_int2 - @max_row, 30268new.f_charbig = '####updated per update trigger####'; 30269END| 30270UPDATE t1 30271SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 30272f_charbig = '####updated per update statement itself####'; 30273 30274# check trigger-9 success: 1 30275DROP TRIGGER trg_2; 30276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30277f_int2 = CAST(f_char1 AS SIGNED INT), 30278f_charbig = CONCAT('===',f_char1,'==='); 30279CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 30280BEGIN 30281SET new.f_int1 = new.f_int1 + @max_row, 30282new.f_int2 = new.f_int2 - @max_row, 30283new.f_charbig = '####updated per update trigger####'; 30284END| 30285UPDATE t1 30286SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 30287f_charbig = '####updated per update statement itself####'; 30288 30289# check trigger-10 success: 1 30290DROP TRIGGER trg_2; 30291UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30292f_int2 = CAST(f_char1 AS SIGNED INT), 30293f_charbig = CONCAT('===',f_char1,'==='); 30294CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 30295BEGIN 30296SET new.f_int1 = @my_max1 + @counter, 30297new.f_int2 = @my_min2 - @counter, 30298new.f_charbig = '####updated per insert trigger####'; 30299SET @counter = @counter + 1; 30300END| 30301SET @counter = 1; 30302SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 30303INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30304SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 30305CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 30306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 30307ORDER BY f_int1; 30308DROP TRIGGER trg_3; 30309 30310# check trigger-11 success: 1 30311DELETE FROM t1 30312WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 30313AND f_int2 <> CAST(f_char1 AS SIGNED INT) 30314AND f_charbig = '####updated per insert trigger####'; 30315CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 30316BEGIN 30317SET new.f_int1 = @my_max1 + @counter, 30318new.f_int2 = @my_min2 - @counter, 30319new.f_charbig = '####updated per insert trigger####'; 30320SET @counter = @counter + 1; 30321END| 30322SET @counter = 1; 30323SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 30324INSERT INTO t1 (f_char1, f_char2, f_charbig) 30325SELECT CAST(f_int1 AS CHAR), 30326CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 30327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 30328ORDER BY f_int1; 30329DROP TRIGGER trg_3; 30330 30331# check trigger-12 success: 1 30332DELETE FROM t1 30333WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 30334AND f_int2 <> CAST(f_char1 AS SIGNED INT) 30335AND f_charbig = '####updated per insert trigger####'; 30336ANALYZE TABLE t1; 30337Table Op Msg_type Msg_text 30338test.t1 analyze status OK 30339CHECK TABLE t1 EXTENDED; 30340Table Op Msg_type Msg_text 30341test.t1 check status OK 30342CHECKSUM TABLE t1 EXTENDED; 30343Table Checksum 30344test.t1 <some_value> 30345OPTIMIZE TABLE t1; 30346Table Op Msg_type Msg_text 30347test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 30348test.t1 optimize status OK 30349# check layout success: 1 30350REPAIR TABLE t1 EXTENDED; 30351Table Op Msg_type Msg_text 30352test.t1 repair status OK 30353# check layout success: 1 30354TRUNCATE t1; 30355 30356# check TRUNCATE success: 1 30357# check layout success: 1 30358# End usability test (inc/partition_check.inc) 30359DROP TABLE t1; 30360CREATE TABLE t1 ( 30361f_int1 INTEGER, 30362f_int2 INTEGER, 30363f_char1 CHAR(20), 30364f_char2 CHAR(20), 30365f_charbig VARCHAR(1000) 30366, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 30367) 30368PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 30369(PARTITION parta VALUES LESS THAN (0), 30370PARTITION partb VALUES LESS THAN (5), 30371PARTITION partc VALUES LESS THAN (10), 30372PARTITION partd VALUES LESS THAN (2147483646)); 30373INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 30374SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 30375# Start usability test (inc/partition_check.inc) 30376create_command 30377SHOW CREATE TABLE t1; 30378Table Create Table 30379t1 CREATE TABLE `t1` ( 30380 `f_int1` int(11) DEFAULT NULL, 30381 `f_int2` int(11) DEFAULT NULL, 30382 `f_char1` char(20) DEFAULT NULL, 30383 `f_char2` char(20) DEFAULT NULL, 30384 `f_charbig` varchar(1000) DEFAULT NULL, 30385 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 30386 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 30387) ENGINE=InnoDB DEFAULT CHARSET=latin1 30388/*!50100 PARTITION BY RANGE (f_int1) 30389SUBPARTITION BY HASH (f_int2) 30390SUBPARTITIONS 2 30391(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, 30392 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, 30393 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, 30394 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ 30395 30396unified filelist 30397t1#P#parta#SP#partasp0.ibd 30398t1#P#parta#SP#partasp1.ibd 30399t1#P#partb#SP#partbsp0.ibd 30400t1#P#partb#SP#partbsp1.ibd 30401t1#P#partc#SP#partcsp0.ibd 30402t1#P#partc#SP#partcsp1.ibd 30403t1#P#partd#SP#partdsp0.ibd 30404t1#P#partd#SP#partdsp1.ibd 30405t1.frm 30406 30407# check prerequisites-1 success: 1 30408# check COUNT(*) success: 1 30409# check MIN/MAX(f_int1) success: 1 30410# check MIN/MAX(f_int2) success: 1 30411INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30412SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 30413CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 30414WHERE f_int1 IN (2,3); 30415ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 30416# check prerequisites-3 success: 1 30417# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 30418INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30419SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 30420CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 30421WHERE f_int1 IN (2,3); 30422DELETE FROM t1 WHERE f_charbig = 'delete me'; 30423INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30424SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 30425CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 30426WHERE f_int1 IN (2,3); 30427DELETE FROM t1 WHERE f_charbig = 'delete me'; 30428# check read via f_int1 success: 1 30429# check read via f_int2 success: 1 30430 30431# check multiple-1 success: 1 30432DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 30433 30434# check multiple-2 success: 1 30435INSERT INTO t1 SELECT * FROM t0_template 30436WHERE MOD(f_int1,3) = 0; 30437 30438# check multiple-3 success: 1 30439UPDATE t1 SET f_int1 = f_int1 + @max_row 30440WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 30441AND @max_row_div2 + @max_row_div4; 30442 30443# check multiple-4 success: 1 30444DELETE FROM t1 30445WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 30446AND @max_row_div2 + @max_row_div4 + @max_row; 30447 30448# check multiple-5 success: 1 30449SELECT COUNT(*) INTO @try_count FROM t0_template 30450WHERE MOD(f_int1,3) = 0 30451AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30452SELECT COUNT(*) INTO @clash_count 30453FROM t1 INNER JOIN t0_template USING(f_int1) 30454WHERE MOD(f_int1,3) = 0 30455AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30456SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 30457INSERT INTO t1 30458SET f_int1 = @cur_value , f_int2 = @cur_value, 30459f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 30460f_charbig = '#SINGLE#'; 30461 30462# check single-1 success: 1 30463SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 30464INSERT INTO t1 30465SET f_int1 = @cur_value , f_int2 = @cur_value, 30466f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 30467f_charbig = '#SINGLE#'; 30468 30469# check single-2 success: 1 30470SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 30471SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 30472UPDATE t1 SET f_int1 = @cur_value2 30473WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 30474 30475# check single-3 success: 1 30476SET @cur_value1= -1; 30477SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 30478UPDATE t1 SET f_int1 = @cur_value1 30479WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 30480 30481# check single-4 success: 1 30482SELECT MAX(f_int1) INTO @cur_value FROM t1; 30483DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 30484 30485# check single-5 success: 1 30486DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 30487 30488# check single-6 success: 1 30489INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 30490ERROR HY000: Table has no partition for value 2147483647 30491DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 30492INSERT t1 SET f_int1 = 0 , f_int2 = 0, 30493f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 30494f_charbig = '#NULL#'; 30495INSERT INTO t1 30496SET f_int1 = NULL , f_int2 = -@max_row, 30497f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 30498f_charbig = '#NULL#'; 30499# check null success: 1 30500 30501# check null-1 success: 1 30502UPDATE t1 SET f_int1 = -@max_row 30503WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 30504AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 30505 30506# check null-2 success: 1 30507UPDATE t1 SET f_int1 = NULL 30508WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 30509AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 30510 30511# check null-3 success: 1 30512DELETE FROM t1 30513WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 30514AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 30515 30516# check null-4 success: 1 30517DELETE FROM t1 30518WHERE f_int1 = 0 AND f_int2 = 0 30519AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 30520AND f_charbig = '#NULL#'; 30521INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30522SELECT f_int1, f_int1, '', '', 'was inserted' 30523 FROM t0_template source_tab 30524WHERE MOD(f_int1,3) = 0 30525AND f_int1 BETWEEN @max_row_div2 AND @max_row 30526ON DUPLICATE KEY 30527UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 30528f_int2 = 2 * @max_row + source_tab.f_int1, 30529f_charbig = 'was updated'; 30530 30531# check unique-1-a success: 1 30532 30533# check unique-1-b success: 1 30534DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30535UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30536f_int2 = CAST(f_char1 AS SIGNED INT), 30537f_charbig = CONCAT('===',f_char1,'===') 30538WHERE f_charbig = 'was updated'; 30539REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30540SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 30541 FROM t0_template source_tab 30542WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30543 30544# check replace success: 1 30545DELETE FROM t1 30546WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 30547DELETE FROM t1 30548WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 30549f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 30550UPDATE t1 SET f_int2 = f_int1, 30551f_char1 = CAST(f_int1 AS CHAR), 30552f_char2 = CAST(f_int1 AS CHAR), 30553f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 30554WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 30555SET AUTOCOMMIT= 0; 30556INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30557SELECT f_int1, f_int1, '', '', 'was inserted' 30558FROM t0_template source_tab 30559WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30560 30561# check transactions-1 success: 1 30562COMMIT WORK; 30563 30564# check transactions-2 success: 1 30565ROLLBACK WORK; 30566 30567# check transactions-3 success: 1 30568DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30569COMMIT WORK; 30570ROLLBACK WORK; 30571 30572# check transactions-4 success: 1 30573INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30574SELECT f_int1, f_int1, '', '', 'was inserted' 30575FROM t0_template source_tab 30576WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30577 30578# check transactions-5 success: 1 30579ROLLBACK WORK; 30580 30581# check transactions-6 success: 1 30582# INFO: Storage engine used for t1 seems to be transactional. 30583COMMIT; 30584 30585# check transactions-7 success: 1 30586DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30587COMMIT WORK; 30588SET @@session.sql_mode = 'traditional'; 30589Warnings: 30590Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 30591SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 30592INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30593SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 30594'', '', 'was inserted' FROM t0_template 30595WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 30596ERROR 22012: Division by 0 30597COMMIT; 30598 30599# check transactions-8 success: 1 30600# INFO: Storage engine used for t1 seems to be able to revert 30601# changes made by the failing statement. 30602SET @@session.sql_mode = ''; 30603Warnings: 30604Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 30605SET AUTOCOMMIT= 1; 30606DELETE FROM t1 WHERE f_charbig = 'was inserted'; 30607COMMIT WORK; 30608UPDATE t1 SET f_charbig = REPEAT('b', 1000); 30609 30610# check special-1 success: 1 30611UPDATE t1 SET f_charbig = ''; 30612 30613# check special-2 success: 1 30614UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 30615INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 30616SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 30617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30618INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30619SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30620'just inserted' FROM t0_template 30621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30622CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 30623BEGIN 30624UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30625f_charbig = 'updated by trigger' 30626 WHERE f_int1 = new.f_int1; 30627END| 30628INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30629SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 30630WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30631 30632# check trigger-1 success: 1 30633DROP TRIGGER trg_1; 30634UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30635f_int2 = CAST(f_char1 AS SIGNED INT), 30636f_charbig = 'just inserted' 30637 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30638DELETE FROM t0_aux 30639WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30640INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30641SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30642'just inserted' FROM t0_template 30643WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30644CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 30645BEGIN 30646UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30647f_charbig = 'updated by trigger' 30648 WHERE f_int1 = new.f_int1; 30649END| 30650INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30651SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 30652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30653 30654# check trigger-2 success: 1 30655DROP TRIGGER trg_1; 30656UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30657f_int2 = CAST(f_char1 AS SIGNED INT), 30658f_charbig = 'just inserted' 30659 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30660DELETE FROM t0_aux 30661WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30662INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30663SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30664'just inserted' FROM t0_template 30665WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30666CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 30667BEGIN 30668UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30669f_charbig = 'updated by trigger' 30670 WHERE f_int1 = new.f_int1; 30671END| 30672UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30673WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30674 30675# check trigger-3 success: 1 30676DROP TRIGGER trg_1; 30677UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30678f_int2 = CAST(f_char1 AS SIGNED INT), 30679f_charbig = 'just inserted' 30680 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30681DELETE FROM t0_aux 30682WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30683INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30684SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30685'just inserted' FROM t0_template 30686WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30687CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 30688BEGIN 30689UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30690f_charbig = 'updated by trigger' 30691 WHERE f_int1 = - old.f_int1; 30692END| 30693UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30694WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30695 30696# check trigger-4 success: 1 30697DROP TRIGGER trg_1; 30698UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30699f_int2 = CAST(f_char1 AS SIGNED INT), 30700f_charbig = 'just inserted' 30701 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30702DELETE FROM t0_aux 30703WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30704INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30705SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30706'just inserted' FROM t0_template 30707WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30708CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 30709BEGIN 30710UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30711f_charbig = 'updated by trigger' 30712 WHERE f_int1 = new.f_int1; 30713END| 30714UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30715WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30716 30717# check trigger-5 success: 1 30718DROP TRIGGER trg_1; 30719UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30720f_int2 = CAST(f_char1 AS SIGNED INT), 30721f_charbig = 'just inserted' 30722 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30723DELETE FROM t0_aux 30724WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30725INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30726SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30727'just inserted' FROM t0_template 30728WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30729CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 30730BEGIN 30731UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30732f_charbig = 'updated by trigger' 30733 WHERE f_int1 = - old.f_int1; 30734END| 30735UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 30736WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30737 30738# check trigger-6 success: 1 30739DROP TRIGGER trg_1; 30740UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30741f_int2 = CAST(f_char1 AS SIGNED INT), 30742f_charbig = 'just inserted' 30743 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30744DELETE FROM t0_aux 30745WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30746INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30747SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30748'just inserted' FROM t0_template 30749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30750CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 30751BEGIN 30752UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30753f_charbig = 'updated by trigger' 30754 WHERE f_int1 = - old.f_int1; 30755END| 30756DELETE FROM t0_aux 30757WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30758 30759# check trigger-7 success: 1 30760DROP TRIGGER trg_1; 30761UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30762f_int2 = CAST(f_char1 AS SIGNED INT), 30763f_charbig = 'just inserted' 30764 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30765DELETE FROM t0_aux 30766WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30767INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 30768SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 30769'just inserted' FROM t0_template 30770WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30771CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 30772BEGIN 30773UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 30774f_charbig = 'updated by trigger' 30775 WHERE f_int1 = - old.f_int1; 30776END| 30777DELETE FROM t0_aux 30778WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 30779 30780# check trigger-8 success: 1 30781DROP TRIGGER trg_1; 30782UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30783f_int2 = CAST(f_char1 AS SIGNED INT), 30784f_charbig = 'just inserted' 30785 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 30786DELETE FROM t0_aux 30787WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30788DELETE FROM t1 30789WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 30790CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 30791BEGIN 30792SET new.f_int1 = old.f_int1 + @max_row, 30793new.f_int2 = old.f_int2 - @max_row, 30794new.f_charbig = '####updated per update trigger####'; 30795END| 30796UPDATE t1 30797SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 30798f_charbig = '####updated per update statement itself####'; 30799 30800# check trigger-9 success: 1 30801DROP TRIGGER trg_2; 30802UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30803f_int2 = CAST(f_char1 AS SIGNED INT), 30804f_charbig = CONCAT('===',f_char1,'==='); 30805CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 30806BEGIN 30807SET new.f_int1 = new.f_int1 + @max_row, 30808new.f_int2 = new.f_int2 - @max_row, 30809new.f_charbig = '####updated per update trigger####'; 30810END| 30811UPDATE t1 30812SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 30813f_charbig = '####updated per update statement itself####'; 30814 30815# check trigger-10 success: 1 30816DROP TRIGGER trg_2; 30817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 30818f_int2 = CAST(f_char1 AS SIGNED INT), 30819f_charbig = CONCAT('===',f_char1,'==='); 30820CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 30821BEGIN 30822SET new.f_int1 = @my_max1 + @counter, 30823new.f_int2 = @my_min2 - @counter, 30824new.f_charbig = '####updated per insert trigger####'; 30825SET @counter = @counter + 1; 30826END| 30827SET @counter = 1; 30828SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 30829INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30830SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 30831CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 30832WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 30833ORDER BY f_int1; 30834DROP TRIGGER trg_3; 30835 30836# check trigger-11 success: 1 30837DELETE FROM t1 30838WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 30839AND f_int2 <> CAST(f_char1 AS SIGNED INT) 30840AND f_charbig = '####updated per insert trigger####'; 30841CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 30842BEGIN 30843SET new.f_int1 = @my_max1 + @counter, 30844new.f_int2 = @my_min2 - @counter, 30845new.f_charbig = '####updated per insert trigger####'; 30846SET @counter = @counter + 1; 30847END| 30848SET @counter = 1; 30849SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 30850INSERT INTO t1 (f_char1, f_char2, f_charbig) 30851SELECT CAST(f_int1 AS CHAR), 30852CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 30853WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 30854ORDER BY f_int1; 30855DROP TRIGGER trg_3; 30856 30857# check trigger-12 success: 1 30858DELETE FROM t1 30859WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 30860AND f_int2 <> CAST(f_char1 AS SIGNED INT) 30861AND f_charbig = '####updated per insert trigger####'; 30862ANALYZE TABLE t1; 30863Table Op Msg_type Msg_text 30864test.t1 analyze status OK 30865CHECK TABLE t1 EXTENDED; 30866Table Op Msg_type Msg_text 30867test.t1 check status OK 30868CHECKSUM TABLE t1 EXTENDED; 30869Table Checksum 30870test.t1 <some_value> 30871OPTIMIZE TABLE t1; 30872Table Op Msg_type Msg_text 30873test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 30874test.t1 optimize status OK 30875# check layout success: 1 30876REPAIR TABLE t1 EXTENDED; 30877Table Op Msg_type Msg_text 30878test.t1 repair status OK 30879# check layout success: 1 30880TRUNCATE t1; 30881 30882# check TRUNCATE success: 1 30883# check layout success: 1 30884# End usability test (inc/partition_check.inc) 30885DROP TABLE t1; 30886CREATE TABLE t1 ( 30887f_int1 INTEGER, 30888f_int2 INTEGER, 30889f_char1 CHAR(20), 30890f_char2 CHAR(20), 30891f_charbig VARCHAR(1000) 30892, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 30893) 30894PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 30895(PARTITION part1 VALUES LESS THAN (0) 30896(SUBPARTITION subpart11, SUBPARTITION subpart12), 30897PARTITION part2 VALUES LESS THAN (5) 30898(SUBPARTITION subpart21, SUBPARTITION subpart22), 30899PARTITION part3 VALUES LESS THAN (10) 30900(SUBPARTITION subpart31, SUBPARTITION subpart32), 30901PARTITION part4 VALUES LESS THAN (2147483646) 30902(SUBPARTITION subpart41, SUBPARTITION subpart42)); 30903INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 30904SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 30905# Start usability test (inc/partition_check.inc) 30906create_command 30907SHOW CREATE TABLE t1; 30908Table Create Table 30909t1 CREATE TABLE `t1` ( 30910 `f_int1` int(11) DEFAULT NULL, 30911 `f_int2` int(11) DEFAULT NULL, 30912 `f_char1` char(20) DEFAULT NULL, 30913 `f_char2` char(20) DEFAULT NULL, 30914 `f_charbig` varchar(1000) DEFAULT NULL, 30915 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 30916 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 30917) ENGINE=InnoDB DEFAULT CHARSET=latin1 30918/*!50100 PARTITION BY RANGE (f_int1) 30919SUBPARTITION BY KEY (f_int2) 30920(PARTITION part1 VALUES LESS THAN (0) 30921 (SUBPARTITION subpart11 ENGINE = InnoDB, 30922 SUBPARTITION subpart12 ENGINE = InnoDB), 30923 PARTITION part2 VALUES LESS THAN (5) 30924 (SUBPARTITION subpart21 ENGINE = InnoDB, 30925 SUBPARTITION subpart22 ENGINE = InnoDB), 30926 PARTITION part3 VALUES LESS THAN (10) 30927 (SUBPARTITION subpart31 ENGINE = InnoDB, 30928 SUBPARTITION subpart32 ENGINE = InnoDB), 30929 PARTITION part4 VALUES LESS THAN (2147483646) 30930 (SUBPARTITION subpart41 ENGINE = InnoDB, 30931 SUBPARTITION subpart42 ENGINE = InnoDB)) */ 30932 30933unified filelist 30934t1#P#part1#SP#subpart11.ibd 30935t1#P#part1#SP#subpart12.ibd 30936t1#P#part2#SP#subpart21.ibd 30937t1#P#part2#SP#subpart22.ibd 30938t1#P#part3#SP#subpart31.ibd 30939t1#P#part3#SP#subpart32.ibd 30940t1#P#part4#SP#subpart41.ibd 30941t1#P#part4#SP#subpart42.ibd 30942t1.frm 30943 30944# check prerequisites-1 success: 1 30945# check COUNT(*) success: 1 30946# check MIN/MAX(f_int1) success: 1 30947# check MIN/MAX(f_int2) success: 1 30948INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30949SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 30950CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 30951WHERE f_int1 IN (2,3); 30952ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 30953# check prerequisites-3 success: 1 30954# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 30955INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30956SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 30957CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 30958WHERE f_int1 IN (2,3); 30959DELETE FROM t1 WHERE f_charbig = 'delete me'; 30960INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 30961SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 30962CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 30963WHERE f_int1 IN (2,3); 30964DELETE FROM t1 WHERE f_charbig = 'delete me'; 30965# check read via f_int1 success: 1 30966# check read via f_int2 success: 1 30967 30968# check multiple-1 success: 1 30969DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 30970 30971# check multiple-2 success: 1 30972INSERT INTO t1 SELECT * FROM t0_template 30973WHERE MOD(f_int1,3) = 0; 30974 30975# check multiple-3 success: 1 30976UPDATE t1 SET f_int1 = f_int1 + @max_row 30977WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 30978AND @max_row_div2 + @max_row_div4; 30979 30980# check multiple-4 success: 1 30981DELETE FROM t1 30982WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 30983AND @max_row_div2 + @max_row_div4 + @max_row; 30984 30985# check multiple-5 success: 1 30986SELECT COUNT(*) INTO @try_count FROM t0_template 30987WHERE MOD(f_int1,3) = 0 30988AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30989SELECT COUNT(*) INTO @clash_count 30990FROM t1 INNER JOIN t0_template USING(f_int1) 30991WHERE MOD(f_int1,3) = 0 30992AND f_int1 BETWEEN @max_row_div2 AND @max_row; 30993SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 30994INSERT INTO t1 30995SET f_int1 = @cur_value , f_int2 = @cur_value, 30996f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 30997f_charbig = '#SINGLE#'; 30998 30999# check single-1 success: 1 31000SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 31001INSERT INTO t1 31002SET f_int1 = @cur_value , f_int2 = @cur_value, 31003f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 31004f_charbig = '#SINGLE#'; 31005 31006# check single-2 success: 1 31007SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 31008SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 31009UPDATE t1 SET f_int1 = @cur_value2 31010WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 31011 31012# check single-3 success: 1 31013SET @cur_value1= -1; 31014SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 31015UPDATE t1 SET f_int1 = @cur_value1 31016WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 31017 31018# check single-4 success: 1 31019SELECT MAX(f_int1) INTO @cur_value FROM t1; 31020DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 31021 31022# check single-5 success: 1 31023DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 31024 31025# check single-6 success: 1 31026INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 31027ERROR HY000: Table has no partition for value 2147483647 31028DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 31029INSERT t1 SET f_int1 = 0 , f_int2 = 0, 31030f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 31031f_charbig = '#NULL#'; 31032INSERT INTO t1 31033SET f_int1 = NULL , f_int2 = -@max_row, 31034f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 31035f_charbig = '#NULL#'; 31036# check null success: 1 31037 31038# check null-1 success: 1 31039UPDATE t1 SET f_int1 = -@max_row 31040WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31041AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31042 31043# check null-2 success: 1 31044UPDATE t1 SET f_int1 = NULL 31045WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31046AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31047 31048# check null-3 success: 1 31049DELETE FROM t1 31050WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31051AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31052 31053# check null-4 success: 1 31054DELETE FROM t1 31055WHERE f_int1 = 0 AND f_int2 = 0 31056AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 31057AND f_charbig = '#NULL#'; 31058INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31059SELECT f_int1, f_int1, '', '', 'was inserted' 31060 FROM t0_template source_tab 31061WHERE MOD(f_int1,3) = 0 31062AND f_int1 BETWEEN @max_row_div2 AND @max_row 31063ON DUPLICATE KEY 31064UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 31065f_int2 = 2 * @max_row + source_tab.f_int1, 31066f_charbig = 'was updated'; 31067 31068# check unique-1-a success: 1 31069 31070# check unique-1-b success: 1 31071DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31072UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31073f_int2 = CAST(f_char1 AS SIGNED INT), 31074f_charbig = CONCAT('===',f_char1,'===') 31075WHERE f_charbig = 'was updated'; 31076REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31077SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 31078 FROM t0_template source_tab 31079WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 31080 31081# check replace success: 1 31082DELETE FROM t1 31083WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 31084DELETE FROM t1 31085WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 31086f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 31087UPDATE t1 SET f_int2 = f_int1, 31088f_char1 = CAST(f_int1 AS CHAR), 31089f_char2 = CAST(f_int1 AS CHAR), 31090f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 31091WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 31092SET AUTOCOMMIT= 0; 31093INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31094SELECT f_int1, f_int1, '', '', 'was inserted' 31095FROM t0_template source_tab 31096WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31097 31098# check transactions-1 success: 1 31099COMMIT WORK; 31100 31101# check transactions-2 success: 1 31102ROLLBACK WORK; 31103 31104# check transactions-3 success: 1 31105DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31106COMMIT WORK; 31107ROLLBACK WORK; 31108 31109# check transactions-4 success: 1 31110INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31111SELECT f_int1, f_int1, '', '', 'was inserted' 31112FROM t0_template source_tab 31113WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31114 31115# check transactions-5 success: 1 31116ROLLBACK WORK; 31117 31118# check transactions-6 success: 1 31119# INFO: Storage engine used for t1 seems to be transactional. 31120COMMIT; 31121 31122# check transactions-7 success: 1 31123DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31124COMMIT WORK; 31125SET @@session.sql_mode = 'traditional'; 31126Warnings: 31127Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 31128SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 31129INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31130SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 31131'', '', 'was inserted' FROM t0_template 31132WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31133ERROR 22012: Division by 0 31134COMMIT; 31135 31136# check transactions-8 success: 1 31137# INFO: Storage engine used for t1 seems to be able to revert 31138# changes made by the failing statement. 31139SET @@session.sql_mode = ''; 31140Warnings: 31141Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 31142SET AUTOCOMMIT= 1; 31143DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31144COMMIT WORK; 31145UPDATE t1 SET f_charbig = REPEAT('b', 1000); 31146 31147# check special-1 success: 1 31148UPDATE t1 SET f_charbig = ''; 31149 31150# check special-2 success: 1 31151UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 31152INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 31153SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 31154WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31155INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31156SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31157'just inserted' FROM t0_template 31158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31159CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 31160BEGIN 31161UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31162f_charbig = 'updated by trigger' 31163 WHERE f_int1 = new.f_int1; 31164END| 31165INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31166SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 31167WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31168 31169# check trigger-1 success: 1 31170DROP TRIGGER trg_1; 31171UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31172f_int2 = CAST(f_char1 AS SIGNED INT), 31173f_charbig = 'just inserted' 31174 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31175DELETE FROM t0_aux 31176WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31177INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31178SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31179'just inserted' FROM t0_template 31180WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31181CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 31182BEGIN 31183UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31184f_charbig = 'updated by trigger' 31185 WHERE f_int1 = new.f_int1; 31186END| 31187INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31188SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 31189WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31190 31191# check trigger-2 success: 1 31192DROP TRIGGER trg_1; 31193UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31194f_int2 = CAST(f_char1 AS SIGNED INT), 31195f_charbig = 'just inserted' 31196 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31197DELETE FROM t0_aux 31198WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31199INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31200SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31201'just inserted' FROM t0_template 31202WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31203CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 31204BEGIN 31205UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31206f_charbig = 'updated by trigger' 31207 WHERE f_int1 = new.f_int1; 31208END| 31209UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31210WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31211 31212# check trigger-3 success: 1 31213DROP TRIGGER trg_1; 31214UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31215f_int2 = CAST(f_char1 AS SIGNED INT), 31216f_charbig = 'just inserted' 31217 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31218DELETE FROM t0_aux 31219WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31220INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31221SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31222'just inserted' FROM t0_template 31223WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31224CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 31225BEGIN 31226UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31227f_charbig = 'updated by trigger' 31228 WHERE f_int1 = - old.f_int1; 31229END| 31230UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31231WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31232 31233# check trigger-4 success: 1 31234DROP TRIGGER trg_1; 31235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31236f_int2 = CAST(f_char1 AS SIGNED INT), 31237f_charbig = 'just inserted' 31238 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31239DELETE FROM t0_aux 31240WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31241INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31242SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31243'just inserted' FROM t0_template 31244WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31245CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 31246BEGIN 31247UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31248f_charbig = 'updated by trigger' 31249 WHERE f_int1 = new.f_int1; 31250END| 31251UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31252WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31253 31254# check trigger-5 success: 1 31255DROP TRIGGER trg_1; 31256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31257f_int2 = CAST(f_char1 AS SIGNED INT), 31258f_charbig = 'just inserted' 31259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31260DELETE FROM t0_aux 31261WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31262INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31263SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31264'just inserted' FROM t0_template 31265WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31266CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 31267BEGIN 31268UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31269f_charbig = 'updated by trigger' 31270 WHERE f_int1 = - old.f_int1; 31271END| 31272UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31273WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31274 31275# check trigger-6 success: 1 31276DROP TRIGGER trg_1; 31277UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31278f_int2 = CAST(f_char1 AS SIGNED INT), 31279f_charbig = 'just inserted' 31280 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31281DELETE FROM t0_aux 31282WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31283INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31284SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31285'just inserted' FROM t0_template 31286WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31287CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 31288BEGIN 31289UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31290f_charbig = 'updated by trigger' 31291 WHERE f_int1 = - old.f_int1; 31292END| 31293DELETE FROM t0_aux 31294WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31295 31296# check trigger-7 success: 1 31297DROP TRIGGER trg_1; 31298UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31299f_int2 = CAST(f_char1 AS SIGNED INT), 31300f_charbig = 'just inserted' 31301 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31302DELETE FROM t0_aux 31303WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31305SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31306'just inserted' FROM t0_template 31307WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31308CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 31309BEGIN 31310UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31311f_charbig = 'updated by trigger' 31312 WHERE f_int1 = - old.f_int1; 31313END| 31314DELETE FROM t0_aux 31315WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31316 31317# check trigger-8 success: 1 31318DROP TRIGGER trg_1; 31319UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31320f_int2 = CAST(f_char1 AS SIGNED INT), 31321f_charbig = 'just inserted' 31322 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31323DELETE FROM t0_aux 31324WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31325DELETE FROM t1 31326WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31327CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 31328BEGIN 31329SET new.f_int1 = old.f_int1 + @max_row, 31330new.f_int2 = old.f_int2 - @max_row, 31331new.f_charbig = '####updated per update trigger####'; 31332END| 31333UPDATE t1 31334SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 31335f_charbig = '####updated per update statement itself####'; 31336 31337# check trigger-9 success: 1 31338DROP TRIGGER trg_2; 31339UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31340f_int2 = CAST(f_char1 AS SIGNED INT), 31341f_charbig = CONCAT('===',f_char1,'==='); 31342CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 31343BEGIN 31344SET new.f_int1 = new.f_int1 + @max_row, 31345new.f_int2 = new.f_int2 - @max_row, 31346new.f_charbig = '####updated per update trigger####'; 31347END| 31348UPDATE t1 31349SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 31350f_charbig = '####updated per update statement itself####'; 31351 31352# check trigger-10 success: 1 31353DROP TRIGGER trg_2; 31354UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31355f_int2 = CAST(f_char1 AS SIGNED INT), 31356f_charbig = CONCAT('===',f_char1,'==='); 31357CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 31358BEGIN 31359SET new.f_int1 = @my_max1 + @counter, 31360new.f_int2 = @my_min2 - @counter, 31361new.f_charbig = '####updated per insert trigger####'; 31362SET @counter = @counter + 1; 31363END| 31364SET @counter = 1; 31365SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 31366INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31367SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 31368CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 31369WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 31370ORDER BY f_int1; 31371DROP TRIGGER trg_3; 31372 31373# check trigger-11 success: 1 31374DELETE FROM t1 31375WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 31376AND f_int2 <> CAST(f_char1 AS SIGNED INT) 31377AND f_charbig = '####updated per insert trigger####'; 31378CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 31379BEGIN 31380SET new.f_int1 = @my_max1 + @counter, 31381new.f_int2 = @my_min2 - @counter, 31382new.f_charbig = '####updated per insert trigger####'; 31383SET @counter = @counter + 1; 31384END| 31385SET @counter = 1; 31386SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 31387INSERT INTO t1 (f_char1, f_char2, f_charbig) 31388SELECT CAST(f_int1 AS CHAR), 31389CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 31390WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 31391ORDER BY f_int1; 31392DROP TRIGGER trg_3; 31393 31394# check trigger-12 success: 1 31395DELETE FROM t1 31396WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 31397AND f_int2 <> CAST(f_char1 AS SIGNED INT) 31398AND f_charbig = '####updated per insert trigger####'; 31399ANALYZE TABLE t1; 31400Table Op Msg_type Msg_text 31401test.t1 analyze status OK 31402CHECK TABLE t1 EXTENDED; 31403Table Op Msg_type Msg_text 31404test.t1 check status OK 31405CHECKSUM TABLE t1 EXTENDED; 31406Table Checksum 31407test.t1 <some_value> 31408OPTIMIZE TABLE t1; 31409Table Op Msg_type Msg_text 31410test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 31411test.t1 optimize status OK 31412# check layout success: 1 31413REPAIR TABLE t1 EXTENDED; 31414Table Op Msg_type Msg_text 31415test.t1 repair status OK 31416# check layout success: 1 31417TRUNCATE t1; 31418 31419# check TRUNCATE success: 1 31420# check layout success: 1 31421# End usability test (inc/partition_check.inc) 31422DROP TABLE t1; 31423CREATE TABLE t1 ( 31424f_int1 INTEGER, 31425f_int2 INTEGER, 31426f_char1 CHAR(20), 31427f_char2 CHAR(20), 31428f_charbig VARCHAR(1000) 31429, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 31430) 31431PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 31432(PARTITION part1 VALUES IN (0) 31433(SUBPARTITION sp11, SUBPARTITION sp12), 31434PARTITION part2 VALUES IN (1) 31435(SUBPARTITION sp21, SUBPARTITION sp22), 31436PARTITION part3 VALUES IN (2) 31437(SUBPARTITION sp31, SUBPARTITION sp32), 31438PARTITION part4 VALUES IN (NULL) 31439(SUBPARTITION sp41, SUBPARTITION sp42)); 31440INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 31441SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 31442# Start usability test (inc/partition_check.inc) 31443create_command 31444SHOW CREATE TABLE t1; 31445Table Create Table 31446t1 CREATE TABLE `t1` ( 31447 `f_int1` int(11) DEFAULT NULL, 31448 `f_int2` int(11) DEFAULT NULL, 31449 `f_char1` char(20) DEFAULT NULL, 31450 `f_char2` char(20) DEFAULT NULL, 31451 `f_charbig` varchar(1000) DEFAULT NULL, 31452 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 31453 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 31454) ENGINE=InnoDB DEFAULT CHARSET=latin1 31455/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 31456SUBPARTITION BY HASH (f_int2 + 1) 31457(PARTITION part1 VALUES IN (0) 31458 (SUBPARTITION sp11 ENGINE = InnoDB, 31459 SUBPARTITION sp12 ENGINE = InnoDB), 31460 PARTITION part2 VALUES IN (1) 31461 (SUBPARTITION sp21 ENGINE = InnoDB, 31462 SUBPARTITION sp22 ENGINE = InnoDB), 31463 PARTITION part3 VALUES IN (2) 31464 (SUBPARTITION sp31 ENGINE = InnoDB, 31465 SUBPARTITION sp32 ENGINE = InnoDB), 31466 PARTITION part4 VALUES IN (NULL) 31467 (SUBPARTITION sp41 ENGINE = InnoDB, 31468 SUBPARTITION sp42 ENGINE = InnoDB)) */ 31469 31470unified filelist 31471t1#P#part1#SP#sp11.ibd 31472t1#P#part1#SP#sp12.ibd 31473t1#P#part2#SP#sp21.ibd 31474t1#P#part2#SP#sp22.ibd 31475t1#P#part3#SP#sp31.ibd 31476t1#P#part3#SP#sp32.ibd 31477t1#P#part4#SP#sp41.ibd 31478t1#P#part4#SP#sp42.ibd 31479t1.frm 31480 31481# check prerequisites-1 success: 1 31482# check COUNT(*) success: 1 31483# check MIN/MAX(f_int1) success: 1 31484# check MIN/MAX(f_int2) success: 1 31485INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31486SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 31487CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 31488WHERE f_int1 IN (2,3); 31489ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 31490# check prerequisites-3 success: 1 31491# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 31492INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31493SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 31494CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 31495WHERE f_int1 IN (2,3); 31496DELETE FROM t1 WHERE f_charbig = 'delete me'; 31497INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31498SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 31499CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 31500WHERE f_int1 IN (2,3); 31501DELETE FROM t1 WHERE f_charbig = 'delete me'; 31502# check read via f_int1 success: 1 31503# check read via f_int2 success: 1 31504 31505# check multiple-1 success: 1 31506DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 31507 31508# check multiple-2 success: 1 31509INSERT INTO t1 SELECT * FROM t0_template 31510WHERE MOD(f_int1,3) = 0; 31511 31512# check multiple-3 success: 1 31513UPDATE t1 SET f_int1 = f_int1 + @max_row 31514WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 31515AND @max_row_div2 + @max_row_div4; 31516 31517# check multiple-4 success: 1 31518DELETE FROM t1 31519WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 31520AND @max_row_div2 + @max_row_div4 + @max_row; 31521 31522# check multiple-5 success: 1 31523SELECT COUNT(*) INTO @try_count FROM t0_template 31524WHERE MOD(f_int1,3) = 0 31525AND f_int1 BETWEEN @max_row_div2 AND @max_row; 31526SELECT COUNT(*) INTO @clash_count 31527FROM t1 INNER JOIN t0_template USING(f_int1) 31528WHERE MOD(f_int1,3) = 0 31529AND f_int1 BETWEEN @max_row_div2 AND @max_row; 31530SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 31531INSERT INTO t1 31532SET f_int1 = @cur_value , f_int2 = @cur_value, 31533f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 31534f_charbig = '#SINGLE#'; 31535 31536# check single-1 success: 1 31537SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 31538INSERT INTO t1 31539SET f_int1 = @cur_value , f_int2 = @cur_value, 31540f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 31541f_charbig = '#SINGLE#'; 31542 31543# check single-2 success: 1 31544SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 31545SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 31546UPDATE t1 SET f_int1 = @cur_value2 31547WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 31548 31549# check single-3 success: 1 31550SET @cur_value1= -1; 31551SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 31552UPDATE t1 SET f_int1 = @cur_value1 31553WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 31554 31555# check single-4 success: 1 31556SELECT MAX(f_int1) INTO @cur_value FROM t1; 31557DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 31558 31559# check single-5 success: 1 31560DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 31561 31562# check single-6 success: 1 31563INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 31564 31565# check single-7 success: 1 31566DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 31567DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 31568INSERT t1 SET f_int1 = 0 , f_int2 = 0, 31569f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 31570f_charbig = '#NULL#'; 31571INSERT INTO t1 31572SET f_int1 = NULL , f_int2 = -@max_row, 31573f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 31574f_charbig = '#NULL#'; 31575# check null success: 1 31576 31577# check null-1 success: 1 31578UPDATE t1 SET f_int1 = -@max_row 31579WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31580AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31581 31582# check null-2 success: 1 31583UPDATE t1 SET f_int1 = NULL 31584WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31585AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31586 31587# check null-3 success: 1 31588DELETE FROM t1 31589WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 31590AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 31591 31592# check null-4 success: 1 31593DELETE FROM t1 31594WHERE f_int1 = 0 AND f_int2 = 0 31595AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 31596AND f_charbig = '#NULL#'; 31597INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31598SELECT f_int1, f_int1, '', '', 'was inserted' 31599 FROM t0_template source_tab 31600WHERE MOD(f_int1,3) = 0 31601AND f_int1 BETWEEN @max_row_div2 AND @max_row 31602ON DUPLICATE KEY 31603UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 31604f_int2 = 2 * @max_row + source_tab.f_int1, 31605f_charbig = 'was updated'; 31606 31607# check unique-1-a success: 1 31608 31609# check unique-1-b success: 1 31610DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31612f_int2 = CAST(f_char1 AS SIGNED INT), 31613f_charbig = CONCAT('===',f_char1,'===') 31614WHERE f_charbig = 'was updated'; 31615REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31616SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 31617 FROM t0_template source_tab 31618WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 31619 31620# check replace success: 1 31621DELETE FROM t1 31622WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 31623DELETE FROM t1 31624WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 31625f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 31626UPDATE t1 SET f_int2 = f_int1, 31627f_char1 = CAST(f_int1 AS CHAR), 31628f_char2 = CAST(f_int1 AS CHAR), 31629f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 31630WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 31631SET AUTOCOMMIT= 0; 31632INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31633SELECT f_int1, f_int1, '', '', 'was inserted' 31634FROM t0_template source_tab 31635WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31636 31637# check transactions-1 success: 1 31638COMMIT WORK; 31639 31640# check transactions-2 success: 1 31641ROLLBACK WORK; 31642 31643# check transactions-3 success: 1 31644DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31645COMMIT WORK; 31646ROLLBACK WORK; 31647 31648# check transactions-4 success: 1 31649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31650SELECT f_int1, f_int1, '', '', 'was inserted' 31651FROM t0_template source_tab 31652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31653 31654# check transactions-5 success: 1 31655ROLLBACK WORK; 31656 31657# check transactions-6 success: 1 31658# INFO: Storage engine used for t1 seems to be transactional. 31659COMMIT; 31660 31661# check transactions-7 success: 1 31662DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31663COMMIT WORK; 31664SET @@session.sql_mode = 'traditional'; 31665Warnings: 31666Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 31667SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 31668INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31669SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 31670'', '', 'was inserted' FROM t0_template 31671WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 31672ERROR 22012: Division by 0 31673COMMIT; 31674 31675# check transactions-8 success: 1 31676# INFO: Storage engine used for t1 seems to be able to revert 31677# changes made by the failing statement. 31678SET @@session.sql_mode = ''; 31679Warnings: 31680Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 31681SET AUTOCOMMIT= 1; 31682DELETE FROM t1 WHERE f_charbig = 'was inserted'; 31683COMMIT WORK; 31684UPDATE t1 SET f_charbig = REPEAT('b', 1000); 31685 31686# check special-1 success: 1 31687UPDATE t1 SET f_charbig = ''; 31688 31689# check special-2 success: 1 31690UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 31691INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 31692SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 31693WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31696'just inserted' FROM t0_template 31697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31698CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 31699BEGIN 31700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31701f_charbig = 'updated by trigger' 31702 WHERE f_int1 = new.f_int1; 31703END| 31704INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31705SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 31706WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31707 31708# check trigger-1 success: 1 31709DROP TRIGGER trg_1; 31710UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31711f_int2 = CAST(f_char1 AS SIGNED INT), 31712f_charbig = 'just inserted' 31713 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31714DELETE FROM t0_aux 31715WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31716INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31717SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31718'just inserted' FROM t0_template 31719WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31720CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 31721BEGIN 31722UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31723f_charbig = 'updated by trigger' 31724 WHERE f_int1 = new.f_int1; 31725END| 31726INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31727SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 31728WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31729 31730# check trigger-2 success: 1 31731DROP TRIGGER trg_1; 31732UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31733f_int2 = CAST(f_char1 AS SIGNED INT), 31734f_charbig = 'just inserted' 31735 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31736DELETE FROM t0_aux 31737WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31738INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31739SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31740'just inserted' FROM t0_template 31741WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31742CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 31743BEGIN 31744UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31745f_charbig = 'updated by trigger' 31746 WHERE f_int1 = new.f_int1; 31747END| 31748UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31749WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31750 31751# check trigger-3 success: 1 31752DROP TRIGGER trg_1; 31753UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31754f_int2 = CAST(f_char1 AS SIGNED INT), 31755f_charbig = 'just inserted' 31756 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31757DELETE FROM t0_aux 31758WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31759INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31760SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31761'just inserted' FROM t0_template 31762WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31763CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 31764BEGIN 31765UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31766f_charbig = 'updated by trigger' 31767 WHERE f_int1 = - old.f_int1; 31768END| 31769UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31770WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31771 31772# check trigger-4 success: 1 31773DROP TRIGGER trg_1; 31774UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31775f_int2 = CAST(f_char1 AS SIGNED INT), 31776f_charbig = 'just inserted' 31777 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31778DELETE FROM t0_aux 31779WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31780INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31781SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31782'just inserted' FROM t0_template 31783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31784CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 31785BEGIN 31786UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31787f_charbig = 'updated by trigger' 31788 WHERE f_int1 = new.f_int1; 31789END| 31790UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31791WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31792 31793# check trigger-5 success: 1 31794DROP TRIGGER trg_1; 31795UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31796f_int2 = CAST(f_char1 AS SIGNED INT), 31797f_charbig = 'just inserted' 31798 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31799DELETE FROM t0_aux 31800WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31801INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31802SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31803'just inserted' FROM t0_template 31804WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31805CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 31806BEGIN 31807UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31808f_charbig = 'updated by trigger' 31809 WHERE f_int1 = - old.f_int1; 31810END| 31811UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 31812WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31813 31814# check trigger-6 success: 1 31815DROP TRIGGER trg_1; 31816UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31817f_int2 = CAST(f_char1 AS SIGNED INT), 31818f_charbig = 'just inserted' 31819 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31820DELETE FROM t0_aux 31821WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31822INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31823SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31824'just inserted' FROM t0_template 31825WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31826CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 31827BEGIN 31828UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31829f_charbig = 'updated by trigger' 31830 WHERE f_int1 = - old.f_int1; 31831END| 31832DELETE FROM t0_aux 31833WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31834 31835# check trigger-7 success: 1 31836DROP TRIGGER trg_1; 31837UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31838f_int2 = CAST(f_char1 AS SIGNED INT), 31839f_charbig = 'just inserted' 31840 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31841DELETE FROM t0_aux 31842WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31843INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 31844SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 31845'just inserted' FROM t0_template 31846WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31847CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 31848BEGIN 31849UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 31850f_charbig = 'updated by trigger' 31851 WHERE f_int1 = - old.f_int1; 31852END| 31853DELETE FROM t0_aux 31854WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 31855 31856# check trigger-8 success: 1 31857DROP TRIGGER trg_1; 31858UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31859f_int2 = CAST(f_char1 AS SIGNED INT), 31860f_charbig = 'just inserted' 31861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 31862DELETE FROM t0_aux 31863WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31864DELETE FROM t1 31865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 31866CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 31867BEGIN 31868SET new.f_int1 = old.f_int1 + @max_row, 31869new.f_int2 = old.f_int2 - @max_row, 31870new.f_charbig = '####updated per update trigger####'; 31871END| 31872UPDATE t1 31873SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 31874f_charbig = '####updated per update statement itself####'; 31875 31876# check trigger-9 success: 1 31877DROP TRIGGER trg_2; 31878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31879f_int2 = CAST(f_char1 AS SIGNED INT), 31880f_charbig = CONCAT('===',f_char1,'==='); 31881CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 31882BEGIN 31883SET new.f_int1 = new.f_int1 + @max_row, 31884new.f_int2 = new.f_int2 - @max_row, 31885new.f_charbig = '####updated per update trigger####'; 31886END| 31887UPDATE t1 31888SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 31889f_charbig = '####updated per update statement itself####'; 31890 31891# check trigger-10 success: 1 31892DROP TRIGGER trg_2; 31893UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 31894f_int2 = CAST(f_char1 AS SIGNED INT), 31895f_charbig = CONCAT('===',f_char1,'==='); 31896CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 31897BEGIN 31898SET new.f_int1 = @my_max1 + @counter, 31899new.f_int2 = @my_min2 - @counter, 31900new.f_charbig = '####updated per insert trigger####'; 31901SET @counter = @counter + 1; 31902END| 31903SET @counter = 1; 31904SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 31905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 31906SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 31907CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 31908WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 31909ORDER BY f_int1; 31910DROP TRIGGER trg_3; 31911 31912# check trigger-11 success: 1 31913DELETE FROM t1 31914WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 31915AND f_int2 <> CAST(f_char1 AS SIGNED INT) 31916AND f_charbig = '####updated per insert trigger####'; 31917CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 31918BEGIN 31919SET new.f_int1 = @my_max1 + @counter, 31920new.f_int2 = @my_min2 - @counter, 31921new.f_charbig = '####updated per insert trigger####'; 31922SET @counter = @counter + 1; 31923END| 31924SET @counter = 1; 31925SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 31926INSERT INTO t1 (f_char1, f_char2, f_charbig) 31927SELECT CAST(f_int1 AS CHAR), 31928CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 31929WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 31930ORDER BY f_int1; 31931DROP TRIGGER trg_3; 31932 31933# check trigger-12 success: 1 31934DELETE FROM t1 31935WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 31936AND f_int2 <> CAST(f_char1 AS SIGNED INT) 31937AND f_charbig = '####updated per insert trigger####'; 31938ANALYZE TABLE t1; 31939Table Op Msg_type Msg_text 31940test.t1 analyze status OK 31941CHECK TABLE t1 EXTENDED; 31942Table Op Msg_type Msg_text 31943test.t1 check status OK 31944CHECKSUM TABLE t1 EXTENDED; 31945Table Checksum 31946test.t1 <some_value> 31947OPTIMIZE TABLE t1; 31948Table Op Msg_type Msg_text 31949test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 31950test.t1 optimize status OK 31951# check layout success: 1 31952REPAIR TABLE t1 EXTENDED; 31953Table Op Msg_type Msg_text 31954test.t1 repair status OK 31955# check layout success: 1 31956TRUNCATE t1; 31957 31958# check TRUNCATE success: 1 31959# check layout success: 1 31960# End usability test (inc/partition_check.inc) 31961DROP TABLE t1; 31962CREATE TABLE t1 ( 31963f_int1 INTEGER, 31964f_int2 INTEGER, 31965f_char1 CHAR(20), 31966f_char2 CHAR(20), 31967f_charbig VARCHAR(1000) 31968, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 31969) 31970PARTITION BY LIST(ABS(MOD(f_int1,2))) 31971SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 31972(PARTITION part1 VALUES IN (0), 31973PARTITION part2 VALUES IN (1), 31974PARTITION part3 VALUES IN (NULL)); 31975INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 31976SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 31977# Start usability test (inc/partition_check.inc) 31978create_command 31979SHOW CREATE TABLE t1; 31980Table Create Table 31981t1 CREATE TABLE `t1` ( 31982 `f_int1` int(11) DEFAULT NULL, 31983 `f_int2` int(11) DEFAULT NULL, 31984 `f_char1` char(20) DEFAULT NULL, 31985 `f_char2` char(20) DEFAULT NULL, 31986 `f_charbig` varchar(1000) DEFAULT NULL, 31987 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 31988 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 31989) ENGINE=InnoDB DEFAULT CHARSET=latin1 31990/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 31991SUBPARTITION BY KEY (f_int2) 31992SUBPARTITIONS 3 31993(PARTITION part1 VALUES IN (0) ENGINE = InnoDB, 31994 PARTITION part2 VALUES IN (1) ENGINE = InnoDB, 31995 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ 31996 31997unified filelist 31998t1#P#part1#SP#part1sp0.ibd 31999t1#P#part1#SP#part1sp1.ibd 32000t1#P#part1#SP#part1sp2.ibd 32001t1#P#part2#SP#part2sp0.ibd 32002t1#P#part2#SP#part2sp1.ibd 32003t1#P#part2#SP#part2sp2.ibd 32004t1#P#part3#SP#part3sp0.ibd 32005t1#P#part3#SP#part3sp1.ibd 32006t1#P#part3#SP#part3sp2.ibd 32007t1.frm 32008 32009# check prerequisites-1 success: 1 32010# check COUNT(*) success: 1 32011# check MIN/MAX(f_int1) success: 1 32012# check MIN/MAX(f_int2) success: 1 32013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32014SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 32015CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 32016WHERE f_int1 IN (2,3); 32017ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 32018# check prerequisites-3 success: 1 32019# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 32020INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32021SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 32022CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 32023WHERE f_int1 IN (2,3); 32024DELETE FROM t1 WHERE f_charbig = 'delete me'; 32025INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32026SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 32027CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 32028WHERE f_int1 IN (2,3); 32029DELETE FROM t1 WHERE f_charbig = 'delete me'; 32030# check read via f_int1 success: 1 32031# check read via f_int2 success: 1 32032 32033# check multiple-1 success: 1 32034DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 32035 32036# check multiple-2 success: 1 32037INSERT INTO t1 SELECT * FROM t0_template 32038WHERE MOD(f_int1,3) = 0; 32039 32040# check multiple-3 success: 1 32041UPDATE t1 SET f_int1 = f_int1 + @max_row 32042WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 32043AND @max_row_div2 + @max_row_div4; 32044 32045# check multiple-4 success: 1 32046DELETE FROM t1 32047WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 32048AND @max_row_div2 + @max_row_div4 + @max_row; 32049 32050# check multiple-5 success: 1 32051SELECT COUNT(*) INTO @try_count FROM t0_template 32052WHERE MOD(f_int1,3) = 0 32053AND f_int1 BETWEEN @max_row_div2 AND @max_row; 32054SELECT COUNT(*) INTO @clash_count 32055FROM t1 INNER JOIN t0_template USING(f_int1) 32056WHERE MOD(f_int1,3) = 0 32057AND f_int1 BETWEEN @max_row_div2 AND @max_row; 32058SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 32059INSERT INTO t1 32060SET f_int1 = @cur_value , f_int2 = @cur_value, 32061f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 32062f_charbig = '#SINGLE#'; 32063 32064# check single-1 success: 1 32065SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 32066INSERT INTO t1 32067SET f_int1 = @cur_value , f_int2 = @cur_value, 32068f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 32069f_charbig = '#SINGLE#'; 32070 32071# check single-2 success: 1 32072SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 32073SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 32074UPDATE t1 SET f_int1 = @cur_value2 32075WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 32076 32077# check single-3 success: 1 32078SET @cur_value1= -1; 32079SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 32080UPDATE t1 SET f_int1 = @cur_value1 32081WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 32082 32083# check single-4 success: 1 32084SELECT MAX(f_int1) INTO @cur_value FROM t1; 32085DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 32086 32087# check single-5 success: 1 32088DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 32089 32090# check single-6 success: 1 32091INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 32092 32093# check single-7 success: 1 32094DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 32095DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 32096INSERT t1 SET f_int1 = 0 , f_int2 = 0, 32097f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 32098f_charbig = '#NULL#'; 32099INSERT INTO t1 32100SET f_int1 = NULL , f_int2 = -@max_row, 32101f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 32102f_charbig = '#NULL#'; 32103# check null success: 1 32104 32105# check null-1 success: 1 32106UPDATE t1 SET f_int1 = -@max_row 32107WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 32108AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 32109 32110# check null-2 success: 1 32111UPDATE t1 SET f_int1 = NULL 32112WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 32113AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 32114 32115# check null-3 success: 1 32116DELETE FROM t1 32117WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 32118AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 32119 32120# check null-4 success: 1 32121DELETE FROM t1 32122WHERE f_int1 = 0 AND f_int2 = 0 32123AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 32124AND f_charbig = '#NULL#'; 32125INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32126SELECT f_int1, f_int1, '', '', 'was inserted' 32127 FROM t0_template source_tab 32128WHERE MOD(f_int1,3) = 0 32129AND f_int1 BETWEEN @max_row_div2 AND @max_row 32130ON DUPLICATE KEY 32131UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 32132f_int2 = 2 * @max_row + source_tab.f_int1, 32133f_charbig = 'was updated'; 32134 32135# check unique-1-a success: 1 32136 32137# check unique-1-b success: 1 32138DELETE FROM t1 WHERE f_charbig = 'was inserted'; 32139UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32140f_int2 = CAST(f_char1 AS SIGNED INT), 32141f_charbig = CONCAT('===',f_char1,'===') 32142WHERE f_charbig = 'was updated'; 32143REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32144SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 32145 FROM t0_template source_tab 32146WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 32147 32148# check replace success: 1 32149DELETE FROM t1 32150WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 32151DELETE FROM t1 32152WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 32153f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 32154UPDATE t1 SET f_int2 = f_int1, 32155f_char1 = CAST(f_int1 AS CHAR), 32156f_char2 = CAST(f_int1 AS CHAR), 32157f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 32158WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 32159SET AUTOCOMMIT= 0; 32160INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32161SELECT f_int1, f_int1, '', '', 'was inserted' 32162FROM t0_template source_tab 32163WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 32164 32165# check transactions-1 success: 1 32166COMMIT WORK; 32167 32168# check transactions-2 success: 1 32169ROLLBACK WORK; 32170 32171# check transactions-3 success: 1 32172DELETE FROM t1 WHERE f_charbig = 'was inserted'; 32173COMMIT WORK; 32174ROLLBACK WORK; 32175 32176# check transactions-4 success: 1 32177INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32178SELECT f_int1, f_int1, '', '', 'was inserted' 32179FROM t0_template source_tab 32180WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 32181 32182# check transactions-5 success: 1 32183ROLLBACK WORK; 32184 32185# check transactions-6 success: 1 32186# INFO: Storage engine used for t1 seems to be transactional. 32187COMMIT; 32188 32189# check transactions-7 success: 1 32190DELETE FROM t1 WHERE f_charbig = 'was inserted'; 32191COMMIT WORK; 32192SET @@session.sql_mode = 'traditional'; 32193Warnings: 32194Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 32195SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 32196INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32197SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 32198'', '', 'was inserted' FROM t0_template 32199WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 32200ERROR 22012: Division by 0 32201COMMIT; 32202 32203# check transactions-8 success: 1 32204# INFO: Storage engine used for t1 seems to be able to revert 32205# changes made by the failing statement. 32206SET @@session.sql_mode = ''; 32207Warnings: 32208Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 32209SET AUTOCOMMIT= 1; 32210DELETE FROM t1 WHERE f_charbig = 'was inserted'; 32211COMMIT WORK; 32212UPDATE t1 SET f_charbig = REPEAT('b', 1000); 32213 32214# check special-1 success: 1 32215UPDATE t1 SET f_charbig = ''; 32216 32217# check special-2 success: 1 32218UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 32219INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 32220SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 32221WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32222INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32223SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32224'just inserted' FROM t0_template 32225WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32226CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 32227BEGIN 32228UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32229f_charbig = 'updated by trigger' 32230 WHERE f_int1 = new.f_int1; 32231END| 32232INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32233SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 32234WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32235 32236# check trigger-1 success: 1 32237DROP TRIGGER trg_1; 32238UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32239f_int2 = CAST(f_char1 AS SIGNED INT), 32240f_charbig = 'just inserted' 32241 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32242DELETE FROM t0_aux 32243WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32244INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32245SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32246'just inserted' FROM t0_template 32247WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32248CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 32249BEGIN 32250UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32251f_charbig = 'updated by trigger' 32252 WHERE f_int1 = new.f_int1; 32253END| 32254INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32255SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 32256WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32257 32258# check trigger-2 success: 1 32259DROP TRIGGER trg_1; 32260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32261f_int2 = CAST(f_char1 AS SIGNED INT), 32262f_charbig = 'just inserted' 32263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32264DELETE FROM t0_aux 32265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32266INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32267SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32268'just inserted' FROM t0_template 32269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32270CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 32271BEGIN 32272UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32273f_charbig = 'updated by trigger' 32274 WHERE f_int1 = new.f_int1; 32275END| 32276UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 32277WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32278 32279# check trigger-3 success: 1 32280DROP TRIGGER trg_1; 32281UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32282f_int2 = CAST(f_char1 AS SIGNED INT), 32283f_charbig = 'just inserted' 32284 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32285DELETE FROM t0_aux 32286WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32287INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32288SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32289'just inserted' FROM t0_template 32290WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32291CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 32292BEGIN 32293UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32294f_charbig = 'updated by trigger' 32295 WHERE f_int1 = - old.f_int1; 32296END| 32297UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 32298WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32299 32300# check trigger-4 success: 1 32301DROP TRIGGER trg_1; 32302UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32303f_int2 = CAST(f_char1 AS SIGNED INT), 32304f_charbig = 'just inserted' 32305 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32306DELETE FROM t0_aux 32307WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32308INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32309SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32310'just inserted' FROM t0_template 32311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32312CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 32313BEGIN 32314UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32315f_charbig = 'updated by trigger' 32316 WHERE f_int1 = new.f_int1; 32317END| 32318UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 32319WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32320 32321# check trigger-5 success: 1 32322DROP TRIGGER trg_1; 32323UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32324f_int2 = CAST(f_char1 AS SIGNED INT), 32325f_charbig = 'just inserted' 32326 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32327DELETE FROM t0_aux 32328WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32329INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32330SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32331'just inserted' FROM t0_template 32332WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32333CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 32334BEGIN 32335UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32336f_charbig = 'updated by trigger' 32337 WHERE f_int1 = - old.f_int1; 32338END| 32339UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 32340WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32341 32342# check trigger-6 success: 1 32343DROP TRIGGER trg_1; 32344UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32345f_int2 = CAST(f_char1 AS SIGNED INT), 32346f_charbig = 'just inserted' 32347 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32348DELETE FROM t0_aux 32349WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32350INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32351SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32352'just inserted' FROM t0_template 32353WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32354CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 32355BEGIN 32356UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32357f_charbig = 'updated by trigger' 32358 WHERE f_int1 = - old.f_int1; 32359END| 32360DELETE FROM t0_aux 32361WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32362 32363# check trigger-7 success: 1 32364DROP TRIGGER trg_1; 32365UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32366f_int2 = CAST(f_char1 AS SIGNED INT), 32367f_charbig = 'just inserted' 32368 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32369DELETE FROM t0_aux 32370WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 32372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 32373'just inserted' FROM t0_template 32374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32375CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 32376BEGIN 32377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 32378f_charbig = 'updated by trigger' 32379 WHERE f_int1 = - old.f_int1; 32380END| 32381DELETE FROM t0_aux 32382WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 32383 32384# check trigger-8 success: 1 32385DROP TRIGGER trg_1; 32386UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32387f_int2 = CAST(f_char1 AS SIGNED INT), 32388f_charbig = 'just inserted' 32389 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 32390DELETE FROM t0_aux 32391WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32392DELETE FROM t1 32393WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 32394CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 32395BEGIN 32396SET new.f_int1 = old.f_int1 + @max_row, 32397new.f_int2 = old.f_int2 - @max_row, 32398new.f_charbig = '####updated per update trigger####'; 32399END| 32400UPDATE t1 32401SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 32402f_charbig = '####updated per update statement itself####'; 32403 32404# check trigger-9 success: 1 32405DROP TRIGGER trg_2; 32406UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32407f_int2 = CAST(f_char1 AS SIGNED INT), 32408f_charbig = CONCAT('===',f_char1,'==='); 32409CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 32410BEGIN 32411SET new.f_int1 = new.f_int1 + @max_row, 32412new.f_int2 = new.f_int2 - @max_row, 32413new.f_charbig = '####updated per update trigger####'; 32414END| 32415UPDATE t1 32416SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 32417f_charbig = '####updated per update statement itself####'; 32418 32419# check trigger-10 success: 1 32420DROP TRIGGER trg_2; 32421UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 32422f_int2 = CAST(f_char1 AS SIGNED INT), 32423f_charbig = CONCAT('===',f_char1,'==='); 32424CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 32425BEGIN 32426SET new.f_int1 = @my_max1 + @counter, 32427new.f_int2 = @my_min2 - @counter, 32428new.f_charbig = '####updated per insert trigger####'; 32429SET @counter = @counter + 1; 32430END| 32431SET @counter = 1; 32432SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 32433INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 32434SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 32435CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 32436WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 32437ORDER BY f_int1; 32438DROP TRIGGER trg_3; 32439 32440# check trigger-11 success: 1 32441DELETE FROM t1 32442WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 32443AND f_int2 <> CAST(f_char1 AS SIGNED INT) 32444AND f_charbig = '####updated per insert trigger####'; 32445CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 32446BEGIN 32447SET new.f_int1 = @my_max1 + @counter, 32448new.f_int2 = @my_min2 - @counter, 32449new.f_charbig = '####updated per insert trigger####'; 32450SET @counter = @counter + 1; 32451END| 32452SET @counter = 1; 32453SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 32454INSERT INTO t1 (f_char1, f_char2, f_charbig) 32455SELECT CAST(f_int1 AS CHAR), 32456CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 32457WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 32458ORDER BY f_int1; 32459DROP TRIGGER trg_3; 32460 32461# check trigger-12 success: 1 32462DELETE FROM t1 32463WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 32464AND f_int2 <> CAST(f_char1 AS SIGNED INT) 32465AND f_charbig = '####updated per insert trigger####'; 32466ANALYZE TABLE t1; 32467Table Op Msg_type Msg_text 32468test.t1 analyze status OK 32469CHECK TABLE t1 EXTENDED; 32470Table Op Msg_type Msg_text 32471test.t1 check status OK 32472CHECKSUM TABLE t1 EXTENDED; 32473Table Checksum 32474test.t1 <some_value> 32475OPTIMIZE TABLE t1; 32476Table Op Msg_type Msg_text 32477test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 32478test.t1 optimize status OK 32479# check layout success: 1 32480REPAIR TABLE t1 EXTENDED; 32481Table Op Msg_type Msg_text 32482test.t1 repair status OK 32483# check layout success: 1 32484TRUNCATE t1; 32485 32486# check TRUNCATE success: 1 32487# check layout success: 1 32488# End usability test (inc/partition_check.inc) 32489DROP TABLE t1; 32490DROP VIEW IF EXISTS v1; 32491DROP TABLE IF EXISTS t1; 32492DROP TABLE IF EXISTS t0_aux; 32493DROP TABLE IF EXISTS t0_definition; 32494DROP TABLE IF EXISTS t0_template; 32495