1SET @max_row = 20; 2SET @@session.default_storage_engine = 'MyISAM'; 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# 2 Decrease the size of the column used in the partitioning 45# function and/or PRIMARY KEY and/or UNIQUE INDEX 46#======================================================================== 47#------------------------------------------------------------------------ 48# 2.1 ALTER column f_int2 not used in partitioning function 49#------------------------------------------------------------------------ 50# 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists 51DROP TABLE IF EXISTS t1; 52CREATE TABLE t1 ( 53f_int1 INTEGER, 54f_int2 INTEGER, 55f_char1 CHAR(20), 56f_char2 CHAR(20), 57f_charbig VARCHAR(1000) 58 59) 60PARTITION BY HASH(f_int1) PARTITIONS 2; 61Warnings: 62Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 63INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 64SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 65WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 66Warnings: 67Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 68ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 69Warnings: 70Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 71INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 72SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 73WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 74Warnings: 75Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 76# Start usability test (inc/partition_check.inc) 77create_command 78SHOW CREATE TABLE t1; 79Table Create Table 80t1 CREATE TABLE `t1` ( 81 `f_int1` int(11) DEFAULT NULL, 82 `f_int2` mediumint(9) DEFAULT NULL, 83 `f_char1` char(20) DEFAULT NULL, 84 `f_char2` char(20) DEFAULT NULL, 85 `f_charbig` varchar(1000) DEFAULT NULL 86) ENGINE=MyISAM DEFAULT CHARSET=latin1 87/*!50100 PARTITION BY HASH (f_int1) 88PARTITIONS 2 */ 89 90unified filelist 91t1#P#p0.MYD 92t1#P#p0.MYI 93t1#P#p1.MYD 94t1#P#p1.MYI 95t1.frm 96t1.par 97 98# check prerequisites-1 success: 1 99# check COUNT(*) success: 1 100# check MIN/MAX(f_int1) success: 1 101# check MIN/MAX(f_int2) success: 1 102INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 103SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 104CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 105WHERE f_int1 IN (2,3); 106# check prerequisites-3 success: 1 107DELETE FROM t1 WHERE f_charbig = 'delete me'; 108# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 109# check read via f_int1 success: 1 110# check read via f_int2 success: 1 111 112# check multiple-1 success: 1 113DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 114 115# check multiple-2 success: 1 116INSERT INTO t1 SELECT * FROM t0_template 117WHERE MOD(f_int1,3) = 0; 118 119# check multiple-3 success: 1 120UPDATE t1 SET f_int1 = f_int1 + @max_row 121WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 122AND @max_row_div2 + @max_row_div4; 123 124# check multiple-4 success: 1 125DELETE FROM t1 126WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 127AND @max_row_div2 + @max_row_div4 + @max_row; 128 129# check multiple-5 success: 1 130SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 131INSERT INTO t1 132SET f_int1 = @cur_value , f_int2 = @cur_value, 133f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 134f_charbig = '#SINGLE#'; 135 136# check single-1 success: 1 137SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 138INSERT INTO t1 139SET f_int1 = @cur_value , f_int2 = @cur_value, 140f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 141f_charbig = '#SINGLE#'; 142 143# check single-2 success: 1 144SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 145SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 146UPDATE t1 SET f_int1 = @cur_value2 147WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 148 149# check single-3 success: 1 150SET @cur_value1= -1; 151SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 152UPDATE t1 SET f_int1 = @cur_value1 153WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 154 155# check single-4 success: 1 156SELECT MAX(f_int1) INTO @cur_value FROM t1; 157DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 158 159# check single-5 success: 1 160DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 161 162# check single-6 success: 1 163INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 164Warnings: 165Warning 1264 Out of range value for column 'f_int2' at row 1 166 167# check single-7 success: 1 168DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 169DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 170INSERT t1 SET f_int1 = 0 , f_int2 = 0, 171f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 172f_charbig = '#NULL#'; 173INSERT INTO t1 174SET f_int1 = NULL , f_int2 = -@max_row, 175f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 176f_charbig = '#NULL#'; 177# check null success: 1 178 179# check null-1 success: 1 180UPDATE t1 SET f_int1 = -@max_row 181WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 182AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 183 184# check null-2 success: 1 185UPDATE t1 SET f_int1 = NULL 186WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 187AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 188 189# check null-3 success: 1 190DELETE FROM t1 191WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 192AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 193 194# check null-4 success: 1 195DELETE FROM t1 196WHERE f_int1 = 0 AND f_int2 = 0 197AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 198AND f_charbig = '#NULL#'; 199SET AUTOCOMMIT= 0; 200INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 201SELECT f_int1, f_int1, '', '', 'was inserted' 202FROM t0_template source_tab 203WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 204 205# check transactions-1 success: 1 206COMMIT WORK; 207 208# check transactions-2 success: 1 209ROLLBACK WORK; 210 211# check transactions-3 success: 1 212DELETE FROM t1 WHERE f_charbig = 'was inserted'; 213COMMIT WORK; 214ROLLBACK WORK; 215 216# check transactions-4 success: 1 217INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 218SELECT f_int1, f_int1, '', '', 'was inserted' 219FROM t0_template source_tab 220WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 221 222# check transactions-5 success: 1 223ROLLBACK WORK; 224Warnings: 225Warning 1196 Some non-transactional changed tables couldn't be rolled back 226 227# check transactions-6 success: 1 228# INFO: Storage engine used for t1 seems to be not transactional. 229COMMIT; 230 231# check transactions-7 success: 1 232DELETE FROM t1 WHERE f_charbig = 'was inserted'; 233COMMIT WORK; 234SET @@session.sql_mode = 'traditional'; 235Warnings: 236Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 237SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 239SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 240'', '', 'was inserted' FROM t0_template 241WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 242ERROR 22012: Division by 0 243COMMIT; 244 245# check transactions-8 success: 1 246# INFO: Storage engine used for t1 seems to be unable to revert 247# changes made by the failing statement. 248SET @@session.sql_mode = ''; 249Warnings: 250Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 251SET AUTOCOMMIT= 1; 252DELETE FROM t1 WHERE f_charbig = 'was inserted'; 253COMMIT WORK; 254UPDATE t1 SET f_charbig = REPEAT('b', 1000); 255 256# check special-1 success: 1 257UPDATE t1 SET f_charbig = ''; 258 259# check special-2 success: 1 260UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 261INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 262SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 264INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 265SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 266'just inserted' FROM t0_template 267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 268CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 269BEGIN 270UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 271f_charbig = 'updated by trigger' 272 WHERE f_int1 = new.f_int1; 273END| 274INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 275SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 276WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 277 278# check trigger-1 success: 1 279DROP TRIGGER trg_1; 280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 281f_int2 = CAST(f_char1 AS SIGNED INT), 282f_charbig = 'just inserted' 283 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 284DELETE FROM t0_aux 285WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 286INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 287SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 288'just inserted' FROM t0_template 289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 290CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 291BEGIN 292UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 293f_charbig = 'updated by trigger' 294 WHERE f_int1 = new.f_int1; 295END| 296INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 297SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 298WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 299 300# check trigger-2 success: 1 301DROP TRIGGER trg_1; 302UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 303f_int2 = CAST(f_char1 AS SIGNED INT), 304f_charbig = 'just inserted' 305 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 306DELETE FROM t0_aux 307WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 308INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 309SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 310'just inserted' FROM t0_template 311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 312CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 313BEGIN 314UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 315f_charbig = 'updated by trigger' 316 WHERE f_int1 = new.f_int1; 317END| 318UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 319WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 320 321# check trigger-3 success: 1 322DROP TRIGGER trg_1; 323UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 324f_int2 = CAST(f_char1 AS SIGNED INT), 325f_charbig = 'just inserted' 326 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 327DELETE FROM t0_aux 328WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 329INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 330SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 331'just inserted' FROM t0_template 332WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 333CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 334BEGIN 335UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 336f_charbig = 'updated by trigger' 337 WHERE f_int1 = - old.f_int1; 338END| 339UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 340WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 341 342# check trigger-4 success: 1 343DROP TRIGGER trg_1; 344UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 345f_int2 = CAST(f_char1 AS SIGNED INT), 346f_charbig = 'just inserted' 347 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 348DELETE FROM t0_aux 349WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 350INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 351SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 352'just inserted' FROM t0_template 353WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 354CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 355BEGIN 356UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 357f_charbig = 'updated by trigger' 358 WHERE f_int1 = new.f_int1; 359END| 360UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 361WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 362 363# check trigger-5 success: 1 364DROP TRIGGER trg_1; 365UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 366f_int2 = CAST(f_char1 AS SIGNED INT), 367f_charbig = 'just inserted' 368 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 369DELETE FROM t0_aux 370WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 373'just inserted' FROM t0_template 374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 375CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 376BEGIN 377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 378f_charbig = 'updated by trigger' 379 WHERE f_int1 = - old.f_int1; 380END| 381UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 382WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 383 384# check trigger-6 success: 1 385DROP TRIGGER trg_1; 386UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 387f_int2 = CAST(f_char1 AS SIGNED INT), 388f_charbig = 'just inserted' 389 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 390DELETE FROM t0_aux 391WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 392INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 393SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 394'just inserted' FROM t0_template 395WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 396CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 397BEGIN 398UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 399f_charbig = 'updated by trigger' 400 WHERE f_int1 = - old.f_int1; 401END| 402DELETE FROM t0_aux 403WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 404 405# check trigger-7 success: 1 406DROP TRIGGER trg_1; 407UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 408f_int2 = CAST(f_char1 AS SIGNED INT), 409f_charbig = 'just inserted' 410 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 411DELETE FROM t0_aux 412WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 414SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 415'just inserted' FROM t0_template 416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 417CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 418BEGIN 419UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 420f_charbig = 'updated by trigger' 421 WHERE f_int1 = - old.f_int1; 422END| 423DELETE FROM t0_aux 424WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 425 426# check trigger-8 success: 1 427DROP TRIGGER trg_1; 428UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 429f_int2 = CAST(f_char1 AS SIGNED INT), 430f_charbig = 'just inserted' 431 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 432DELETE FROM t0_aux 433WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 434DELETE FROM t1 435WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 436CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 437BEGIN 438SET new.f_int1 = old.f_int1 + @max_row, 439new.f_int2 = old.f_int2 - @max_row, 440new.f_charbig = '####updated per update trigger####'; 441END| 442UPDATE t1 443SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 444f_charbig = '####updated per update statement itself####'; 445Warnings: 446Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 447 448# check trigger-9 success: 1 449DROP TRIGGER trg_2; 450UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 451f_int2 = CAST(f_char1 AS SIGNED INT), 452f_charbig = CONCAT('===',f_char1,'==='); 453Warnings: 454Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 455CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 456BEGIN 457SET new.f_int1 = new.f_int1 + @max_row, 458new.f_int2 = new.f_int2 - @max_row, 459new.f_charbig = '####updated per update trigger####'; 460END| 461UPDATE t1 462SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 463f_charbig = '####updated per update statement itself####'; 464Warnings: 465Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 466 467# check trigger-10 success: 1 468DROP TRIGGER trg_2; 469UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 470f_int2 = CAST(f_char1 AS SIGNED INT), 471f_charbig = CONCAT('===',f_char1,'==='); 472Warnings: 473Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 474CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 475BEGIN 476SET new.f_int1 = @my_max1 + @counter, 477new.f_int2 = @my_min2 - @counter, 478new.f_charbig = '####updated per insert trigger####'; 479SET @counter = @counter + 1; 480END| 481SET @counter = 1; 482SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 483Warnings: 484Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 485INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 486SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 487CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 488WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 489ORDER BY f_int1; 490DROP TRIGGER trg_3; 491 492# check trigger-11 success: 1 493Warnings: 494Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 495DELETE FROM t1 496WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 497AND f_int2 <> CAST(f_char1 AS SIGNED INT) 498AND f_charbig = '####updated per insert trigger####'; 499CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 500BEGIN 501SET new.f_int1 = @my_max1 + @counter, 502new.f_int2 = @my_min2 - @counter, 503new.f_charbig = '####updated per insert trigger####'; 504SET @counter = @counter + 1; 505END| 506SET @counter = 1; 507SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 508Warnings: 509Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 510INSERT INTO t1 (f_char1, f_char2, f_charbig) 511SELECT CAST(f_int1 AS CHAR), 512CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 513WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 514ORDER BY f_int1; 515DROP TRIGGER trg_3; 516 517# check trigger-12 success: 1 518Warnings: 519Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 520DELETE FROM t1 521WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 522AND f_int2 <> CAST(f_char1 AS SIGNED INT) 523AND f_charbig = '####updated per insert trigger####'; 524ANALYZE TABLE t1; 525Table Op Msg_type Msg_text 526test.t1 analyze status OK 527test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 528CHECK TABLE t1 EXTENDED; 529Table Op Msg_type Msg_text 530test.t1 check status OK 531test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 532CHECKSUM TABLE t1 EXTENDED; 533Table Checksum 534test.t1 <some_value> 535OPTIMIZE TABLE t1; 536Table Op Msg_type Msg_text 537test.t1 optimize status OK 538test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 539# check layout success: 1 540REPAIR TABLE t1 EXTENDED; 541Table Op Msg_type Msg_text 542test.t1 repair status OK 543test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 544# check layout success: 1 545TRUNCATE t1; 546Warnings: 547Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 548 549# check TRUNCATE success: 1 550# check layout success: 1 551# End usability test (inc/partition_check.inc) 552DROP TABLE t1; 553CREATE TABLE t1 ( 554f_int1 INTEGER, 555f_int2 INTEGER, 556f_char1 CHAR(20), 557f_char2 CHAR(20), 558f_charbig VARCHAR(1000) 559 560) 561PARTITION BY KEY(f_int1) PARTITIONS 5; 562Warnings: 563Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 564INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 565SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 566WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 567Warnings: 568Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 569ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 570Warnings: 571Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 572INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 573SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 574WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 575Warnings: 576Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 577# Start usability test (inc/partition_check.inc) 578create_command 579SHOW CREATE TABLE t1; 580Table Create Table 581t1 CREATE TABLE `t1` ( 582 `f_int1` int(11) DEFAULT NULL, 583 `f_int2` mediumint(9) DEFAULT NULL, 584 `f_char1` char(20) DEFAULT NULL, 585 `f_char2` char(20) DEFAULT NULL, 586 `f_charbig` varchar(1000) DEFAULT NULL 587) ENGINE=MyISAM DEFAULT CHARSET=latin1 588/*!50100 PARTITION BY KEY (f_int1) 589PARTITIONS 5 */ 590 591unified filelist 592t1#P#p0.MYD 593t1#P#p0.MYI 594t1#P#p1.MYD 595t1#P#p1.MYI 596t1#P#p2.MYD 597t1#P#p2.MYI 598t1#P#p3.MYD 599t1#P#p3.MYI 600t1#P#p4.MYD 601t1#P#p4.MYI 602t1.frm 603t1.par 604 605# check prerequisites-1 success: 1 606# check COUNT(*) success: 1 607# check MIN/MAX(f_int1) success: 1 608# check MIN/MAX(f_int2) success: 1 609INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 610SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 611CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 612WHERE f_int1 IN (2,3); 613# check prerequisites-3 success: 1 614DELETE FROM t1 WHERE f_charbig = 'delete me'; 615# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 616# check read via f_int1 success: 1 617# check read via f_int2 success: 1 618 619# check multiple-1 success: 1 620DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 621 622# check multiple-2 success: 1 623INSERT INTO t1 SELECT * FROM t0_template 624WHERE MOD(f_int1,3) = 0; 625 626# check multiple-3 success: 1 627UPDATE t1 SET f_int1 = f_int1 + @max_row 628WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 629AND @max_row_div2 + @max_row_div4; 630 631# check multiple-4 success: 1 632DELETE FROM t1 633WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 634AND @max_row_div2 + @max_row_div4 + @max_row; 635 636# check multiple-5 success: 1 637SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 638INSERT INTO t1 639SET f_int1 = @cur_value , f_int2 = @cur_value, 640f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 641f_charbig = '#SINGLE#'; 642 643# check single-1 success: 1 644SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 645INSERT INTO t1 646SET f_int1 = @cur_value , f_int2 = @cur_value, 647f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 648f_charbig = '#SINGLE#'; 649 650# check single-2 success: 1 651SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 652SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 653UPDATE t1 SET f_int1 = @cur_value2 654WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 655 656# check single-3 success: 1 657SET @cur_value1= -1; 658SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 659UPDATE t1 SET f_int1 = @cur_value1 660WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 661 662# check single-4 success: 1 663SELECT MAX(f_int1) INTO @cur_value FROM t1; 664DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 665 666# check single-5 success: 1 667DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 668 669# check single-6 success: 1 670INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 671Warnings: 672Warning 1264 Out of range value for column 'f_int2' at row 1 673 674# check single-7 success: 1 675DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 676DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 677INSERT t1 SET f_int1 = 0 , f_int2 = 0, 678f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 679f_charbig = '#NULL#'; 680INSERT INTO t1 681SET f_int1 = NULL , f_int2 = -@max_row, 682f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 683f_charbig = '#NULL#'; 684# check null success: 1 685 686# check null-1 success: 1 687UPDATE t1 SET f_int1 = -@max_row 688WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 689AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 690 691# check null-2 success: 1 692UPDATE t1 SET f_int1 = NULL 693WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 694AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 695 696# check null-3 success: 1 697DELETE FROM t1 698WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 699AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 700 701# check null-4 success: 1 702DELETE FROM t1 703WHERE f_int1 = 0 AND f_int2 = 0 704AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 705AND f_charbig = '#NULL#'; 706SET AUTOCOMMIT= 0; 707INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 708SELECT f_int1, f_int1, '', '', 'was inserted' 709FROM t0_template source_tab 710WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 711 712# check transactions-1 success: 1 713COMMIT WORK; 714 715# check transactions-2 success: 1 716ROLLBACK WORK; 717 718# check transactions-3 success: 1 719DELETE FROM t1 WHERE f_charbig = 'was inserted'; 720COMMIT WORK; 721ROLLBACK WORK; 722 723# check transactions-4 success: 1 724INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 725SELECT f_int1, f_int1, '', '', 'was inserted' 726FROM t0_template source_tab 727WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 728 729# check transactions-5 success: 1 730ROLLBACK WORK; 731Warnings: 732Warning 1196 Some non-transactional changed tables couldn't be rolled back 733 734# check transactions-6 success: 1 735# INFO: Storage engine used for t1 seems to be not transactional. 736COMMIT; 737 738# check transactions-7 success: 1 739DELETE FROM t1 WHERE f_charbig = 'was inserted'; 740COMMIT WORK; 741SET @@session.sql_mode = 'traditional'; 742Warnings: 743Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 744SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 746SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 747'', '', 'was inserted' FROM t0_template 748WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 749ERROR 22012: Division by 0 750COMMIT; 751 752# check transactions-8 success: 1 753# INFO: Storage engine used for t1 seems to be unable to revert 754# changes made by the failing statement. 755SET @@session.sql_mode = ''; 756Warnings: 757Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 758SET AUTOCOMMIT= 1; 759DELETE FROM t1 WHERE f_charbig = 'was inserted'; 760COMMIT WORK; 761UPDATE t1 SET f_charbig = REPEAT('b', 1000); 762 763# check special-1 success: 1 764UPDATE t1 SET f_charbig = ''; 765 766# check special-2 success: 1 767UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 768INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 769SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 770WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 771INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 772SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 773'just inserted' FROM t0_template 774WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 775CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 776BEGIN 777UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 778f_charbig = 'updated by trigger' 779 WHERE f_int1 = new.f_int1; 780END| 781INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 782SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 784 785# check trigger-1 success: 1 786DROP TRIGGER trg_1; 787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 788f_int2 = CAST(f_char1 AS SIGNED INT), 789f_charbig = 'just inserted' 790 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 791DELETE FROM t0_aux 792WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 793INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 794SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 795'just inserted' FROM t0_template 796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 797CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 798BEGIN 799UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 800f_charbig = 'updated by trigger' 801 WHERE f_int1 = new.f_int1; 802END| 803INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 804SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 806 807# check trigger-2 success: 1 808DROP TRIGGER trg_1; 809UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 810f_int2 = CAST(f_char1 AS SIGNED INT), 811f_charbig = 'just inserted' 812 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 813DELETE FROM t0_aux 814WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 815INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 816SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 817'just inserted' FROM t0_template 818WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 819CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 820BEGIN 821UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 822f_charbig = 'updated by trigger' 823 WHERE f_int1 = new.f_int1; 824END| 825UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 826WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 827 828# check trigger-3 success: 1 829DROP TRIGGER trg_1; 830UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 831f_int2 = CAST(f_char1 AS SIGNED INT), 832f_charbig = 'just inserted' 833 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 834DELETE FROM t0_aux 835WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 836INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 837SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 838'just inserted' FROM t0_template 839WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 840CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 841BEGIN 842UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 843f_charbig = 'updated by trigger' 844 WHERE f_int1 = - old.f_int1; 845END| 846UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 847WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 848 849# check trigger-4 success: 1 850DROP TRIGGER trg_1; 851UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 852f_int2 = CAST(f_char1 AS SIGNED INT), 853f_charbig = 'just inserted' 854 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 855DELETE FROM t0_aux 856WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 857INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 858SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 859'just inserted' FROM t0_template 860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 861CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 862BEGIN 863UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 864f_charbig = 'updated by trigger' 865 WHERE f_int1 = new.f_int1; 866END| 867UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 868WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 869 870# check trigger-5 success: 1 871DROP TRIGGER trg_1; 872UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 873f_int2 = CAST(f_char1 AS SIGNED INT), 874f_charbig = 'just inserted' 875 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 876DELETE FROM t0_aux 877WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 878INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 879SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 880'just inserted' FROM t0_template 881WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 882CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 883BEGIN 884UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 885f_charbig = 'updated by trigger' 886 WHERE f_int1 = - old.f_int1; 887END| 888UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 889WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 890 891# check trigger-6 success: 1 892DROP TRIGGER trg_1; 893UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 894f_int2 = CAST(f_char1 AS SIGNED INT), 895f_charbig = 'just inserted' 896 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 897DELETE FROM t0_aux 898WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 899INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 900SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 901'just inserted' FROM t0_template 902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 903CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 904BEGIN 905UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 906f_charbig = 'updated by trigger' 907 WHERE f_int1 = - old.f_int1; 908END| 909DELETE FROM t0_aux 910WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 911 912# check trigger-7 success: 1 913DROP TRIGGER trg_1; 914UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 915f_int2 = CAST(f_char1 AS SIGNED INT), 916f_charbig = 'just inserted' 917 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 918DELETE FROM t0_aux 919WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 920INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 921SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 922'just inserted' FROM t0_template 923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 924CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 925BEGIN 926UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 927f_charbig = 'updated by trigger' 928 WHERE f_int1 = - old.f_int1; 929END| 930DELETE FROM t0_aux 931WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 932 933# check trigger-8 success: 1 934DROP TRIGGER trg_1; 935UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 936f_int2 = CAST(f_char1 AS SIGNED INT), 937f_charbig = 'just inserted' 938 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 939DELETE FROM t0_aux 940WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 941DELETE FROM t1 942WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 943CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 944BEGIN 945SET new.f_int1 = old.f_int1 + @max_row, 946new.f_int2 = old.f_int2 - @max_row, 947new.f_charbig = '####updated per update trigger####'; 948END| 949UPDATE t1 950SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 951f_charbig = '####updated per update statement itself####'; 952Warnings: 953Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 954 955# check trigger-9 success: 1 956DROP TRIGGER trg_2; 957UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 958f_int2 = CAST(f_char1 AS SIGNED INT), 959f_charbig = CONCAT('===',f_char1,'==='); 960Warnings: 961Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 962CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 963BEGIN 964SET new.f_int1 = new.f_int1 + @max_row, 965new.f_int2 = new.f_int2 - @max_row, 966new.f_charbig = '####updated per update trigger####'; 967END| 968UPDATE t1 969SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 970f_charbig = '####updated per update statement itself####'; 971Warnings: 972Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 973 974# check trigger-10 success: 1 975DROP TRIGGER trg_2; 976UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 977f_int2 = CAST(f_char1 AS SIGNED INT), 978f_charbig = CONCAT('===',f_char1,'==='); 979Warnings: 980Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 981CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 982BEGIN 983SET new.f_int1 = @my_max1 + @counter, 984new.f_int2 = @my_min2 - @counter, 985new.f_charbig = '####updated per insert trigger####'; 986SET @counter = @counter + 1; 987END| 988SET @counter = 1; 989SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 990Warnings: 991Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 992INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 993SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 994CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 996ORDER BY f_int1; 997DROP TRIGGER trg_3; 998 999# check trigger-11 success: 1 1000Warnings: 1001Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1002DELETE FROM t1 1003WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1004AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1005AND f_charbig = '####updated per insert trigger####'; 1006CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1007BEGIN 1008SET new.f_int1 = @my_max1 + @counter, 1009new.f_int2 = @my_min2 - @counter, 1010new.f_charbig = '####updated per insert trigger####'; 1011SET @counter = @counter + 1; 1012END| 1013SET @counter = 1; 1014SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1015Warnings: 1016Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1017INSERT INTO t1 (f_char1, f_char2, f_charbig) 1018SELECT CAST(f_int1 AS CHAR), 1019CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1021ORDER BY f_int1; 1022DROP TRIGGER trg_3; 1023 1024# check trigger-12 success: 1 1025Warnings: 1026Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1027DELETE FROM t1 1028WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1029AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1030AND f_charbig = '####updated per insert trigger####'; 1031ANALYZE TABLE t1; 1032Table Op Msg_type Msg_text 1033test.t1 analyze status OK 1034test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1035CHECK TABLE t1 EXTENDED; 1036Table Op Msg_type Msg_text 1037test.t1 check status OK 1038test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1039CHECKSUM TABLE t1 EXTENDED; 1040Table Checksum 1041test.t1 <some_value> 1042OPTIMIZE TABLE t1; 1043Table Op Msg_type Msg_text 1044test.t1 optimize status OK 1045test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1046# check layout success: 1 1047REPAIR TABLE t1 EXTENDED; 1048Table Op Msg_type Msg_text 1049test.t1 repair status OK 1050test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1051# check layout success: 1 1052TRUNCATE t1; 1053Warnings: 1054Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1055 1056# check TRUNCATE success: 1 1057# check layout success: 1 1058# End usability test (inc/partition_check.inc) 1059DROP TABLE t1; 1060CREATE TABLE t1 ( 1061f_int1 INTEGER, 1062f_int2 INTEGER, 1063f_char1 CHAR(20), 1064f_char2 CHAR(20), 1065f_charbig VARCHAR(1000) 1066 1067) 1068PARTITION BY LIST(MOD(f_int1,4)) 1069(PARTITION part_3 VALUES IN (-3), 1070PARTITION part_2 VALUES IN (-2), 1071PARTITION part_1 VALUES IN (-1), 1072PARTITION part_N VALUES IN (NULL), 1073PARTITION part0 VALUES IN (0), 1074PARTITION part1 VALUES IN (1), 1075PARTITION part2 VALUES IN (2), 1076PARTITION part3 VALUES IN (3)); 1077Warnings: 1078Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1079INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1080SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1081WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 1082Warnings: 1083Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1084ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 1085Warnings: 1086Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1088SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1089WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 1090Warnings: 1091Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1092# Start usability test (inc/partition_check.inc) 1093create_command 1094SHOW CREATE TABLE t1; 1095Table Create Table 1096t1 CREATE TABLE `t1` ( 1097 `f_int1` int(11) DEFAULT NULL, 1098 `f_int2` mediumint(9) DEFAULT NULL, 1099 `f_char1` char(20) DEFAULT NULL, 1100 `f_char2` char(20) DEFAULT NULL, 1101 `f_charbig` varchar(1000) DEFAULT NULL 1102) ENGINE=MyISAM DEFAULT CHARSET=latin1 1103/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 1104(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 1105 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 1106 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 1107 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 1108 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 1109 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 1110 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 1111 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 1112 1113unified filelist 1114t1#P#part0.MYD 1115t1#P#part0.MYI 1116t1#P#part1.MYD 1117t1#P#part1.MYI 1118t1#P#part2.MYD 1119t1#P#part2.MYI 1120t1#P#part3.MYD 1121t1#P#part3.MYI 1122t1#P#part_1.MYD 1123t1#P#part_1.MYI 1124t1#P#part_2.MYD 1125t1#P#part_2.MYI 1126t1#P#part_3.MYD 1127t1#P#part_3.MYI 1128t1#P#part_N.MYD 1129t1#P#part_N.MYI 1130t1.frm 1131t1.par 1132 1133# check prerequisites-1 success: 1 1134# check COUNT(*) success: 1 1135# check MIN/MAX(f_int1) success: 1 1136# check MIN/MAX(f_int2) success: 1 1137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1138SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1139CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1140WHERE f_int1 IN (2,3); 1141# check prerequisites-3 success: 1 1142DELETE FROM t1 WHERE f_charbig = 'delete me'; 1143# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1144# check read via f_int1 success: 1 1145# check read via f_int2 success: 1 1146 1147# check multiple-1 success: 1 1148DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1149 1150# check multiple-2 success: 1 1151INSERT INTO t1 SELECT * FROM t0_template 1152WHERE MOD(f_int1,3) = 0; 1153 1154# check multiple-3 success: 1 1155UPDATE t1 SET f_int1 = f_int1 + @max_row 1156WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1157AND @max_row_div2 + @max_row_div4; 1158 1159# check multiple-4 success: 1 1160DELETE FROM t1 1161WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1162AND @max_row_div2 + @max_row_div4 + @max_row; 1163 1164# check multiple-5 success: 1 1165SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1166INSERT INTO t1 1167SET f_int1 = @cur_value , f_int2 = @cur_value, 1168f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1169f_charbig = '#SINGLE#'; 1170 1171# check single-1 success: 1 1172SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1173INSERT INTO t1 1174SET f_int1 = @cur_value , f_int2 = @cur_value, 1175f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1176f_charbig = '#SINGLE#'; 1177 1178# check single-2 success: 1 1179SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1180SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1181UPDATE t1 SET f_int1 = @cur_value2 1182WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1183 1184# check single-3 success: 1 1185SET @cur_value1= -1; 1186SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1187UPDATE t1 SET f_int1 = @cur_value1 1188WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1189 1190# check single-4 success: 1 1191SELECT MAX(f_int1) INTO @cur_value FROM t1; 1192DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1193 1194# check single-5 success: 1 1195DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1196 1197# check single-6 success: 1 1198INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1199Warnings: 1200Warning 1264 Out of range value for column 'f_int2' at row 1 1201 1202# check single-7 success: 1 1203DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 1204DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1205INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1206f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1207f_charbig = '#NULL#'; 1208INSERT INTO t1 1209SET f_int1 = NULL , f_int2 = -@max_row, 1210f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1211f_charbig = '#NULL#'; 1212# check null success: 1 1213 1214# check null-1 success: 1 1215UPDATE t1 SET f_int1 = -@max_row 1216WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1217AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1218 1219# check null-2 success: 1 1220UPDATE t1 SET f_int1 = NULL 1221WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1222AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1223 1224# check null-3 success: 1 1225DELETE FROM t1 1226WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1227AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1228 1229# check null-4 success: 1 1230DELETE FROM t1 1231WHERE f_int1 = 0 AND f_int2 = 0 1232AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1233AND f_charbig = '#NULL#'; 1234SET AUTOCOMMIT= 0; 1235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1236SELECT f_int1, f_int1, '', '', 'was inserted' 1237FROM t0_template source_tab 1238WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1239 1240# check transactions-1 success: 1 1241COMMIT WORK; 1242 1243# check transactions-2 success: 1 1244ROLLBACK WORK; 1245 1246# check transactions-3 success: 1 1247DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1248COMMIT WORK; 1249ROLLBACK WORK; 1250 1251# check transactions-4 success: 1 1252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1253SELECT f_int1, f_int1, '', '', 'was inserted' 1254FROM t0_template source_tab 1255WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1256 1257# check transactions-5 success: 1 1258ROLLBACK WORK; 1259Warnings: 1260Warning 1196 Some non-transactional changed tables couldn't be rolled back 1261 1262# check transactions-6 success: 1 1263# INFO: Storage engine used for t1 seems to be not transactional. 1264COMMIT; 1265 1266# check transactions-7 success: 1 1267DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1268COMMIT WORK; 1269SET @@session.sql_mode = 'traditional'; 1270Warnings: 1271Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1272SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1273INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1274SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1275'', '', 'was inserted' FROM t0_template 1276WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1277ERROR 22012: Division by 0 1278COMMIT; 1279 1280# check transactions-8 success: 1 1281# INFO: Storage engine used for t1 seems to be unable to revert 1282# changes made by the failing statement. 1283SET @@session.sql_mode = ''; 1284Warnings: 1285Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1286SET AUTOCOMMIT= 1; 1287DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1288COMMIT WORK; 1289UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1290 1291# check special-1 success: 1 1292UPDATE t1 SET f_charbig = ''; 1293 1294# check special-2 success: 1 1295UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1296INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1297SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1298WHERE 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 BEFORE INSERT 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 = new.f_int1; 1308END| 1309INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1310SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1312 1313# check trigger-1 success: 1 1314DROP TRIGGER trg_1; 1315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1316f_int2 = CAST(f_char1 AS SIGNED INT), 1317f_charbig = 'just inserted' 1318 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1319DELETE FROM t0_aux 1320WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1321INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1322SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1323'just inserted' FROM t0_template 1324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1325CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1326BEGIN 1327UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1328f_charbig = 'updated by trigger' 1329 WHERE f_int1 = new.f_int1; 1330END| 1331INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1332SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1334 1335# check trigger-2 success: 1 1336DROP TRIGGER trg_1; 1337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1338f_int2 = CAST(f_char1 AS SIGNED INT), 1339f_charbig = 'just inserted' 1340 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1341DELETE FROM t0_aux 1342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1345'just inserted' FROM t0_template 1346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1347CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1348BEGIN 1349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1350f_charbig = 'updated by trigger' 1351 WHERE f_int1 = new.f_int1; 1352END| 1353UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1355 1356# check trigger-3 success: 1 1357DROP TRIGGER trg_1; 1358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1359f_int2 = CAST(f_char1 AS SIGNED INT), 1360f_charbig = 'just inserted' 1361 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1362DELETE FROM t0_aux 1363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1366'just inserted' FROM t0_template 1367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1368CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1369BEGIN 1370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1371f_charbig = 'updated by trigger' 1372 WHERE f_int1 = - old.f_int1; 1373END| 1374UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1376 1377# check trigger-4 success: 1 1378DROP TRIGGER trg_1; 1379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1380f_int2 = CAST(f_char1 AS SIGNED INT), 1381f_charbig = 'just inserted' 1382 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1383DELETE FROM t0_aux 1384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1385INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1386SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1387'just inserted' FROM t0_template 1388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1389CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1390BEGIN 1391UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1392f_charbig = 'updated by trigger' 1393 WHERE f_int1 = new.f_int1; 1394END| 1395UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1396WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1397 1398# check trigger-5 success: 1 1399DROP TRIGGER trg_1; 1400UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1401f_int2 = CAST(f_char1 AS SIGNED INT), 1402f_charbig = 'just inserted' 1403 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1404DELETE FROM t0_aux 1405WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1406INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1407SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1408'just inserted' FROM t0_template 1409WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1410CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1411BEGIN 1412UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1413f_charbig = 'updated by trigger' 1414 WHERE f_int1 = - old.f_int1; 1415END| 1416UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1417WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1418 1419# check trigger-6 success: 1 1420DROP TRIGGER trg_1; 1421UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1422f_int2 = CAST(f_char1 AS SIGNED INT), 1423f_charbig = 'just inserted' 1424 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1425DELETE FROM t0_aux 1426WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1427INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1428SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1429'just inserted' FROM t0_template 1430WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1431CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1432BEGIN 1433UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1434f_charbig = 'updated by trigger' 1435 WHERE f_int1 = - old.f_int1; 1436END| 1437DELETE FROM t0_aux 1438WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1439 1440# check trigger-7 success: 1 1441DROP TRIGGER trg_1; 1442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1443f_int2 = CAST(f_char1 AS SIGNED INT), 1444f_charbig = 'just inserted' 1445 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1446DELETE FROM t0_aux 1447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1448INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1449SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1450'just inserted' FROM t0_template 1451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1452CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1453BEGIN 1454UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1455f_charbig = 'updated by trigger' 1456 WHERE f_int1 = - old.f_int1; 1457END| 1458DELETE FROM t0_aux 1459WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1460 1461# check trigger-8 success: 1 1462DROP TRIGGER trg_1; 1463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1464f_int2 = CAST(f_char1 AS SIGNED INT), 1465f_charbig = 'just inserted' 1466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1467DELETE FROM t0_aux 1468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1469DELETE FROM t1 1470WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1471CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1472BEGIN 1473SET new.f_int1 = old.f_int1 + @max_row, 1474new.f_int2 = old.f_int2 - @max_row, 1475new.f_charbig = '####updated per update trigger####'; 1476END| 1477UPDATE t1 1478SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1479f_charbig = '####updated per update statement itself####'; 1480Warnings: 1481Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1482 1483# check trigger-9 success: 1 1484DROP TRIGGER trg_2; 1485UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1486f_int2 = CAST(f_char1 AS SIGNED INT), 1487f_charbig = CONCAT('===',f_char1,'==='); 1488Warnings: 1489Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1490CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1491BEGIN 1492SET new.f_int1 = new.f_int1 + @max_row, 1493new.f_int2 = new.f_int2 - @max_row, 1494new.f_charbig = '####updated per update trigger####'; 1495END| 1496UPDATE t1 1497SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1498f_charbig = '####updated per update statement itself####'; 1499Warnings: 1500Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1501 1502# check trigger-10 success: 1 1503DROP TRIGGER trg_2; 1504UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1505f_int2 = CAST(f_char1 AS SIGNED INT), 1506f_charbig = CONCAT('===',f_char1,'==='); 1507Warnings: 1508Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1509CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1510BEGIN 1511SET new.f_int1 = @my_max1 + @counter, 1512new.f_int2 = @my_min2 - @counter, 1513new.f_charbig = '####updated per insert trigger####'; 1514SET @counter = @counter + 1; 1515END| 1516SET @counter = 1; 1517SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1518Warnings: 1519Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1520INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1521SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1522CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1523WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1524ORDER BY f_int1; 1525DROP TRIGGER trg_3; 1526 1527# check trigger-11 success: 1 1528Warnings: 1529Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1530DELETE FROM t1 1531WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1532AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1533AND f_charbig = '####updated per insert trigger####'; 1534CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1535BEGIN 1536SET new.f_int1 = @my_max1 + @counter, 1537new.f_int2 = @my_min2 - @counter, 1538new.f_charbig = '####updated per insert trigger####'; 1539SET @counter = @counter + 1; 1540END| 1541SET @counter = 1; 1542SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1543Warnings: 1544Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1545INSERT INTO t1 (f_char1, f_char2, f_charbig) 1546SELECT CAST(f_int1 AS CHAR), 1547CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1549ORDER BY f_int1; 1550DROP TRIGGER trg_3; 1551 1552# check trigger-12 success: 1 1553Warnings: 1554Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1555DELETE FROM t1 1556WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1557AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1558AND f_charbig = '####updated per insert trigger####'; 1559ANALYZE TABLE t1; 1560Table Op Msg_type Msg_text 1561test.t1 analyze status OK 1562test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1563CHECK TABLE t1 EXTENDED; 1564Table Op Msg_type Msg_text 1565test.t1 check status OK 1566test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1567CHECKSUM TABLE t1 EXTENDED; 1568Table Checksum 1569test.t1 <some_value> 1570OPTIMIZE TABLE t1; 1571Table Op Msg_type Msg_text 1572test.t1 optimize status OK 1573test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1574# check layout success: 1 1575REPAIR TABLE t1 EXTENDED; 1576Table Op Msg_type Msg_text 1577test.t1 repair status OK 1578test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1579# check layout success: 1 1580TRUNCATE t1; 1581Warnings: 1582Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1583 1584# check TRUNCATE success: 1 1585# check layout success: 1 1586# End usability test (inc/partition_check.inc) 1587DROP TABLE t1; 1588CREATE TABLE t1 ( 1589f_int1 INTEGER, 1590f_int2 INTEGER, 1591f_char1 CHAR(20), 1592f_char2 CHAR(20), 1593f_charbig VARCHAR(1000) 1594 1595) 1596PARTITION BY RANGE(f_int1) 1597(PARTITION parta VALUES LESS THAN (0), 1598PARTITION partb VALUES LESS THAN (5), 1599PARTITION partc VALUES LESS THAN (10), 1600PARTITION partd VALUES LESS THAN (10 + 5), 1601PARTITION parte VALUES LESS THAN (20), 1602PARTITION partf VALUES LESS THAN (2147483646)); 1603Warnings: 1604Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1605INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1606SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1607WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 1608Warnings: 1609Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1610ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 1611Warnings: 1612Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1613INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1614SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1615WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 1616Warnings: 1617Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1618# Start usability test (inc/partition_check.inc) 1619create_command 1620SHOW CREATE TABLE t1; 1621Table Create Table 1622t1 CREATE TABLE `t1` ( 1623 `f_int1` int(11) DEFAULT NULL, 1624 `f_int2` mediumint(9) DEFAULT NULL, 1625 `f_char1` char(20) DEFAULT NULL, 1626 `f_char2` char(20) DEFAULT NULL, 1627 `f_charbig` varchar(1000) DEFAULT NULL 1628) ENGINE=MyISAM DEFAULT CHARSET=latin1 1629/*!50100 PARTITION BY RANGE (f_int1) 1630(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 1631 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 1632 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 1633 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 1634 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 1635 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 1636 1637unified filelist 1638t1#P#parta.MYD 1639t1#P#parta.MYI 1640t1#P#partb.MYD 1641t1#P#partb.MYI 1642t1#P#partc.MYD 1643t1#P#partc.MYI 1644t1#P#partd.MYD 1645t1#P#partd.MYI 1646t1#P#parte.MYD 1647t1#P#parte.MYI 1648t1#P#partf.MYD 1649t1#P#partf.MYI 1650t1.frm 1651t1.par 1652 1653# check prerequisites-1 success: 1 1654# check COUNT(*) success: 1 1655# check MIN/MAX(f_int1) success: 1 1656# check MIN/MAX(f_int2) success: 1 1657INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1658SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1659CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1660WHERE f_int1 IN (2,3); 1661# check prerequisites-3 success: 1 1662DELETE FROM t1 WHERE f_charbig = 'delete me'; 1663# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1664# check read via f_int1 success: 1 1665# check read via f_int2 success: 1 1666 1667# check multiple-1 success: 1 1668DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1669 1670# check multiple-2 success: 1 1671INSERT INTO t1 SELECT * FROM t0_template 1672WHERE MOD(f_int1,3) = 0; 1673 1674# check multiple-3 success: 1 1675UPDATE t1 SET f_int1 = f_int1 + @max_row 1676WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1677AND @max_row_div2 + @max_row_div4; 1678 1679# check multiple-4 success: 1 1680DELETE FROM t1 1681WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1682AND @max_row_div2 + @max_row_div4 + @max_row; 1683 1684# check multiple-5 success: 1 1685SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1686INSERT INTO t1 1687SET f_int1 = @cur_value , f_int2 = @cur_value, 1688f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1689f_charbig = '#SINGLE#'; 1690 1691# check single-1 success: 1 1692SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1693INSERT INTO t1 1694SET f_int1 = @cur_value , f_int2 = @cur_value, 1695f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1696f_charbig = '#SINGLE#'; 1697 1698# check single-2 success: 1 1699SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1700SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1701UPDATE t1 SET f_int1 = @cur_value2 1702WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1703 1704# check single-3 success: 1 1705SET @cur_value1= -1; 1706SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1707UPDATE t1 SET f_int1 = @cur_value1 1708WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1709 1710# check single-4 success: 1 1711SELECT MAX(f_int1) INTO @cur_value FROM t1; 1712DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1713 1714# check single-5 success: 1 1715DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1716 1717# check single-6 success: 1 1718INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1719ERROR HY000: Table has no partition for value 2147483647 1720DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1721INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1722f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1723f_charbig = '#NULL#'; 1724INSERT INTO t1 1725SET f_int1 = NULL , f_int2 = -@max_row, 1726f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1727f_charbig = '#NULL#'; 1728# check null success: 1 1729 1730# check null-1 success: 1 1731UPDATE t1 SET f_int1 = -@max_row 1732WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1733AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1734 1735# check null-2 success: 1 1736UPDATE t1 SET f_int1 = NULL 1737WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1738AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1739 1740# check null-3 success: 1 1741DELETE FROM t1 1742WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1743AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1744 1745# check null-4 success: 1 1746DELETE FROM t1 1747WHERE f_int1 = 0 AND f_int2 = 0 1748AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1749AND f_charbig = '#NULL#'; 1750SET AUTOCOMMIT= 0; 1751INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1752SELECT f_int1, f_int1, '', '', 'was inserted' 1753FROM t0_template source_tab 1754WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1755 1756# check transactions-1 success: 1 1757COMMIT WORK; 1758 1759# check transactions-2 success: 1 1760ROLLBACK WORK; 1761 1762# check transactions-3 success: 1 1763DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1764COMMIT WORK; 1765ROLLBACK WORK; 1766 1767# check transactions-4 success: 1 1768INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1769SELECT f_int1, f_int1, '', '', 'was inserted' 1770FROM t0_template source_tab 1771WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1772 1773# check transactions-5 success: 1 1774ROLLBACK WORK; 1775Warnings: 1776Warning 1196 Some non-transactional changed tables couldn't be rolled back 1777 1778# check transactions-6 success: 1 1779# INFO: Storage engine used for t1 seems to be not transactional. 1780COMMIT; 1781 1782# check transactions-7 success: 1 1783DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1784COMMIT WORK; 1785SET @@session.sql_mode = 'traditional'; 1786Warnings: 1787Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1788SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1789INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1790SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1791'', '', 'was inserted' FROM t0_template 1792WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1793ERROR 22012: Division by 0 1794COMMIT; 1795 1796# check transactions-8 success: 1 1797# INFO: Storage engine used for t1 seems to be unable to revert 1798# changes made by the failing statement. 1799SET @@session.sql_mode = ''; 1800Warnings: 1801Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1802SET AUTOCOMMIT= 1; 1803DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1804COMMIT WORK; 1805UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1806 1807# check special-1 success: 1 1808UPDATE t1 SET f_charbig = ''; 1809 1810# check special-2 success: 1 1811UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1812INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1813SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1815INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1816SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1817'just inserted' FROM t0_template 1818WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1819CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1820BEGIN 1821UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1822f_charbig = 'updated by trigger' 1823 WHERE f_int1 = new.f_int1; 1824END| 1825INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1826SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1828 1829# check trigger-1 success: 1 1830DROP TRIGGER trg_1; 1831UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1832f_int2 = CAST(f_char1 AS SIGNED INT), 1833f_charbig = 'just inserted' 1834 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1835DELETE FROM t0_aux 1836WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1837INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1838SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1839'just inserted' FROM t0_template 1840WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1841CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1842BEGIN 1843UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1844f_charbig = 'updated by trigger' 1845 WHERE f_int1 = new.f_int1; 1846END| 1847INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1848SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1849WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1850 1851# check trigger-2 success: 1 1852DROP TRIGGER trg_1; 1853UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1854f_int2 = CAST(f_char1 AS SIGNED INT), 1855f_charbig = 'just inserted' 1856 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1857DELETE FROM t0_aux 1858WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1859INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1860SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1861'just inserted' FROM t0_template 1862WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1863CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1864BEGIN 1865UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1866f_charbig = 'updated by trigger' 1867 WHERE f_int1 = new.f_int1; 1868END| 1869UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1870WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1871 1872# check trigger-3 success: 1 1873DROP TRIGGER trg_1; 1874UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1875f_int2 = CAST(f_char1 AS SIGNED INT), 1876f_charbig = 'just inserted' 1877 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1878DELETE FROM t0_aux 1879WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1881SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1882'just inserted' FROM t0_template 1883WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1884CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1885BEGIN 1886UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1887f_charbig = 'updated by trigger' 1888 WHERE f_int1 = - old.f_int1; 1889END| 1890UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1891WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1892 1893# check trigger-4 success: 1 1894DROP TRIGGER trg_1; 1895UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1896f_int2 = CAST(f_char1 AS SIGNED INT), 1897f_charbig = 'just inserted' 1898 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1899DELETE FROM t0_aux 1900WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1901INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1902SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1903'just inserted' FROM t0_template 1904WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1905CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1906BEGIN 1907UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1908f_charbig = 'updated by trigger' 1909 WHERE f_int1 = new.f_int1; 1910END| 1911UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1912WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1913 1914# check trigger-5 success: 1 1915DROP TRIGGER trg_1; 1916UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1917f_int2 = CAST(f_char1 AS SIGNED INT), 1918f_charbig = 'just inserted' 1919 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1920DELETE FROM t0_aux 1921WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1922INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1923SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1924'just inserted' FROM t0_template 1925WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1926CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1927BEGIN 1928UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1929f_charbig = 'updated by trigger' 1930 WHERE f_int1 = - old.f_int1; 1931END| 1932UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1933WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1934 1935# check trigger-6 success: 1 1936DROP TRIGGER trg_1; 1937UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1938f_int2 = CAST(f_char1 AS SIGNED INT), 1939f_charbig = 'just inserted' 1940 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1941DELETE FROM t0_aux 1942WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1943INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1944SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1945'just inserted' FROM t0_template 1946WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1947CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1948BEGIN 1949UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1950f_charbig = 'updated by trigger' 1951 WHERE f_int1 = - old.f_int1; 1952END| 1953DELETE FROM t0_aux 1954WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1955 1956# check trigger-7 success: 1 1957DROP TRIGGER trg_1; 1958UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1959f_int2 = CAST(f_char1 AS SIGNED INT), 1960f_charbig = 'just inserted' 1961 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1962DELETE FROM t0_aux 1963WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1964INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1965SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1966'just inserted' FROM t0_template 1967WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1968CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1969BEGIN 1970UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1971f_charbig = 'updated by trigger' 1972 WHERE f_int1 = - old.f_int1; 1973END| 1974DELETE FROM t0_aux 1975WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1976 1977# check trigger-8 success: 1 1978DROP TRIGGER trg_1; 1979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1980f_int2 = CAST(f_char1 AS SIGNED INT), 1981f_charbig = 'just inserted' 1982 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1983DELETE FROM t0_aux 1984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1985DELETE FROM t1 1986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1987CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1988BEGIN 1989SET new.f_int1 = old.f_int1 + @max_row, 1990new.f_int2 = old.f_int2 - @max_row, 1991new.f_charbig = '####updated per update trigger####'; 1992END| 1993UPDATE t1 1994SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1995f_charbig = '####updated per update statement itself####'; 1996Warnings: 1997Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1998 1999# check trigger-9 success: 1 2000DROP TRIGGER trg_2; 2001UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2002f_int2 = CAST(f_char1 AS SIGNED INT), 2003f_charbig = CONCAT('===',f_char1,'==='); 2004Warnings: 2005Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2006CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2007BEGIN 2008SET new.f_int1 = new.f_int1 + @max_row, 2009new.f_int2 = new.f_int2 - @max_row, 2010new.f_charbig = '####updated per update trigger####'; 2011END| 2012UPDATE t1 2013SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2014f_charbig = '####updated per update statement itself####'; 2015Warnings: 2016Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2017 2018# check trigger-10 success: 1 2019DROP TRIGGER trg_2; 2020UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2021f_int2 = CAST(f_char1 AS SIGNED INT), 2022f_charbig = CONCAT('===',f_char1,'==='); 2023Warnings: 2024Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2025CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2026BEGIN 2027SET new.f_int1 = @my_max1 + @counter, 2028new.f_int2 = @my_min2 - @counter, 2029new.f_charbig = '####updated per insert trigger####'; 2030SET @counter = @counter + 1; 2031END| 2032SET @counter = 1; 2033SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2034Warnings: 2035Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2036INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2037SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2038CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2040ORDER BY f_int1; 2041DROP TRIGGER trg_3; 2042 2043# check trigger-11 success: 1 2044Warnings: 2045Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2046DELETE FROM t1 2047WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2048AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2049AND f_charbig = '####updated per insert trigger####'; 2050CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2051BEGIN 2052SET new.f_int1 = @my_max1 + @counter, 2053new.f_int2 = @my_min2 - @counter, 2054new.f_charbig = '####updated per insert trigger####'; 2055SET @counter = @counter + 1; 2056END| 2057SET @counter = 1; 2058SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2059Warnings: 2060Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2061INSERT INTO t1 (f_char1, f_char2, f_charbig) 2062SELECT CAST(f_int1 AS CHAR), 2063CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2064WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2065ORDER BY f_int1; 2066DROP TRIGGER trg_3; 2067 2068# check trigger-12 success: 1 2069Warnings: 2070Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2071DELETE FROM t1 2072WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2073AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2074AND f_charbig = '####updated per insert trigger####'; 2075ANALYZE TABLE t1; 2076Table Op Msg_type Msg_text 2077test.t1 analyze status OK 2078test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2079CHECK TABLE t1 EXTENDED; 2080Table Op Msg_type Msg_text 2081test.t1 check status OK 2082test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2083CHECKSUM TABLE t1 EXTENDED; 2084Table Checksum 2085test.t1 <some_value> 2086OPTIMIZE TABLE t1; 2087Table Op Msg_type Msg_text 2088test.t1 optimize status OK 2089test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2090# check layout success: 1 2091REPAIR TABLE t1 EXTENDED; 2092Table Op Msg_type Msg_text 2093test.t1 repair status OK 2094test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2095# check layout success: 1 2096TRUNCATE t1; 2097Warnings: 2098Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2099 2100# check TRUNCATE success: 1 2101# check layout success: 1 2102# End usability test (inc/partition_check.inc) 2103DROP TABLE t1; 2104CREATE TABLE t1 ( 2105f_int1 INTEGER, 2106f_int2 INTEGER, 2107f_char1 CHAR(20), 2108f_char2 CHAR(20), 2109f_charbig VARCHAR(1000) 2110 2111) 2112PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 2113(PARTITION parta VALUES LESS THAN (0), 2114PARTITION partb VALUES LESS THAN (5), 2115PARTITION partc VALUES LESS THAN (10), 2116PARTITION partd VALUES LESS THAN (2147483646)); 2117Warnings: 2118Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2119INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2120SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2121WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 2122Warnings: 2123Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2124ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 2125Warnings: 2126Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2127INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2128SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2129WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 2130Warnings: 2131Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2132# Start usability test (inc/partition_check.inc) 2133create_command 2134SHOW CREATE TABLE t1; 2135Table Create Table 2136t1 CREATE TABLE `t1` ( 2137 `f_int1` int(11) DEFAULT NULL, 2138 `f_int2` mediumint(9) DEFAULT NULL, 2139 `f_char1` char(20) DEFAULT NULL, 2140 `f_char2` char(20) DEFAULT NULL, 2141 `f_charbig` varchar(1000) DEFAULT NULL 2142) ENGINE=MyISAM DEFAULT CHARSET=latin1 2143/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 2144SUBPARTITION BY HASH (f_int1) 2145SUBPARTITIONS 2 2146(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 2147 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 2148 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 2149 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 2150 2151unified filelist 2152t1#P#parta#SP#partasp0.MYD 2153t1#P#parta#SP#partasp0.MYI 2154t1#P#parta#SP#partasp1.MYD 2155t1#P#parta#SP#partasp1.MYI 2156t1#P#partb#SP#partbsp0.MYD 2157t1#P#partb#SP#partbsp0.MYI 2158t1#P#partb#SP#partbsp1.MYD 2159t1#P#partb#SP#partbsp1.MYI 2160t1#P#partc#SP#partcsp0.MYD 2161t1#P#partc#SP#partcsp0.MYI 2162t1#P#partc#SP#partcsp1.MYD 2163t1#P#partc#SP#partcsp1.MYI 2164t1#P#partd#SP#partdsp0.MYD 2165t1#P#partd#SP#partdsp0.MYI 2166t1#P#partd#SP#partdsp1.MYD 2167t1#P#partd#SP#partdsp1.MYI 2168t1.frm 2169t1.par 2170 2171# check prerequisites-1 success: 1 2172# check COUNT(*) success: 1 2173# check MIN/MAX(f_int1) success: 1 2174# check MIN/MAX(f_int2) success: 1 2175INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2176SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2177CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2178WHERE f_int1 IN (2,3); 2179# check prerequisites-3 success: 1 2180DELETE FROM t1 WHERE f_charbig = 'delete me'; 2181# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2182# check read via f_int1 success: 1 2183# check read via f_int2 success: 1 2184 2185# check multiple-1 success: 1 2186DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2187 2188# check multiple-2 success: 1 2189INSERT INTO t1 SELECT * FROM t0_template 2190WHERE MOD(f_int1,3) = 0; 2191 2192# check multiple-3 success: 1 2193UPDATE t1 SET f_int1 = f_int1 + @max_row 2194WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2195AND @max_row_div2 + @max_row_div4; 2196 2197# check multiple-4 success: 1 2198DELETE FROM t1 2199WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2200AND @max_row_div2 + @max_row_div4 + @max_row; 2201 2202# check multiple-5 success: 1 2203SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2204INSERT INTO t1 2205SET f_int1 = @cur_value , f_int2 = @cur_value, 2206f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2207f_charbig = '#SINGLE#'; 2208 2209# check single-1 success: 1 2210SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2211INSERT INTO t1 2212SET f_int1 = @cur_value , f_int2 = @cur_value, 2213f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2214f_charbig = '#SINGLE#'; 2215 2216# check single-2 success: 1 2217SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2218SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2219UPDATE t1 SET f_int1 = @cur_value2 2220WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2221 2222# check single-3 success: 1 2223SET @cur_value1= -1; 2224SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2225UPDATE t1 SET f_int1 = @cur_value1 2226WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2227 2228# check single-4 success: 1 2229SELECT MAX(f_int1) INTO @cur_value FROM t1; 2230DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2231 2232# check single-5 success: 1 2233DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2234 2235# check single-6 success: 1 2236INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2237Warnings: 2238Warning 1264 Out of range value for column 'f_int2' at row 1 2239 2240# check single-7 success: 1 2241DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 2242DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2243INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2244f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2245f_charbig = '#NULL#'; 2246INSERT INTO t1 2247SET f_int1 = NULL , f_int2 = -@max_row, 2248f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2249f_charbig = '#NULL#'; 2250# check null success: 1 2251 2252# check null-1 success: 1 2253UPDATE t1 SET f_int1 = -@max_row 2254WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2255AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2256 2257# check null-2 success: 1 2258UPDATE t1 SET f_int1 = NULL 2259WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2260AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2261 2262# check null-3 success: 1 2263DELETE FROM t1 2264WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2265AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2266 2267# check null-4 success: 1 2268DELETE FROM t1 2269WHERE f_int1 = 0 AND f_int2 = 0 2270AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2271AND f_charbig = '#NULL#'; 2272SET AUTOCOMMIT= 0; 2273INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2274SELECT f_int1, f_int1, '', '', 'was inserted' 2275FROM t0_template source_tab 2276WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2277 2278# check transactions-1 success: 1 2279COMMIT WORK; 2280 2281# check transactions-2 success: 1 2282ROLLBACK WORK; 2283 2284# check transactions-3 success: 1 2285DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2286COMMIT WORK; 2287ROLLBACK WORK; 2288 2289# check transactions-4 success: 1 2290INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2291SELECT f_int1, f_int1, '', '', 'was inserted' 2292FROM t0_template source_tab 2293WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2294 2295# check transactions-5 success: 1 2296ROLLBACK WORK; 2297Warnings: 2298Warning 1196 Some non-transactional changed tables couldn't be rolled back 2299 2300# check transactions-6 success: 1 2301# INFO: Storage engine used for t1 seems to be not transactional. 2302COMMIT; 2303 2304# check transactions-7 success: 1 2305DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2306COMMIT WORK; 2307SET @@session.sql_mode = 'traditional'; 2308Warnings: 2309Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2310SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2312SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2313'', '', 'was inserted' FROM t0_template 2314WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2315ERROR 22012: Division by 0 2316COMMIT; 2317 2318# check transactions-8 success: 1 2319# INFO: Storage engine used for t1 seems to be unable to revert 2320# changes made by the failing statement. 2321SET @@session.sql_mode = ''; 2322Warnings: 2323Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2324SET AUTOCOMMIT= 1; 2325DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2326COMMIT WORK; 2327UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2328 2329# check special-1 success: 1 2330UPDATE t1 SET f_charbig = ''; 2331 2332# check special-2 success: 1 2333UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2334INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2335SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2339'just inserted' FROM t0_template 2340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2341CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2342BEGIN 2343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2344f_charbig = 'updated by trigger' 2345 WHERE f_int1 = new.f_int1; 2346END| 2347INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2348SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2350 2351# check trigger-1 success: 1 2352DROP TRIGGER trg_1; 2353UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2354f_int2 = CAST(f_char1 AS SIGNED INT), 2355f_charbig = 'just inserted' 2356 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2357DELETE FROM t0_aux 2358WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2359INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2360SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2361'just inserted' FROM t0_template 2362WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2363CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2364BEGIN 2365UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2366f_charbig = 'updated by trigger' 2367 WHERE f_int1 = new.f_int1; 2368END| 2369INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2370SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2371WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2372 2373# check trigger-2 success: 1 2374DROP TRIGGER trg_1; 2375UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2376f_int2 = CAST(f_char1 AS SIGNED INT), 2377f_charbig = 'just inserted' 2378 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2379DELETE FROM t0_aux 2380WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2381INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2382SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2383'just inserted' FROM t0_template 2384WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2385CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2386BEGIN 2387UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2388f_charbig = 'updated by trigger' 2389 WHERE f_int1 = new.f_int1; 2390END| 2391UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2392WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2393 2394# check trigger-3 success: 1 2395DROP TRIGGER trg_1; 2396UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2397f_int2 = CAST(f_char1 AS SIGNED INT), 2398f_charbig = 'just inserted' 2399 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2400DELETE FROM t0_aux 2401WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2402INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2403SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2404'just inserted' FROM t0_template 2405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2406CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2407BEGIN 2408UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2409f_charbig = 'updated by trigger' 2410 WHERE f_int1 = - old.f_int1; 2411END| 2412UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2413WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2414 2415# check trigger-4 success: 1 2416DROP TRIGGER trg_1; 2417UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2418f_int2 = CAST(f_char1 AS SIGNED INT), 2419f_charbig = 'just inserted' 2420 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2421DELETE FROM t0_aux 2422WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2423INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2424SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2425'just inserted' FROM t0_template 2426WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2427CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2428BEGIN 2429UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2430f_charbig = 'updated by trigger' 2431 WHERE f_int1 = new.f_int1; 2432END| 2433UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2434WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2435 2436# check trigger-5 success: 1 2437DROP TRIGGER trg_1; 2438UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2439f_int2 = CAST(f_char1 AS SIGNED INT), 2440f_charbig = 'just inserted' 2441 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2442DELETE FROM t0_aux 2443WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2444INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2445SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2446'just inserted' FROM t0_template 2447WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2448CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2449BEGIN 2450UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2451f_charbig = 'updated by trigger' 2452 WHERE f_int1 = - old.f_int1; 2453END| 2454UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2455WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2456 2457# check trigger-6 success: 1 2458DROP TRIGGER trg_1; 2459UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2460f_int2 = CAST(f_char1 AS SIGNED INT), 2461f_charbig = 'just inserted' 2462 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2463DELETE FROM t0_aux 2464WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2465INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2466SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2467'just inserted' FROM t0_template 2468WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2469CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2470BEGIN 2471UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2472f_charbig = 'updated by trigger' 2473 WHERE f_int1 = - old.f_int1; 2474END| 2475DELETE FROM t0_aux 2476WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2477 2478# check trigger-7 success: 1 2479DROP TRIGGER trg_1; 2480UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2481f_int2 = CAST(f_char1 AS SIGNED INT), 2482f_charbig = 'just inserted' 2483 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2484DELETE FROM t0_aux 2485WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2486INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2487SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2488'just inserted' FROM t0_template 2489WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2490CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2491BEGIN 2492UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2493f_charbig = 'updated by trigger' 2494 WHERE f_int1 = - old.f_int1; 2495END| 2496DELETE FROM t0_aux 2497WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2498 2499# check trigger-8 success: 1 2500DROP TRIGGER trg_1; 2501UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2502f_int2 = CAST(f_char1 AS SIGNED INT), 2503f_charbig = 'just inserted' 2504 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2505DELETE FROM t0_aux 2506WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2507DELETE FROM t1 2508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2509CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2510BEGIN 2511SET new.f_int1 = old.f_int1 + @max_row, 2512new.f_int2 = old.f_int2 - @max_row, 2513new.f_charbig = '####updated per update trigger####'; 2514END| 2515UPDATE t1 2516SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2517f_charbig = '####updated per update statement itself####'; 2518Warnings: 2519Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2520 2521# check trigger-9 success: 1 2522DROP TRIGGER trg_2; 2523UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2524f_int2 = CAST(f_char1 AS SIGNED INT), 2525f_charbig = CONCAT('===',f_char1,'==='); 2526Warnings: 2527Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2528CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2529BEGIN 2530SET new.f_int1 = new.f_int1 + @max_row, 2531new.f_int2 = new.f_int2 - @max_row, 2532new.f_charbig = '####updated per update trigger####'; 2533END| 2534UPDATE t1 2535SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2536f_charbig = '####updated per update statement itself####'; 2537Warnings: 2538Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2539 2540# check trigger-10 success: 1 2541DROP TRIGGER trg_2; 2542UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2543f_int2 = CAST(f_char1 AS SIGNED INT), 2544f_charbig = CONCAT('===',f_char1,'==='); 2545Warnings: 2546Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2547CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2548BEGIN 2549SET new.f_int1 = @my_max1 + @counter, 2550new.f_int2 = @my_min2 - @counter, 2551new.f_charbig = '####updated per insert trigger####'; 2552SET @counter = @counter + 1; 2553END| 2554SET @counter = 1; 2555SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2556Warnings: 2557Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2559SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2560CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2561WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2562ORDER BY f_int1; 2563DROP TRIGGER trg_3; 2564 2565# check trigger-11 success: 1 2566Warnings: 2567Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2568DELETE FROM t1 2569WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2570AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2571AND f_charbig = '####updated per insert trigger####'; 2572CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2573BEGIN 2574SET new.f_int1 = @my_max1 + @counter, 2575new.f_int2 = @my_min2 - @counter, 2576new.f_charbig = '####updated per insert trigger####'; 2577SET @counter = @counter + 1; 2578END| 2579SET @counter = 1; 2580SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2581Warnings: 2582Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2583INSERT INTO t1 (f_char1, f_char2, f_charbig) 2584SELECT CAST(f_int1 AS CHAR), 2585CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2586WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2587ORDER BY f_int1; 2588DROP TRIGGER trg_3; 2589 2590# check trigger-12 success: 1 2591Warnings: 2592Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2593DELETE FROM t1 2594WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2595AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2596AND f_charbig = '####updated per insert trigger####'; 2597ANALYZE TABLE t1; 2598Table Op Msg_type Msg_text 2599test.t1 analyze status OK 2600test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2601CHECK TABLE t1 EXTENDED; 2602Table Op Msg_type Msg_text 2603test.t1 check status OK 2604test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2605CHECKSUM TABLE t1 EXTENDED; 2606Table Checksum 2607test.t1 <some_value> 2608OPTIMIZE TABLE t1; 2609Table Op Msg_type Msg_text 2610test.t1 optimize status OK 2611test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2612# check layout success: 1 2613REPAIR TABLE t1 EXTENDED; 2614Table Op Msg_type Msg_text 2615test.t1 repair status OK 2616test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2617# check layout success: 1 2618TRUNCATE t1; 2619Warnings: 2620Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2621 2622# check TRUNCATE success: 1 2623# check layout success: 1 2624# End usability test (inc/partition_check.inc) 2625DROP TABLE t1; 2626CREATE TABLE t1 ( 2627f_int1 INTEGER, 2628f_int2 INTEGER, 2629f_char1 CHAR(20), 2630f_char2 CHAR(20), 2631f_charbig VARCHAR(1000) 2632 2633) 2634PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 2635(PARTITION part1 VALUES LESS THAN (0) 2636(SUBPARTITION subpart11, SUBPARTITION subpart12), 2637PARTITION part2 VALUES LESS THAN (5) 2638(SUBPARTITION subpart21, SUBPARTITION subpart22), 2639PARTITION part3 VALUES LESS THAN (10) 2640(SUBPARTITION subpart31, SUBPARTITION subpart32), 2641PARTITION part4 VALUES LESS THAN (2147483646) 2642(SUBPARTITION subpart41, SUBPARTITION subpart42)); 2643Warnings: 2644Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2645INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2646SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2647WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 2648Warnings: 2649Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2650ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 2651Warnings: 2652Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2653INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2654SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2655WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 2656Warnings: 2657Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2658# Start usability test (inc/partition_check.inc) 2659create_command 2660SHOW CREATE TABLE t1; 2661Table Create Table 2662t1 CREATE TABLE `t1` ( 2663 `f_int1` int(11) DEFAULT NULL, 2664 `f_int2` mediumint(9) DEFAULT NULL, 2665 `f_char1` char(20) DEFAULT NULL, 2666 `f_char2` char(20) DEFAULT NULL, 2667 `f_charbig` varchar(1000) DEFAULT NULL 2668) ENGINE=MyISAM DEFAULT CHARSET=latin1 2669/*!50100 PARTITION BY RANGE (f_int1) 2670SUBPARTITION BY KEY (f_int1) 2671(PARTITION part1 VALUES LESS THAN (0) 2672 (SUBPARTITION subpart11 ENGINE = MyISAM, 2673 SUBPARTITION subpart12 ENGINE = MyISAM), 2674 PARTITION part2 VALUES LESS THAN (5) 2675 (SUBPARTITION subpart21 ENGINE = MyISAM, 2676 SUBPARTITION subpart22 ENGINE = MyISAM), 2677 PARTITION part3 VALUES LESS THAN (10) 2678 (SUBPARTITION subpart31 ENGINE = MyISAM, 2679 SUBPARTITION subpart32 ENGINE = MyISAM), 2680 PARTITION part4 VALUES LESS THAN (2147483646) 2681 (SUBPARTITION subpart41 ENGINE = MyISAM, 2682 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 2683 2684unified filelist 2685t1#P#part1#SP#subpart11.MYD 2686t1#P#part1#SP#subpart11.MYI 2687t1#P#part1#SP#subpart12.MYD 2688t1#P#part1#SP#subpart12.MYI 2689t1#P#part2#SP#subpart21.MYD 2690t1#P#part2#SP#subpart21.MYI 2691t1#P#part2#SP#subpart22.MYD 2692t1#P#part2#SP#subpart22.MYI 2693t1#P#part3#SP#subpart31.MYD 2694t1#P#part3#SP#subpart31.MYI 2695t1#P#part3#SP#subpart32.MYD 2696t1#P#part3#SP#subpart32.MYI 2697t1#P#part4#SP#subpart41.MYD 2698t1#P#part4#SP#subpart41.MYI 2699t1#P#part4#SP#subpart42.MYD 2700t1#P#part4#SP#subpart42.MYI 2701t1.frm 2702t1.par 2703 2704# check prerequisites-1 success: 1 2705# check COUNT(*) success: 1 2706# check MIN/MAX(f_int1) success: 1 2707# check MIN/MAX(f_int2) success: 1 2708INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2709SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2710CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2711WHERE f_int1 IN (2,3); 2712# check prerequisites-3 success: 1 2713DELETE FROM t1 WHERE f_charbig = 'delete me'; 2714# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2715# check read via f_int1 success: 1 2716# check read via f_int2 success: 1 2717 2718# check multiple-1 success: 1 2719DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2720 2721# check multiple-2 success: 1 2722INSERT INTO t1 SELECT * FROM t0_template 2723WHERE MOD(f_int1,3) = 0; 2724 2725# check multiple-3 success: 1 2726UPDATE t1 SET f_int1 = f_int1 + @max_row 2727WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2728AND @max_row_div2 + @max_row_div4; 2729 2730# check multiple-4 success: 1 2731DELETE FROM t1 2732WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2733AND @max_row_div2 + @max_row_div4 + @max_row; 2734 2735# check multiple-5 success: 1 2736SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2737INSERT INTO t1 2738SET f_int1 = @cur_value , f_int2 = @cur_value, 2739f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2740f_charbig = '#SINGLE#'; 2741 2742# check single-1 success: 1 2743SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2744INSERT INTO t1 2745SET f_int1 = @cur_value , f_int2 = @cur_value, 2746f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2747f_charbig = '#SINGLE#'; 2748 2749# check single-2 success: 1 2750SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2751SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2752UPDATE t1 SET f_int1 = @cur_value2 2753WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2754 2755# check single-3 success: 1 2756SET @cur_value1= -1; 2757SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2758UPDATE t1 SET f_int1 = @cur_value1 2759WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2760 2761# check single-4 success: 1 2762SELECT MAX(f_int1) INTO @cur_value FROM t1; 2763DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2764 2765# check single-5 success: 1 2766DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2767 2768# check single-6 success: 1 2769INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2770ERROR HY000: Table has no partition for value 2147483647 2771DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2772INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2773f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2774f_charbig = '#NULL#'; 2775INSERT INTO t1 2776SET f_int1 = NULL , f_int2 = -@max_row, 2777f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2778f_charbig = '#NULL#'; 2779# check null success: 1 2780 2781# check null-1 success: 1 2782UPDATE t1 SET f_int1 = -@max_row 2783WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2784AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2785 2786# check null-2 success: 1 2787UPDATE t1 SET f_int1 = NULL 2788WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2789AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2790 2791# check null-3 success: 1 2792DELETE FROM t1 2793WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2794AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2795 2796# check null-4 success: 1 2797DELETE FROM t1 2798WHERE f_int1 = 0 AND f_int2 = 0 2799AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2800AND f_charbig = '#NULL#'; 2801SET AUTOCOMMIT= 0; 2802INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2803SELECT f_int1, f_int1, '', '', 'was inserted' 2804FROM t0_template source_tab 2805WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2806 2807# check transactions-1 success: 1 2808COMMIT WORK; 2809 2810# check transactions-2 success: 1 2811ROLLBACK WORK; 2812 2813# check transactions-3 success: 1 2814DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2815COMMIT WORK; 2816ROLLBACK WORK; 2817 2818# check transactions-4 success: 1 2819INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2820SELECT f_int1, f_int1, '', '', 'was inserted' 2821FROM t0_template source_tab 2822WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2823 2824# check transactions-5 success: 1 2825ROLLBACK WORK; 2826Warnings: 2827Warning 1196 Some non-transactional changed tables couldn't be rolled back 2828 2829# check transactions-6 success: 1 2830# INFO: Storage engine used for t1 seems to be not transactional. 2831COMMIT; 2832 2833# check transactions-7 success: 1 2834DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2835COMMIT WORK; 2836SET @@session.sql_mode = 'traditional'; 2837Warnings: 2838Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2839SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2841SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2842'', '', 'was inserted' FROM t0_template 2843WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2844ERROR 22012: Division by 0 2845COMMIT; 2846 2847# check transactions-8 success: 1 2848# INFO: Storage engine used for t1 seems to be unable to revert 2849# changes made by the failing statement. 2850SET @@session.sql_mode = ''; 2851Warnings: 2852Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2853SET AUTOCOMMIT= 1; 2854DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2855COMMIT WORK; 2856UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2857 2858# check special-1 success: 1 2859UPDATE t1 SET f_charbig = ''; 2860 2861# check special-2 success: 1 2862UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2863INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2864SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2866INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2867SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2868'just inserted' FROM t0_template 2869WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2870CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2871BEGIN 2872UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2873f_charbig = 'updated by trigger' 2874 WHERE f_int1 = new.f_int1; 2875END| 2876INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2877SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2879 2880# check trigger-1 success: 1 2881DROP TRIGGER trg_1; 2882UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2883f_int2 = CAST(f_char1 AS SIGNED INT), 2884f_charbig = 'just inserted' 2885 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2886DELETE FROM t0_aux 2887WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2888INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2889SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2890'just inserted' FROM t0_template 2891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2892CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2893BEGIN 2894UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2895f_charbig = 'updated by trigger' 2896 WHERE f_int1 = new.f_int1; 2897END| 2898INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2899SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2901 2902# check trigger-2 success: 1 2903DROP TRIGGER trg_1; 2904UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2905f_int2 = CAST(f_char1 AS SIGNED INT), 2906f_charbig = 'just inserted' 2907 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2908DELETE FROM t0_aux 2909WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2910INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2911SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2912'just inserted' FROM t0_template 2913WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2914CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2915BEGIN 2916UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2917f_charbig = 'updated by trigger' 2918 WHERE f_int1 = new.f_int1; 2919END| 2920UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2921WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2922 2923# check trigger-3 success: 1 2924DROP TRIGGER trg_1; 2925UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2926f_int2 = CAST(f_char1 AS SIGNED INT), 2927f_charbig = 'just inserted' 2928 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2929DELETE FROM t0_aux 2930WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2931INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2932SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2933'just inserted' FROM t0_template 2934WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2935CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2936BEGIN 2937UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2938f_charbig = 'updated by trigger' 2939 WHERE f_int1 = - old.f_int1; 2940END| 2941UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2942WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2943 2944# check trigger-4 success: 1 2945DROP TRIGGER trg_1; 2946UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2947f_int2 = CAST(f_char1 AS SIGNED INT), 2948f_charbig = 'just inserted' 2949 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2950DELETE FROM t0_aux 2951WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2952INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2953SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2954'just inserted' FROM t0_template 2955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2956CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2957BEGIN 2958UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2959f_charbig = 'updated by trigger' 2960 WHERE f_int1 = new.f_int1; 2961END| 2962UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2963WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2964 2965# check trigger-5 success: 1 2966DROP TRIGGER trg_1; 2967UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2968f_int2 = CAST(f_char1 AS SIGNED INT), 2969f_charbig = 'just inserted' 2970 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2971DELETE FROM t0_aux 2972WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2974SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2975'just inserted' FROM t0_template 2976WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2977CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2978BEGIN 2979UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2980f_charbig = 'updated by trigger' 2981 WHERE f_int1 = - old.f_int1; 2982END| 2983UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2984WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2985 2986# check trigger-6 success: 1 2987DROP TRIGGER trg_1; 2988UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2989f_int2 = CAST(f_char1 AS SIGNED INT), 2990f_charbig = 'just inserted' 2991 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2992DELETE FROM t0_aux 2993WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2996'just inserted' FROM t0_template 2997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2998CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2999BEGIN 3000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3001f_charbig = 'updated by trigger' 3002 WHERE f_int1 = - old.f_int1; 3003END| 3004DELETE FROM t0_aux 3005WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3006 3007# check trigger-7 success: 1 3008DROP TRIGGER trg_1; 3009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3010f_int2 = CAST(f_char1 AS SIGNED INT), 3011f_charbig = 'just inserted' 3012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3013DELETE FROM t0_aux 3014WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3016SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3017'just inserted' FROM t0_template 3018WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3019CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3020BEGIN 3021UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3022f_charbig = 'updated by trigger' 3023 WHERE f_int1 = - old.f_int1; 3024END| 3025DELETE FROM t0_aux 3026WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3027 3028# check trigger-8 success: 1 3029DROP TRIGGER trg_1; 3030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3031f_int2 = CAST(f_char1 AS SIGNED INT), 3032f_charbig = 'just inserted' 3033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3034DELETE FROM t0_aux 3035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3036DELETE FROM t1 3037WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3038CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3039BEGIN 3040SET new.f_int1 = old.f_int1 + @max_row, 3041new.f_int2 = old.f_int2 - @max_row, 3042new.f_charbig = '####updated per update trigger####'; 3043END| 3044UPDATE t1 3045SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3046f_charbig = '####updated per update statement itself####'; 3047Warnings: 3048Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3049 3050# check trigger-9 success: 1 3051DROP TRIGGER trg_2; 3052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3053f_int2 = CAST(f_char1 AS SIGNED INT), 3054f_charbig = CONCAT('===',f_char1,'==='); 3055Warnings: 3056Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3057CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3058BEGIN 3059SET new.f_int1 = new.f_int1 + @max_row, 3060new.f_int2 = new.f_int2 - @max_row, 3061new.f_charbig = '####updated per update trigger####'; 3062END| 3063UPDATE t1 3064SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3065f_charbig = '####updated per update statement itself####'; 3066Warnings: 3067Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3068 3069# check trigger-10 success: 1 3070DROP TRIGGER trg_2; 3071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3072f_int2 = CAST(f_char1 AS SIGNED INT), 3073f_charbig = CONCAT('===',f_char1,'==='); 3074Warnings: 3075Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3076CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3077BEGIN 3078SET new.f_int1 = @my_max1 + @counter, 3079new.f_int2 = @my_min2 - @counter, 3080new.f_charbig = '####updated per insert trigger####'; 3081SET @counter = @counter + 1; 3082END| 3083SET @counter = 1; 3084SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3085Warnings: 3086Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3087INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3088SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3089CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3090WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3091ORDER BY f_int1; 3092DROP TRIGGER trg_3; 3093 3094# check trigger-11 success: 1 3095Warnings: 3096Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3097DELETE FROM t1 3098WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3099AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3100AND f_charbig = '####updated per insert trigger####'; 3101CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3102BEGIN 3103SET new.f_int1 = @my_max1 + @counter, 3104new.f_int2 = @my_min2 - @counter, 3105new.f_charbig = '####updated per insert trigger####'; 3106SET @counter = @counter + 1; 3107END| 3108SET @counter = 1; 3109SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3110Warnings: 3111Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3112INSERT INTO t1 (f_char1, f_char2, f_charbig) 3113SELECT CAST(f_int1 AS CHAR), 3114CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3116ORDER BY f_int1; 3117DROP TRIGGER trg_3; 3118 3119# check trigger-12 success: 1 3120Warnings: 3121Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3122DELETE FROM t1 3123WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3124AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3125AND f_charbig = '####updated per insert trigger####'; 3126ANALYZE TABLE t1; 3127Table Op Msg_type Msg_text 3128test.t1 analyze status OK 3129test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3130CHECK TABLE t1 EXTENDED; 3131Table Op Msg_type Msg_text 3132test.t1 check status OK 3133test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3134CHECKSUM TABLE t1 EXTENDED; 3135Table Checksum 3136test.t1 <some_value> 3137OPTIMIZE TABLE t1; 3138Table Op Msg_type Msg_text 3139test.t1 optimize status OK 3140test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3141# check layout success: 1 3142REPAIR TABLE t1 EXTENDED; 3143Table Op Msg_type Msg_text 3144test.t1 repair status OK 3145test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3146# check layout success: 1 3147TRUNCATE t1; 3148Warnings: 3149Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3150 3151# check TRUNCATE success: 1 3152# check layout success: 1 3153# End usability test (inc/partition_check.inc) 3154DROP TABLE t1; 3155CREATE TABLE t1 ( 3156f_int1 INTEGER, 3157f_int2 INTEGER, 3158f_char1 CHAR(20), 3159f_char2 CHAR(20), 3160f_charbig VARCHAR(1000) 3161 3162) 3163PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 3164(PARTITION part1 VALUES IN (0) 3165(SUBPARTITION sp11, SUBPARTITION sp12), 3166PARTITION part2 VALUES IN (1) 3167(SUBPARTITION sp21, SUBPARTITION sp22), 3168PARTITION part3 VALUES IN (2) 3169(SUBPARTITION sp31, SUBPARTITION sp32), 3170PARTITION part4 VALUES IN (NULL) 3171(SUBPARTITION sp41, SUBPARTITION sp42)); 3172Warnings: 3173Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3174INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3175SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3176WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 3177Warnings: 3178Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3179ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 3180Warnings: 3181Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3182INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3183SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3184WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 3185Warnings: 3186Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3187# Start usability test (inc/partition_check.inc) 3188create_command 3189SHOW CREATE TABLE t1; 3190Table Create Table 3191t1 CREATE TABLE `t1` ( 3192 `f_int1` int(11) DEFAULT NULL, 3193 `f_int2` mediumint(9) DEFAULT NULL, 3194 `f_char1` char(20) DEFAULT NULL, 3195 `f_char2` char(20) DEFAULT NULL, 3196 `f_charbig` varchar(1000) DEFAULT NULL 3197) ENGINE=MyISAM DEFAULT CHARSET=latin1 3198/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 3199SUBPARTITION BY HASH (f_int1 + 1) 3200(PARTITION part1 VALUES IN (0) 3201 (SUBPARTITION sp11 ENGINE = MyISAM, 3202 SUBPARTITION sp12 ENGINE = MyISAM), 3203 PARTITION part2 VALUES IN (1) 3204 (SUBPARTITION sp21 ENGINE = MyISAM, 3205 SUBPARTITION sp22 ENGINE = MyISAM), 3206 PARTITION part3 VALUES IN (2) 3207 (SUBPARTITION sp31 ENGINE = MyISAM, 3208 SUBPARTITION sp32 ENGINE = MyISAM), 3209 PARTITION part4 VALUES IN (NULL) 3210 (SUBPARTITION sp41 ENGINE = MyISAM, 3211 SUBPARTITION sp42 ENGINE = MyISAM)) */ 3212 3213unified filelist 3214t1#P#part1#SP#sp11.MYD 3215t1#P#part1#SP#sp11.MYI 3216t1#P#part1#SP#sp12.MYD 3217t1#P#part1#SP#sp12.MYI 3218t1#P#part2#SP#sp21.MYD 3219t1#P#part2#SP#sp21.MYI 3220t1#P#part2#SP#sp22.MYD 3221t1#P#part2#SP#sp22.MYI 3222t1#P#part3#SP#sp31.MYD 3223t1#P#part3#SP#sp31.MYI 3224t1#P#part3#SP#sp32.MYD 3225t1#P#part3#SP#sp32.MYI 3226t1#P#part4#SP#sp41.MYD 3227t1#P#part4#SP#sp41.MYI 3228t1#P#part4#SP#sp42.MYD 3229t1#P#part4#SP#sp42.MYI 3230t1.frm 3231t1.par 3232 3233# check prerequisites-1 success: 1 3234# check COUNT(*) success: 1 3235# check MIN/MAX(f_int1) success: 1 3236# check MIN/MAX(f_int2) success: 1 3237INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3238SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3239CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3240WHERE f_int1 IN (2,3); 3241# check prerequisites-3 success: 1 3242DELETE FROM t1 WHERE f_charbig = 'delete me'; 3243# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3244# check read via f_int1 success: 1 3245# check read via f_int2 success: 1 3246 3247# check multiple-1 success: 1 3248DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3249 3250# check multiple-2 success: 1 3251INSERT INTO t1 SELECT * FROM t0_template 3252WHERE MOD(f_int1,3) = 0; 3253 3254# check multiple-3 success: 1 3255UPDATE t1 SET f_int1 = f_int1 + @max_row 3256WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3257AND @max_row_div2 + @max_row_div4; 3258 3259# check multiple-4 success: 1 3260DELETE FROM t1 3261WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3262AND @max_row_div2 + @max_row_div4 + @max_row; 3263 3264# check multiple-5 success: 1 3265SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3266INSERT INTO t1 3267SET f_int1 = @cur_value , f_int2 = @cur_value, 3268f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3269f_charbig = '#SINGLE#'; 3270 3271# check single-1 success: 1 3272SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3273INSERT INTO t1 3274SET f_int1 = @cur_value , f_int2 = @cur_value, 3275f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3276f_charbig = '#SINGLE#'; 3277 3278# check single-2 success: 1 3279SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3280SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3281UPDATE t1 SET f_int1 = @cur_value2 3282WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3283 3284# check single-3 success: 1 3285SET @cur_value1= -1; 3286SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3287UPDATE t1 SET f_int1 = @cur_value1 3288WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3289 3290# check single-4 success: 1 3291SELECT MAX(f_int1) INTO @cur_value FROM t1; 3292DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3293 3294# check single-5 success: 1 3295DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3296 3297# check single-6 success: 1 3298INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3299Warnings: 3300Warning 1264 Out of range value for column 'f_int2' at row 1 3301 3302# check single-7 success: 1 3303DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3304DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3305INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3306f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3307f_charbig = '#NULL#'; 3308INSERT INTO t1 3309SET f_int1 = NULL , f_int2 = -@max_row, 3310f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3311f_charbig = '#NULL#'; 3312# check null success: 1 3313 3314# check null-1 success: 1 3315UPDATE t1 SET f_int1 = -@max_row 3316WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3317AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3318 3319# check null-2 success: 1 3320UPDATE t1 SET f_int1 = NULL 3321WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3322AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3323 3324# check null-3 success: 1 3325DELETE FROM t1 3326WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3327AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3328 3329# check null-4 success: 1 3330DELETE FROM t1 3331WHERE f_int1 = 0 AND f_int2 = 0 3332AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3333AND f_charbig = '#NULL#'; 3334SET AUTOCOMMIT= 0; 3335INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3336SELECT f_int1, f_int1, '', '', 'was inserted' 3337FROM t0_template source_tab 3338WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3339 3340# check transactions-1 success: 1 3341COMMIT WORK; 3342 3343# check transactions-2 success: 1 3344ROLLBACK WORK; 3345 3346# check transactions-3 success: 1 3347DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3348COMMIT WORK; 3349ROLLBACK WORK; 3350 3351# check transactions-4 success: 1 3352INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3353SELECT f_int1, f_int1, '', '', 'was inserted' 3354FROM t0_template source_tab 3355WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3356 3357# check transactions-5 success: 1 3358ROLLBACK WORK; 3359Warnings: 3360Warning 1196 Some non-transactional changed tables couldn't be rolled back 3361 3362# check transactions-6 success: 1 3363# INFO: Storage engine used for t1 seems to be not transactional. 3364COMMIT; 3365 3366# check transactions-7 success: 1 3367DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3368COMMIT WORK; 3369SET @@session.sql_mode = 'traditional'; 3370Warnings: 3371Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3372SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3373INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3374SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3375'', '', 'was inserted' FROM t0_template 3376WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3377ERROR 22012: Division by 0 3378COMMIT; 3379 3380# check transactions-8 success: 1 3381# INFO: Storage engine used for t1 seems to be unable to revert 3382# changes made by the failing statement. 3383SET @@session.sql_mode = ''; 3384Warnings: 3385Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3386SET AUTOCOMMIT= 1; 3387DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3388COMMIT WORK; 3389UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3390 3391# check special-1 success: 1 3392UPDATE t1 SET f_charbig = ''; 3393 3394# check special-2 success: 1 3395UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3396INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3397SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3401'just inserted' FROM t0_template 3402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3403CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3404BEGIN 3405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3406f_charbig = 'updated by trigger' 3407 WHERE f_int1 = new.f_int1; 3408END| 3409INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3410SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3411WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3412 3413# check trigger-1 success: 1 3414DROP TRIGGER trg_1; 3415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3416f_int2 = CAST(f_char1 AS SIGNED INT), 3417f_charbig = 'just inserted' 3418 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3419DELETE FROM t0_aux 3420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3423'just inserted' FROM t0_template 3424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3425CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3426BEGIN 3427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3428f_charbig = 'updated by trigger' 3429 WHERE f_int1 = new.f_int1; 3430END| 3431INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3432SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3434 3435# check trigger-2 success: 1 3436DROP TRIGGER trg_1; 3437UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3438f_int2 = CAST(f_char1 AS SIGNED INT), 3439f_charbig = 'just inserted' 3440 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3441DELETE FROM t0_aux 3442WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3443INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3444SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3445'just inserted' FROM t0_template 3446WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3447CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3448BEGIN 3449UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3450f_charbig = 'updated by trigger' 3451 WHERE f_int1 = new.f_int1; 3452END| 3453UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3454WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3455 3456# check trigger-3 success: 1 3457DROP TRIGGER trg_1; 3458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3459f_int2 = CAST(f_char1 AS SIGNED INT), 3460f_charbig = 'just inserted' 3461 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3462DELETE FROM t0_aux 3463WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3464INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3465SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3466'just inserted' FROM t0_template 3467WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3468CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3469BEGIN 3470UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3471f_charbig = 'updated by trigger' 3472 WHERE f_int1 = - old.f_int1; 3473END| 3474UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3475WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3476 3477# check trigger-4 success: 1 3478DROP TRIGGER trg_1; 3479UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3480f_int2 = CAST(f_char1 AS SIGNED INT), 3481f_charbig = 'just inserted' 3482 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3483DELETE FROM t0_aux 3484WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3485INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3486SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3487'just inserted' FROM t0_template 3488WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3489CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3490BEGIN 3491UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3492f_charbig = 'updated by trigger' 3493 WHERE f_int1 = new.f_int1; 3494END| 3495UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3496WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3497 3498# check trigger-5 success: 1 3499DROP TRIGGER trg_1; 3500UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3501f_int2 = CAST(f_char1 AS SIGNED INT), 3502f_charbig = 'just inserted' 3503 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3504DELETE FROM t0_aux 3505WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3506INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3507SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3508'just inserted' FROM t0_template 3509WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3510CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3511BEGIN 3512UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3513f_charbig = 'updated by trigger' 3514 WHERE f_int1 = - old.f_int1; 3515END| 3516UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3517WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3518 3519# check trigger-6 success: 1 3520DROP TRIGGER trg_1; 3521UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3522f_int2 = CAST(f_char1 AS SIGNED INT), 3523f_charbig = 'just inserted' 3524 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3525DELETE FROM t0_aux 3526WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3527INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3528SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3529'just inserted' FROM t0_template 3530WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3531CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3532BEGIN 3533UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3534f_charbig = 'updated by trigger' 3535 WHERE f_int1 = - old.f_int1; 3536END| 3537DELETE FROM t0_aux 3538WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3539 3540# check trigger-7 success: 1 3541DROP TRIGGER trg_1; 3542UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3543f_int2 = CAST(f_char1 AS SIGNED INT), 3544f_charbig = 'just inserted' 3545 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3546DELETE FROM t0_aux 3547WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3548INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3549SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3550'just inserted' FROM t0_template 3551WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3552CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3553BEGIN 3554UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3555f_charbig = 'updated by trigger' 3556 WHERE f_int1 = - old.f_int1; 3557END| 3558DELETE FROM t0_aux 3559WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3560 3561# check trigger-8 success: 1 3562DROP TRIGGER trg_1; 3563UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3564f_int2 = CAST(f_char1 AS SIGNED INT), 3565f_charbig = 'just inserted' 3566 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3567DELETE FROM t0_aux 3568WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3569DELETE FROM t1 3570WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3571CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3572BEGIN 3573SET new.f_int1 = old.f_int1 + @max_row, 3574new.f_int2 = old.f_int2 - @max_row, 3575new.f_charbig = '####updated per update trigger####'; 3576END| 3577UPDATE t1 3578SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3579f_charbig = '####updated per update statement itself####'; 3580Warnings: 3581Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3582 3583# check trigger-9 success: 1 3584DROP TRIGGER trg_2; 3585UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3586f_int2 = CAST(f_char1 AS SIGNED INT), 3587f_charbig = CONCAT('===',f_char1,'==='); 3588Warnings: 3589Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3590CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3591BEGIN 3592SET new.f_int1 = new.f_int1 + @max_row, 3593new.f_int2 = new.f_int2 - @max_row, 3594new.f_charbig = '####updated per update trigger####'; 3595END| 3596UPDATE t1 3597SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3598f_charbig = '####updated per update statement itself####'; 3599Warnings: 3600Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3601 3602# check trigger-10 success: 1 3603DROP TRIGGER trg_2; 3604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3605f_int2 = CAST(f_char1 AS SIGNED INT), 3606f_charbig = CONCAT('===',f_char1,'==='); 3607Warnings: 3608Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3609CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3610BEGIN 3611SET new.f_int1 = @my_max1 + @counter, 3612new.f_int2 = @my_min2 - @counter, 3613new.f_charbig = '####updated per insert trigger####'; 3614SET @counter = @counter + 1; 3615END| 3616SET @counter = 1; 3617SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3618Warnings: 3619Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3620INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3621SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3622CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3624ORDER BY f_int1; 3625DROP TRIGGER trg_3; 3626 3627# check trigger-11 success: 1 3628Warnings: 3629Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3630DELETE FROM t1 3631WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3632AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3633AND f_charbig = '####updated per insert trigger####'; 3634CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3635BEGIN 3636SET new.f_int1 = @my_max1 + @counter, 3637new.f_int2 = @my_min2 - @counter, 3638new.f_charbig = '####updated per insert trigger####'; 3639SET @counter = @counter + 1; 3640END| 3641SET @counter = 1; 3642SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3643Warnings: 3644Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3645INSERT INTO t1 (f_char1, f_char2, f_charbig) 3646SELECT CAST(f_int1 AS CHAR), 3647CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3648WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3649ORDER BY f_int1; 3650DROP TRIGGER trg_3; 3651 3652# check trigger-12 success: 1 3653Warnings: 3654Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3655DELETE FROM t1 3656WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3657AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3658AND f_charbig = '####updated per insert trigger####'; 3659ANALYZE TABLE t1; 3660Table Op Msg_type Msg_text 3661test.t1 analyze status OK 3662test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3663CHECK TABLE t1 EXTENDED; 3664Table Op Msg_type Msg_text 3665test.t1 check status OK 3666test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3667CHECKSUM TABLE t1 EXTENDED; 3668Table Checksum 3669test.t1 <some_value> 3670OPTIMIZE TABLE t1; 3671Table Op Msg_type Msg_text 3672test.t1 optimize status OK 3673test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3674# check layout success: 1 3675REPAIR TABLE t1 EXTENDED; 3676Table Op Msg_type Msg_text 3677test.t1 repair status OK 3678test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3679# check layout success: 1 3680TRUNCATE t1; 3681Warnings: 3682Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3683 3684# check TRUNCATE success: 1 3685# check layout success: 1 3686# End usability test (inc/partition_check.inc) 3687DROP TABLE t1; 3688CREATE TABLE t1 ( 3689f_int1 INTEGER, 3690f_int2 INTEGER, 3691f_char1 CHAR(20), 3692f_char2 CHAR(20), 3693f_charbig VARCHAR(1000) 3694 3695) 3696PARTITION BY LIST(ABS(MOD(f_int1,2))) 3697SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 3698(PARTITION part1 VALUES IN (0), 3699PARTITION part2 VALUES IN (1), 3700PARTITION part3 VALUES IN (NULL)); 3701Warnings: 3702Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3703INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3704SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3705WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 3706Warnings: 3707Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3708ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 3709Warnings: 3710Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3711INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3712SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3713WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 3714Warnings: 3715Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3716# Start usability test (inc/partition_check.inc) 3717create_command 3718SHOW CREATE TABLE t1; 3719Table Create Table 3720t1 CREATE TABLE `t1` ( 3721 `f_int1` int(11) DEFAULT NULL, 3722 `f_int2` mediumint(9) DEFAULT NULL, 3723 `f_char1` char(20) DEFAULT NULL, 3724 `f_char2` char(20) DEFAULT NULL, 3725 `f_charbig` varchar(1000) DEFAULT NULL 3726) ENGINE=MyISAM DEFAULT CHARSET=latin1 3727/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 3728SUBPARTITION BY KEY (f_int1) 3729SUBPARTITIONS 3 3730(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 3731 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 3732 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 3733 3734unified filelist 3735t1#P#part1#SP#part1sp0.MYD 3736t1#P#part1#SP#part1sp0.MYI 3737t1#P#part1#SP#part1sp1.MYD 3738t1#P#part1#SP#part1sp1.MYI 3739t1#P#part1#SP#part1sp2.MYD 3740t1#P#part1#SP#part1sp2.MYI 3741t1#P#part2#SP#part2sp0.MYD 3742t1#P#part2#SP#part2sp0.MYI 3743t1#P#part2#SP#part2sp1.MYD 3744t1#P#part2#SP#part2sp1.MYI 3745t1#P#part2#SP#part2sp2.MYD 3746t1#P#part2#SP#part2sp2.MYI 3747t1#P#part3#SP#part3sp0.MYD 3748t1#P#part3#SP#part3sp0.MYI 3749t1#P#part3#SP#part3sp1.MYD 3750t1#P#part3#SP#part3sp1.MYI 3751t1#P#part3#SP#part3sp2.MYD 3752t1#P#part3#SP#part3sp2.MYI 3753t1.frm 3754t1.par 3755 3756# check prerequisites-1 success: 1 3757# check COUNT(*) success: 1 3758# check MIN/MAX(f_int1) success: 1 3759# check MIN/MAX(f_int2) success: 1 3760INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3761SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3762CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3763WHERE f_int1 IN (2,3); 3764# check prerequisites-3 success: 1 3765DELETE FROM t1 WHERE f_charbig = 'delete me'; 3766# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3767# check read via f_int1 success: 1 3768# check read via f_int2 success: 1 3769 3770# check multiple-1 success: 1 3771DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3772 3773# check multiple-2 success: 1 3774INSERT INTO t1 SELECT * FROM t0_template 3775WHERE MOD(f_int1,3) = 0; 3776 3777# check multiple-3 success: 1 3778UPDATE t1 SET f_int1 = f_int1 + @max_row 3779WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3780AND @max_row_div2 + @max_row_div4; 3781 3782# check multiple-4 success: 1 3783DELETE FROM t1 3784WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3785AND @max_row_div2 + @max_row_div4 + @max_row; 3786 3787# check multiple-5 success: 1 3788SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3789INSERT INTO t1 3790SET f_int1 = @cur_value , f_int2 = @cur_value, 3791f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3792f_charbig = '#SINGLE#'; 3793 3794# check single-1 success: 1 3795SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3796INSERT INTO t1 3797SET f_int1 = @cur_value , f_int2 = @cur_value, 3798f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3799f_charbig = '#SINGLE#'; 3800 3801# check single-2 success: 1 3802SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3803SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3804UPDATE t1 SET f_int1 = @cur_value2 3805WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3806 3807# check single-3 success: 1 3808SET @cur_value1= -1; 3809SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3810UPDATE t1 SET f_int1 = @cur_value1 3811WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3812 3813# check single-4 success: 1 3814SELECT MAX(f_int1) INTO @cur_value FROM t1; 3815DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3816 3817# check single-5 success: 1 3818DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3819 3820# check single-6 success: 1 3821INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3822Warnings: 3823Warning 1264 Out of range value for column 'f_int2' at row 1 3824 3825# check single-7 success: 1 3826DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3827DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3828INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3829f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3830f_charbig = '#NULL#'; 3831INSERT INTO t1 3832SET f_int1 = NULL , f_int2 = -@max_row, 3833f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3834f_charbig = '#NULL#'; 3835# check null success: 1 3836 3837# check null-1 success: 1 3838UPDATE t1 SET f_int1 = -@max_row 3839WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3840AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3841 3842# check null-2 success: 1 3843UPDATE t1 SET f_int1 = NULL 3844WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3845AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3846 3847# check null-3 success: 1 3848DELETE FROM t1 3849WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3850AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3851 3852# check null-4 success: 1 3853DELETE FROM t1 3854WHERE f_int1 = 0 AND f_int2 = 0 3855AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3856AND f_charbig = '#NULL#'; 3857SET AUTOCOMMIT= 0; 3858INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3859SELECT f_int1, f_int1, '', '', 'was inserted' 3860FROM t0_template source_tab 3861WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3862 3863# check transactions-1 success: 1 3864COMMIT WORK; 3865 3866# check transactions-2 success: 1 3867ROLLBACK WORK; 3868 3869# check transactions-3 success: 1 3870DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3871COMMIT WORK; 3872ROLLBACK WORK; 3873 3874# check transactions-4 success: 1 3875INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3876SELECT f_int1, f_int1, '', '', 'was inserted' 3877FROM t0_template source_tab 3878WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3879 3880# check transactions-5 success: 1 3881ROLLBACK WORK; 3882Warnings: 3883Warning 1196 Some non-transactional changed tables couldn't be rolled back 3884 3885# check transactions-6 success: 1 3886# INFO: Storage engine used for t1 seems to be not transactional. 3887COMMIT; 3888 3889# check transactions-7 success: 1 3890DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3891COMMIT WORK; 3892SET @@session.sql_mode = 'traditional'; 3893Warnings: 3894Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3895SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3897SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3898'', '', 'was inserted' FROM t0_template 3899WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3900ERROR 22012: Division by 0 3901COMMIT; 3902 3903# check transactions-8 success: 1 3904# INFO: Storage engine used for t1 seems to be unable to revert 3905# changes made by the failing statement. 3906SET @@session.sql_mode = ''; 3907Warnings: 3908Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3909SET AUTOCOMMIT= 1; 3910DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3911COMMIT WORK; 3912UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3913 3914# check special-1 success: 1 3915UPDATE t1 SET f_charbig = ''; 3916 3917# check special-2 success: 1 3918UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3919INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3920SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3921WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3922INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3923SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3924'just inserted' FROM t0_template 3925WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3926CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3927BEGIN 3928UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3929f_charbig = 'updated by trigger' 3930 WHERE f_int1 = new.f_int1; 3931END| 3932INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3933SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3934WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3935 3936# check trigger-1 success: 1 3937DROP TRIGGER trg_1; 3938UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3939f_int2 = CAST(f_char1 AS SIGNED INT), 3940f_charbig = 'just inserted' 3941 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3942DELETE FROM t0_aux 3943WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3944INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3945SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3946'just inserted' FROM t0_template 3947WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3948CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3949BEGIN 3950UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3951f_charbig = 'updated by trigger' 3952 WHERE f_int1 = new.f_int1; 3953END| 3954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3955SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3956WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3957 3958# check trigger-2 success: 1 3959DROP TRIGGER trg_1; 3960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3961f_int2 = CAST(f_char1 AS SIGNED INT), 3962f_charbig = 'just inserted' 3963 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3964DELETE FROM t0_aux 3965WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3966INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3967SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3968'just inserted' FROM t0_template 3969WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3970CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3971BEGIN 3972UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3973f_charbig = 'updated by trigger' 3974 WHERE f_int1 = new.f_int1; 3975END| 3976UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3977WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3978 3979# check trigger-3 success: 1 3980DROP TRIGGER trg_1; 3981UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3982f_int2 = CAST(f_char1 AS SIGNED INT), 3983f_charbig = 'just inserted' 3984 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3985DELETE FROM t0_aux 3986WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3987INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3988SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3989'just inserted' FROM t0_template 3990WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3991CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3992BEGIN 3993UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3994f_charbig = 'updated by trigger' 3995 WHERE f_int1 = - old.f_int1; 3996END| 3997UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3998WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3999 4000# check trigger-4 success: 1 4001DROP TRIGGER trg_1; 4002UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4003f_int2 = CAST(f_char1 AS SIGNED INT), 4004f_charbig = 'just inserted' 4005 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4006DELETE FROM t0_aux 4007WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4008INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4009SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4010'just inserted' FROM t0_template 4011WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4012CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4013BEGIN 4014UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4015f_charbig = 'updated by trigger' 4016 WHERE f_int1 = new.f_int1; 4017END| 4018UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4019WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4020 4021# check trigger-5 success: 1 4022DROP TRIGGER trg_1; 4023UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4024f_int2 = CAST(f_char1 AS SIGNED INT), 4025f_charbig = 'just inserted' 4026 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4027DELETE FROM t0_aux 4028WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4029INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4030SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4031'just inserted' FROM t0_template 4032WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4033CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4034BEGIN 4035UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4036f_charbig = 'updated by trigger' 4037 WHERE f_int1 = - old.f_int1; 4038END| 4039UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4040WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4041 4042# check trigger-6 success: 1 4043DROP TRIGGER trg_1; 4044UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4045f_int2 = CAST(f_char1 AS SIGNED INT), 4046f_charbig = 'just inserted' 4047 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4048DELETE FROM t0_aux 4049WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4050INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4051SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4052'just inserted' FROM t0_template 4053WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4054CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4055BEGIN 4056UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4057f_charbig = 'updated by trigger' 4058 WHERE f_int1 = - old.f_int1; 4059END| 4060DELETE FROM t0_aux 4061WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4062 4063# check trigger-7 success: 1 4064DROP TRIGGER trg_1; 4065UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4066f_int2 = CAST(f_char1 AS SIGNED INT), 4067f_charbig = 'just inserted' 4068 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4069DELETE FROM t0_aux 4070WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4071INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4072SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4073'just inserted' FROM t0_template 4074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4075CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4076BEGIN 4077UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4078f_charbig = 'updated by trigger' 4079 WHERE f_int1 = - old.f_int1; 4080END| 4081DELETE FROM t0_aux 4082WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4083 4084# check trigger-8 success: 1 4085DROP TRIGGER trg_1; 4086UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4087f_int2 = CAST(f_char1 AS SIGNED INT), 4088f_charbig = 'just inserted' 4089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4090DELETE FROM t0_aux 4091WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4092DELETE FROM t1 4093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4094CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4095BEGIN 4096SET new.f_int1 = old.f_int1 + @max_row, 4097new.f_int2 = old.f_int2 - @max_row, 4098new.f_charbig = '####updated per update trigger####'; 4099END| 4100UPDATE t1 4101SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4102f_charbig = '####updated per update statement itself####'; 4103Warnings: 4104Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4105 4106# check trigger-9 success: 1 4107DROP TRIGGER trg_2; 4108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4109f_int2 = CAST(f_char1 AS SIGNED INT), 4110f_charbig = CONCAT('===',f_char1,'==='); 4111Warnings: 4112Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4113CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4114BEGIN 4115SET new.f_int1 = new.f_int1 + @max_row, 4116new.f_int2 = new.f_int2 - @max_row, 4117new.f_charbig = '####updated per update trigger####'; 4118END| 4119UPDATE t1 4120SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4121f_charbig = '####updated per update statement itself####'; 4122Warnings: 4123Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4124 4125# check trigger-10 success: 1 4126DROP TRIGGER trg_2; 4127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4128f_int2 = CAST(f_char1 AS SIGNED INT), 4129f_charbig = CONCAT('===',f_char1,'==='); 4130Warnings: 4131Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4132CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4133BEGIN 4134SET new.f_int1 = @my_max1 + @counter, 4135new.f_int2 = @my_min2 - @counter, 4136new.f_charbig = '####updated per insert trigger####'; 4137SET @counter = @counter + 1; 4138END| 4139SET @counter = 1; 4140SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4141Warnings: 4142Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4143INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4144SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4145CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4147ORDER BY f_int1; 4148DROP TRIGGER trg_3; 4149 4150# check trigger-11 success: 1 4151Warnings: 4152Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4153DELETE FROM t1 4154WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4155AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4156AND f_charbig = '####updated per insert trigger####'; 4157CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4158BEGIN 4159SET new.f_int1 = @my_max1 + @counter, 4160new.f_int2 = @my_min2 - @counter, 4161new.f_charbig = '####updated per insert trigger####'; 4162SET @counter = @counter + 1; 4163END| 4164SET @counter = 1; 4165SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4166Warnings: 4167Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4168INSERT INTO t1 (f_char1, f_char2, f_charbig) 4169SELECT CAST(f_int1 AS CHAR), 4170CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4172ORDER BY f_int1; 4173DROP TRIGGER trg_3; 4174 4175# check trigger-12 success: 1 4176Warnings: 4177Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4178DELETE FROM t1 4179WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4180AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4181AND f_charbig = '####updated per insert trigger####'; 4182ANALYZE TABLE t1; 4183Table Op Msg_type Msg_text 4184test.t1 analyze status OK 4185test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4186CHECK TABLE t1 EXTENDED; 4187Table Op Msg_type Msg_text 4188test.t1 check status OK 4189test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4190CHECKSUM TABLE t1 EXTENDED; 4191Table Checksum 4192test.t1 <some_value> 4193OPTIMIZE TABLE t1; 4194Table Op Msg_type Msg_text 4195test.t1 optimize status OK 4196test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4197# check layout success: 1 4198REPAIR TABLE t1 EXTENDED; 4199Table Op Msg_type Msg_text 4200test.t1 repair status OK 4201test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4202# check layout success: 1 4203TRUNCATE t1; 4204Warnings: 4205Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4206 4207# check TRUNCATE success: 1 4208# check layout success: 1 4209# End usability test (inc/partition_check.inc) 4210DROP TABLE t1; 4211# 2.1.3 UNIQUE INDEX exists 4212DROP TABLE IF EXISTS t1; 4213CREATE TABLE t1 ( 4214f_int1 INTEGER, 4215f_int2 INTEGER, 4216f_char1 CHAR(20), 4217f_char2 CHAR(20), 4218f_charbig VARCHAR(1000) 4219, UNIQUE INDEX uidx1 (f_int1,f_int2) 4220) 4221PARTITION BY HASH(f_int1) PARTITIONS 2; 4222Warnings: 4223Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4224INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4225SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4226WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 4227Warnings: 4228Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4229ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 4230Warnings: 4231Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4232INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4233SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4234WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 4235Warnings: 4236Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4237# Start usability test (inc/partition_check.inc) 4238create_command 4239SHOW CREATE TABLE t1; 4240Table Create Table 4241t1 CREATE TABLE `t1` ( 4242 `f_int1` int(11) DEFAULT NULL, 4243 `f_int2` mediumint(9) DEFAULT NULL, 4244 `f_char1` char(20) DEFAULT NULL, 4245 `f_char2` char(20) DEFAULT NULL, 4246 `f_charbig` varchar(1000) DEFAULT NULL, 4247 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 4248) ENGINE=MyISAM DEFAULT CHARSET=latin1 4249/*!50100 PARTITION BY HASH (f_int1) 4250PARTITIONS 2 */ 4251 4252unified filelist 4253t1#P#p0.MYD 4254t1#P#p0.MYI 4255t1#P#p1.MYD 4256t1#P#p1.MYI 4257t1.frm 4258t1.par 4259 4260# check prerequisites-1 success: 1 4261# check COUNT(*) success: 1 4262# check MIN/MAX(f_int1) success: 1 4263# check MIN/MAX(f_int2) success: 1 4264INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4265SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4266CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4267WHERE f_int1 IN (2,3); 4268ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 4269# check prerequisites-3 success: 1 4270# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 4271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4272SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4273CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4274WHERE f_int1 IN (2,3); 4275DELETE FROM t1 WHERE f_charbig = 'delete me'; 4276INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4277SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4278CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4279WHERE f_int1 IN (2,3); 4280DELETE FROM t1 WHERE f_charbig = 'delete me'; 4281# check read via f_int1 success: 1 4282# check read via f_int2 success: 1 4283 4284# check multiple-1 success: 1 4285DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4286 4287# check multiple-2 success: 1 4288INSERT INTO t1 SELECT * FROM t0_template 4289WHERE MOD(f_int1,3) = 0; 4290 4291# check multiple-3 success: 1 4292UPDATE t1 SET f_int1 = f_int1 + @max_row 4293WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4294AND @max_row_div2 + @max_row_div4; 4295 4296# check multiple-4 success: 1 4297DELETE FROM t1 4298WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4299AND @max_row_div2 + @max_row_div4 + @max_row; 4300 4301# check multiple-5 success: 1 4302SELECT COUNT(*) INTO @try_count FROM t0_template 4303WHERE MOD(f_int1,3) = 0 4304AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4305SELECT COUNT(*) INTO @clash_count 4306FROM t1 INNER JOIN t0_template USING(f_int1) 4307WHERE MOD(f_int1,3) = 0 4308AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4309SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4310INSERT INTO t1 4311SET f_int1 = @cur_value , f_int2 = @cur_value, 4312f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4313f_charbig = '#SINGLE#'; 4314 4315# check single-1 success: 1 4316SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4317INSERT INTO t1 4318SET f_int1 = @cur_value , f_int2 = @cur_value, 4319f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4320f_charbig = '#SINGLE#'; 4321 4322# check single-2 success: 1 4323SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4324SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4325UPDATE t1 SET f_int1 = @cur_value2 4326WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4327 4328# check single-3 success: 1 4329SET @cur_value1= -1; 4330SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4331UPDATE t1 SET f_int1 = @cur_value1 4332WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4333 4334# check single-4 success: 1 4335SELECT MAX(f_int1) INTO @cur_value FROM t1; 4336DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4337 4338# check single-5 success: 1 4339DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4340 4341# check single-6 success: 1 4342INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4343Warnings: 4344Warning 1264 Out of range value for column 'f_int2' at row 1 4345 4346# check single-7 success: 1 4347DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4348DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4349INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4350f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4351f_charbig = '#NULL#'; 4352INSERT INTO t1 4353SET f_int1 = NULL , f_int2 = -@max_row, 4354f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4355f_charbig = '#NULL#'; 4356# check null success: 1 4357 4358# check null-1 success: 1 4359UPDATE t1 SET f_int1 = -@max_row 4360WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4361AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4362 4363# check null-2 success: 1 4364UPDATE t1 SET f_int1 = NULL 4365WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4366AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4367 4368# check null-3 success: 1 4369DELETE FROM t1 4370WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4371AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4372 4373# check null-4 success: 1 4374DELETE FROM t1 4375WHERE f_int1 = 0 AND f_int2 = 0 4376AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4377AND f_charbig = '#NULL#'; 4378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4379SELECT f_int1, f_int1, '', '', 'was inserted' 4380 FROM t0_template source_tab 4381WHERE MOD(f_int1,3) = 0 4382AND f_int1 BETWEEN @max_row_div2 AND @max_row 4383ON DUPLICATE KEY 4384UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 4385f_int2 = 2 * @max_row + source_tab.f_int1, 4386f_charbig = 'was updated'; 4387 4388# check unique-1-a success: 1 4389 4390# check unique-1-b success: 1 4391DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4392UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4393f_int2 = CAST(f_char1 AS SIGNED INT), 4394f_charbig = CONCAT('===',f_char1,'===') 4395WHERE f_charbig = 'was updated'; 4396REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4397SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 4398 FROM t0_template source_tab 4399WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4400 4401# check replace success: 1 4402DELETE FROM t1 4403WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 4404DELETE FROM t1 4405WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 4406f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 4407UPDATE t1 SET f_int2 = f_int1, 4408f_char1 = CAST(f_int1 AS CHAR), 4409f_char2 = CAST(f_int1 AS CHAR), 4410f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 4411WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 4412SET AUTOCOMMIT= 0; 4413INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4414SELECT f_int1, f_int1, '', '', 'was inserted' 4415FROM t0_template source_tab 4416WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4417 4418# check transactions-1 success: 1 4419COMMIT WORK; 4420 4421# check transactions-2 success: 1 4422ROLLBACK WORK; 4423 4424# check transactions-3 success: 1 4425DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4426COMMIT WORK; 4427ROLLBACK WORK; 4428 4429# check transactions-4 success: 1 4430INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4431SELECT f_int1, f_int1, '', '', 'was inserted' 4432FROM t0_template source_tab 4433WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4434 4435# check transactions-5 success: 1 4436ROLLBACK WORK; 4437Warnings: 4438Warning 1196 Some non-transactional changed tables couldn't be rolled back 4439 4440# check transactions-6 success: 1 4441# INFO: Storage engine used for t1 seems to be not transactional. 4442COMMIT; 4443 4444# check transactions-7 success: 1 4445DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4446COMMIT WORK; 4447SET @@session.sql_mode = 'traditional'; 4448Warnings: 4449Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4450SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4451INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4452SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4453'', '', 'was inserted' FROM t0_template 4454WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4455ERROR 22012: Division by 0 4456COMMIT; 4457 4458# check transactions-8 success: 1 4459# INFO: Storage engine used for t1 seems to be unable to revert 4460# changes made by the failing statement. 4461SET @@session.sql_mode = ''; 4462Warnings: 4463Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4464SET AUTOCOMMIT= 1; 4465DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4466COMMIT WORK; 4467UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4468 4469# check special-1 success: 1 4470UPDATE t1 SET f_charbig = ''; 4471 4472# check special-2 success: 1 4473UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4474INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4475SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4477INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4478SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4479'just inserted' FROM t0_template 4480WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4481CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4482BEGIN 4483UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4484f_charbig = 'updated by trigger' 4485 WHERE f_int1 = new.f_int1; 4486END| 4487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4488SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4489WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4490 4491# check trigger-1 success: 1 4492DROP TRIGGER trg_1; 4493UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4494f_int2 = CAST(f_char1 AS SIGNED INT), 4495f_charbig = 'just inserted' 4496 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4497DELETE FROM t0_aux 4498WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4501'just inserted' FROM t0_template 4502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4503CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4504BEGIN 4505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4506f_charbig = 'updated by trigger' 4507 WHERE f_int1 = new.f_int1; 4508END| 4509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4510SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4512 4513# check trigger-2 success: 1 4514DROP TRIGGER trg_1; 4515UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4516f_int2 = CAST(f_char1 AS SIGNED INT), 4517f_charbig = 'just inserted' 4518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4519DELETE FROM t0_aux 4520WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4521INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4522SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4523'just inserted' FROM t0_template 4524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4525CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4526BEGIN 4527UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4528f_charbig = 'updated by trigger' 4529 WHERE f_int1 = new.f_int1; 4530END| 4531UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4532WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4533 4534# check trigger-3 success: 1 4535DROP TRIGGER trg_1; 4536UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4537f_int2 = CAST(f_char1 AS SIGNED INT), 4538f_charbig = 'just inserted' 4539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4540DELETE FROM t0_aux 4541WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4542INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4543SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4544'just inserted' FROM t0_template 4545WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4546CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4547BEGIN 4548UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4549f_charbig = 'updated by trigger' 4550 WHERE f_int1 = - old.f_int1; 4551END| 4552UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4553WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4554 4555# check trigger-4 success: 1 4556DROP TRIGGER trg_1; 4557UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4558f_int2 = CAST(f_char1 AS SIGNED INT), 4559f_charbig = 'just inserted' 4560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4561DELETE FROM t0_aux 4562WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4563INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4564SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4565'just inserted' FROM t0_template 4566WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4567CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4568BEGIN 4569UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4570f_charbig = 'updated by trigger' 4571 WHERE f_int1 = new.f_int1; 4572END| 4573UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4574WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4575 4576# check trigger-5 success: 1 4577DROP TRIGGER trg_1; 4578UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4579f_int2 = CAST(f_char1 AS SIGNED INT), 4580f_charbig = 'just inserted' 4581 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4582DELETE FROM t0_aux 4583WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4584INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4585SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4586'just inserted' FROM t0_template 4587WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4588CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4589BEGIN 4590UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4591f_charbig = 'updated by trigger' 4592 WHERE f_int1 = - old.f_int1; 4593END| 4594UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4595WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4596 4597# check trigger-6 success: 1 4598DROP TRIGGER trg_1; 4599UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4600f_int2 = CAST(f_char1 AS SIGNED INT), 4601f_charbig = 'just inserted' 4602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4603DELETE FROM t0_aux 4604WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4605INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4606SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4607'just inserted' FROM t0_template 4608WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4609CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4610BEGIN 4611UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4612f_charbig = 'updated by trigger' 4613 WHERE f_int1 = - old.f_int1; 4614END| 4615DELETE FROM t0_aux 4616WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4617 4618# check trigger-7 success: 1 4619DROP TRIGGER trg_1; 4620UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4621f_int2 = CAST(f_char1 AS SIGNED INT), 4622f_charbig = 'just inserted' 4623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4624DELETE FROM t0_aux 4625WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4627SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4628'just inserted' FROM t0_template 4629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4630CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4631BEGIN 4632UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4633f_charbig = 'updated by trigger' 4634 WHERE f_int1 = - old.f_int1; 4635END| 4636DELETE FROM t0_aux 4637WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4638 4639# check trigger-8 success: 1 4640DROP TRIGGER trg_1; 4641UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4642f_int2 = CAST(f_char1 AS SIGNED INT), 4643f_charbig = 'just inserted' 4644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4645DELETE FROM t0_aux 4646WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4647DELETE FROM t1 4648WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4649CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4650BEGIN 4651SET new.f_int1 = old.f_int1 + @max_row, 4652new.f_int2 = old.f_int2 - @max_row, 4653new.f_charbig = '####updated per update trigger####'; 4654END| 4655UPDATE t1 4656SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4657f_charbig = '####updated per update statement itself####'; 4658Warnings: 4659Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4660 4661# check trigger-9 success: 1 4662DROP TRIGGER trg_2; 4663UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4664f_int2 = CAST(f_char1 AS SIGNED INT), 4665f_charbig = CONCAT('===',f_char1,'==='); 4666Warnings: 4667Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4668CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4669BEGIN 4670SET new.f_int1 = new.f_int1 + @max_row, 4671new.f_int2 = new.f_int2 - @max_row, 4672new.f_charbig = '####updated per update trigger####'; 4673END| 4674UPDATE t1 4675SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4676f_charbig = '####updated per update statement itself####'; 4677Warnings: 4678Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4679 4680# check trigger-10 success: 1 4681DROP TRIGGER trg_2; 4682UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4683f_int2 = CAST(f_char1 AS SIGNED INT), 4684f_charbig = CONCAT('===',f_char1,'==='); 4685Warnings: 4686Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4687CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4688BEGIN 4689SET new.f_int1 = @my_max1 + @counter, 4690new.f_int2 = @my_min2 - @counter, 4691new.f_charbig = '####updated per insert trigger####'; 4692SET @counter = @counter + 1; 4693END| 4694SET @counter = 1; 4695SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4696Warnings: 4697Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4698INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4699SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4700CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4702ORDER BY f_int1; 4703DROP TRIGGER trg_3; 4704 4705# check trigger-11 success: 1 4706Warnings: 4707Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4708DELETE FROM t1 4709WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4710AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4711AND f_charbig = '####updated per insert trigger####'; 4712CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4713BEGIN 4714SET new.f_int1 = @my_max1 + @counter, 4715new.f_int2 = @my_min2 - @counter, 4716new.f_charbig = '####updated per insert trigger####'; 4717SET @counter = @counter + 1; 4718END| 4719SET @counter = 1; 4720SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4721Warnings: 4722Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4723INSERT INTO t1 (f_char1, f_char2, f_charbig) 4724SELECT CAST(f_int1 AS CHAR), 4725CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4727ORDER BY f_int1; 4728DROP TRIGGER trg_3; 4729 4730# check trigger-12 success: 1 4731Warnings: 4732Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 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####'; 4737ANALYZE TABLE t1; 4738Table Op Msg_type Msg_text 4739test.t1 analyze status OK 4740test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4741CHECK TABLE t1 EXTENDED; 4742Table Op Msg_type Msg_text 4743test.t1 check status OK 4744test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4745CHECKSUM TABLE t1 EXTENDED; 4746Table Checksum 4747test.t1 <some_value> 4748OPTIMIZE TABLE t1; 4749Table Op Msg_type Msg_text 4750test.t1 optimize status OK 4751test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4752# check layout success: 1 4753REPAIR TABLE t1 EXTENDED; 4754Table Op Msg_type Msg_text 4755test.t1 repair status OK 4756test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4757# check layout success: 1 4758TRUNCATE t1; 4759Warnings: 4760Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4761 4762# check TRUNCATE success: 1 4763# check layout success: 1 4764# End usability test (inc/partition_check.inc) 4765DROP TABLE t1; 4766CREATE TABLE t1 ( 4767f_int1 INTEGER, 4768f_int2 INTEGER, 4769f_char1 CHAR(20), 4770f_char2 CHAR(20), 4771f_charbig VARCHAR(1000) 4772, UNIQUE INDEX uidx1 (f_int1,f_int2) 4773) 4774PARTITION BY KEY(f_int1) PARTITIONS 5; 4775Warnings: 4776Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4777INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4778SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4779WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 4780Warnings: 4781Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4782ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 4783Warnings: 4784Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4785INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4786SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4787WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 4788Warnings: 4789Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4790# Start usability test (inc/partition_check.inc) 4791create_command 4792SHOW CREATE TABLE t1; 4793Table Create Table 4794t1 CREATE TABLE `t1` ( 4795 `f_int1` int(11) DEFAULT NULL, 4796 `f_int2` mediumint(9) DEFAULT NULL, 4797 `f_char1` char(20) DEFAULT NULL, 4798 `f_char2` char(20) DEFAULT NULL, 4799 `f_charbig` varchar(1000) DEFAULT NULL, 4800 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 4801) ENGINE=MyISAM DEFAULT CHARSET=latin1 4802/*!50100 PARTITION BY KEY (f_int1) 4803PARTITIONS 5 */ 4804 4805unified filelist 4806t1#P#p0.MYD 4807t1#P#p0.MYI 4808t1#P#p1.MYD 4809t1#P#p1.MYI 4810t1#P#p2.MYD 4811t1#P#p2.MYI 4812t1#P#p3.MYD 4813t1#P#p3.MYI 4814t1#P#p4.MYD 4815t1#P#p4.MYI 4816t1.frm 4817t1.par 4818 4819# check prerequisites-1 success: 1 4820# check COUNT(*) success: 1 4821# check MIN/MAX(f_int1) success: 1 4822# check MIN/MAX(f_int2) success: 1 4823INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4824SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4825CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4826WHERE f_int1 IN (2,3); 4827ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 4828# check prerequisites-3 success: 1 4829# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 4830INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4831SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4832CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4833WHERE f_int1 IN (2,3); 4834DELETE FROM t1 WHERE f_charbig = 'delete me'; 4835INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4836SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4837CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4838WHERE f_int1 IN (2,3); 4839DELETE FROM t1 WHERE f_charbig = 'delete me'; 4840# check read via f_int1 success: 1 4841# check read via f_int2 success: 1 4842 4843# check multiple-1 success: 1 4844DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4845 4846# check multiple-2 success: 1 4847INSERT INTO t1 SELECT * FROM t0_template 4848WHERE MOD(f_int1,3) = 0; 4849 4850# check multiple-3 success: 1 4851UPDATE t1 SET f_int1 = f_int1 + @max_row 4852WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4853AND @max_row_div2 + @max_row_div4; 4854 4855# check multiple-4 success: 1 4856DELETE FROM t1 4857WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4858AND @max_row_div2 + @max_row_div4 + @max_row; 4859 4860# check multiple-5 success: 1 4861SELECT COUNT(*) INTO @try_count FROM t0_template 4862WHERE MOD(f_int1,3) = 0 4863AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4864SELECT COUNT(*) INTO @clash_count 4865FROM t1 INNER JOIN t0_template USING(f_int1) 4866WHERE MOD(f_int1,3) = 0 4867AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4868SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4869INSERT INTO t1 4870SET f_int1 = @cur_value , f_int2 = @cur_value, 4871f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4872f_charbig = '#SINGLE#'; 4873 4874# check single-1 success: 1 4875SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4876INSERT INTO t1 4877SET f_int1 = @cur_value , f_int2 = @cur_value, 4878f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4879f_charbig = '#SINGLE#'; 4880 4881# check single-2 success: 1 4882SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4883SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4884UPDATE t1 SET f_int1 = @cur_value2 4885WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4886 4887# check single-3 success: 1 4888SET @cur_value1= -1; 4889SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4890UPDATE t1 SET f_int1 = @cur_value1 4891WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4892 4893# check single-4 success: 1 4894SELECT MAX(f_int1) INTO @cur_value FROM t1; 4895DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4896 4897# check single-5 success: 1 4898DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4899 4900# check single-6 success: 1 4901INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4902Warnings: 4903Warning 1264 Out of range value for column 'f_int2' at row 1 4904 4905# check single-7 success: 1 4906DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4907DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4908INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4909f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4910f_charbig = '#NULL#'; 4911INSERT INTO t1 4912SET f_int1 = NULL , f_int2 = -@max_row, 4913f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4914f_charbig = '#NULL#'; 4915# check null success: 1 4916 4917# check null-1 success: 1 4918UPDATE t1 SET f_int1 = -@max_row 4919WHERE f_int1 IS NULL 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-2 success: 1 4923UPDATE t1 SET f_int1 = NULL 4924WHERE f_int1 = -@max_row 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-3 success: 1 4928DELETE FROM t1 4929WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4930AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4931 4932# check null-4 success: 1 4933DELETE FROM t1 4934WHERE f_int1 = 0 AND f_int2 = 0 4935AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4936AND f_charbig = '#NULL#'; 4937INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4938SELECT f_int1, f_int1, '', '', 'was inserted' 4939 FROM t0_template source_tab 4940WHERE MOD(f_int1,3) = 0 4941AND f_int1 BETWEEN @max_row_div2 AND @max_row 4942ON DUPLICATE KEY 4943UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 4944f_int2 = 2 * @max_row + source_tab.f_int1, 4945f_charbig = 'was updated'; 4946 4947# check unique-1-a success: 1 4948 4949# check unique-1-b success: 1 4950DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4951UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4952f_int2 = CAST(f_char1 AS SIGNED INT), 4953f_charbig = CONCAT('===',f_char1,'===') 4954WHERE f_charbig = 'was updated'; 4955REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4956SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 4957 FROM t0_template source_tab 4958WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4959 4960# check replace success: 1 4961DELETE FROM t1 4962WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 4963DELETE FROM t1 4964WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 4965f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 4966UPDATE t1 SET f_int2 = f_int1, 4967f_char1 = CAST(f_int1 AS CHAR), 4968f_char2 = CAST(f_int1 AS CHAR), 4969f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 4970WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 4971SET AUTOCOMMIT= 0; 4972INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4973SELECT f_int1, f_int1, '', '', 'was inserted' 4974FROM t0_template source_tab 4975WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4976 4977# check transactions-1 success: 1 4978COMMIT WORK; 4979 4980# check transactions-2 success: 1 4981ROLLBACK WORK; 4982 4983# check transactions-3 success: 1 4984DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4985COMMIT WORK; 4986ROLLBACK WORK; 4987 4988# check transactions-4 success: 1 4989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4990SELECT f_int1, f_int1, '', '', 'was inserted' 4991FROM t0_template source_tab 4992WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4993 4994# check transactions-5 success: 1 4995ROLLBACK WORK; 4996Warnings: 4997Warning 1196 Some non-transactional changed tables couldn't be rolled back 4998 4999# check transactions-6 success: 1 5000# INFO: Storage engine used for t1 seems to be not transactional. 5001COMMIT; 5002 5003# check transactions-7 success: 1 5004DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5005COMMIT WORK; 5006SET @@session.sql_mode = 'traditional'; 5007Warnings: 5008Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5009SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5010INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5011SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5012'', '', 'was inserted' FROM t0_template 5013WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5014ERROR 22012: Division by 0 5015COMMIT; 5016 5017# check transactions-8 success: 1 5018# INFO: Storage engine used for t1 seems to be unable to revert 5019# changes made by the failing statement. 5020SET @@session.sql_mode = ''; 5021Warnings: 5022Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5023SET AUTOCOMMIT= 1; 5024DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5025COMMIT WORK; 5026UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5027 5028# check special-1 success: 1 5029UPDATE t1 SET f_charbig = ''; 5030 5031# check special-2 success: 1 5032UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5033INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5034SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5038'just inserted' FROM t0_template 5039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5040CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5041BEGIN 5042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5043f_charbig = 'updated by trigger' 5044 WHERE f_int1 = new.f_int1; 5045END| 5046INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5047SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5049 5050# check trigger-1 success: 1 5051DROP TRIGGER trg_1; 5052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5053f_int2 = CAST(f_char1 AS SIGNED INT), 5054f_charbig = 'just inserted' 5055 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5056DELETE FROM t0_aux 5057WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5060'just inserted' FROM t0_template 5061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5062CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5063BEGIN 5064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5065f_charbig = 'updated by trigger' 5066 WHERE f_int1 = new.f_int1; 5067END| 5068INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5069SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5071 5072# check trigger-2 success: 1 5073DROP TRIGGER trg_1; 5074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5075f_int2 = CAST(f_char1 AS SIGNED INT), 5076f_charbig = 'just inserted' 5077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5078DELETE FROM t0_aux 5079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5082'just inserted' FROM t0_template 5083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5084CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5085BEGIN 5086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5087f_charbig = 'updated by trigger' 5088 WHERE f_int1 = new.f_int1; 5089END| 5090UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5092 5093# check trigger-3 success: 1 5094DROP TRIGGER trg_1; 5095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5096f_int2 = CAST(f_char1 AS SIGNED INT), 5097f_charbig = 'just inserted' 5098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5099DELETE FROM t0_aux 5100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5103'just inserted' FROM t0_template 5104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5105CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5106BEGIN 5107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5108f_charbig = 'updated by trigger' 5109 WHERE f_int1 = - old.f_int1; 5110END| 5111UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5113 5114# check trigger-4 success: 1 5115DROP TRIGGER trg_1; 5116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5117f_int2 = CAST(f_char1 AS SIGNED INT), 5118f_charbig = 'just inserted' 5119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5120DELETE FROM t0_aux 5121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5123SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5124'just inserted' FROM t0_template 5125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5126CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5127BEGIN 5128UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5129f_charbig = 'updated by trigger' 5130 WHERE f_int1 = new.f_int1; 5131END| 5132UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5133WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5134 5135# check trigger-5 success: 1 5136DROP TRIGGER trg_1; 5137UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5138f_int2 = CAST(f_char1 AS SIGNED INT), 5139f_charbig = 'just inserted' 5140 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5141DELETE FROM t0_aux 5142WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5143INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5144SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5145'just inserted' FROM t0_template 5146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5147CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5148BEGIN 5149UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5150f_charbig = 'updated by trigger' 5151 WHERE f_int1 = - old.f_int1; 5152END| 5153UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5154WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5155 5156# check trigger-6 success: 1 5157DROP TRIGGER trg_1; 5158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5159f_int2 = CAST(f_char1 AS SIGNED INT), 5160f_charbig = 'just inserted' 5161 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5162DELETE FROM t0_aux 5163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5164INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5165SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5166'just inserted' FROM t0_template 5167WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5168CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5169BEGIN 5170UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5171f_charbig = 'updated by trigger' 5172 WHERE f_int1 = - old.f_int1; 5173END| 5174DELETE FROM t0_aux 5175WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5176 5177# check trigger-7 success: 1 5178DROP TRIGGER trg_1; 5179UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5180f_int2 = CAST(f_char1 AS SIGNED INT), 5181f_charbig = 'just inserted' 5182 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5183DELETE FROM t0_aux 5184WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5185INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5186SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5187'just inserted' FROM t0_template 5188WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5189CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5190BEGIN 5191UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5192f_charbig = 'updated by trigger' 5193 WHERE f_int1 = - old.f_int1; 5194END| 5195DELETE FROM t0_aux 5196WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5197 5198# check trigger-8 success: 1 5199DROP TRIGGER trg_1; 5200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5201f_int2 = CAST(f_char1 AS SIGNED INT), 5202f_charbig = 'just inserted' 5203 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5204DELETE FROM t0_aux 5205WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5206DELETE FROM t1 5207WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5208CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5209BEGIN 5210SET new.f_int1 = old.f_int1 + @max_row, 5211new.f_int2 = old.f_int2 - @max_row, 5212new.f_charbig = '####updated per update trigger####'; 5213END| 5214UPDATE t1 5215SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5216f_charbig = '####updated per update statement itself####'; 5217Warnings: 5218Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5219 5220# check trigger-9 success: 1 5221DROP TRIGGER trg_2; 5222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5223f_int2 = CAST(f_char1 AS SIGNED INT), 5224f_charbig = CONCAT('===',f_char1,'==='); 5225Warnings: 5226Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5227CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5228BEGIN 5229SET new.f_int1 = new.f_int1 + @max_row, 5230new.f_int2 = new.f_int2 - @max_row, 5231new.f_charbig = '####updated per update trigger####'; 5232END| 5233UPDATE t1 5234SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5235f_charbig = '####updated per update statement itself####'; 5236Warnings: 5237Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5238 5239# check trigger-10 success: 1 5240DROP TRIGGER trg_2; 5241UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5242f_int2 = CAST(f_char1 AS SIGNED INT), 5243f_charbig = CONCAT('===',f_char1,'==='); 5244Warnings: 5245Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5246CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5247BEGIN 5248SET new.f_int1 = @my_max1 + @counter, 5249new.f_int2 = @my_min2 - @counter, 5250new.f_charbig = '####updated per insert trigger####'; 5251SET @counter = @counter + 1; 5252END| 5253SET @counter = 1; 5254SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5255Warnings: 5256Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5257INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5258SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5259CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5261ORDER BY f_int1; 5262DROP TRIGGER trg_3; 5263 5264# check trigger-11 success: 1 5265Warnings: 5266Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5267DELETE FROM t1 5268WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5269AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5270AND f_charbig = '####updated per insert trigger####'; 5271CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5272BEGIN 5273SET new.f_int1 = @my_max1 + @counter, 5274new.f_int2 = @my_min2 - @counter, 5275new.f_charbig = '####updated per insert trigger####'; 5276SET @counter = @counter + 1; 5277END| 5278SET @counter = 1; 5279SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5280Warnings: 5281Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5282INSERT INTO t1 (f_char1, f_char2, f_charbig) 5283SELECT CAST(f_int1 AS CHAR), 5284CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5286ORDER BY f_int1; 5287DROP TRIGGER trg_3; 5288 5289# check trigger-12 success: 1 5290Warnings: 5291Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5292DELETE FROM t1 5293WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5294AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5295AND f_charbig = '####updated per insert trigger####'; 5296ANALYZE TABLE t1; 5297Table Op Msg_type Msg_text 5298test.t1 analyze status OK 5299test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5300CHECK TABLE t1 EXTENDED; 5301Table Op Msg_type Msg_text 5302test.t1 check status OK 5303test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5304CHECKSUM TABLE t1 EXTENDED; 5305Table Checksum 5306test.t1 <some_value> 5307OPTIMIZE TABLE t1; 5308Table Op Msg_type Msg_text 5309test.t1 optimize status OK 5310test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5311# check layout success: 1 5312REPAIR TABLE t1 EXTENDED; 5313Table Op Msg_type Msg_text 5314test.t1 repair status OK 5315test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5316# check layout success: 1 5317TRUNCATE t1; 5318Warnings: 5319Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5320 5321# check TRUNCATE success: 1 5322# check layout success: 1 5323# End usability test (inc/partition_check.inc) 5324DROP TABLE t1; 5325CREATE TABLE t1 ( 5326f_int1 INTEGER, 5327f_int2 INTEGER, 5328f_char1 CHAR(20), 5329f_char2 CHAR(20), 5330f_charbig VARCHAR(1000) 5331, UNIQUE INDEX uidx1 (f_int1,f_int2) 5332) 5333PARTITION BY LIST(MOD(f_int1,4)) 5334(PARTITION part_3 VALUES IN (-3), 5335PARTITION part_2 VALUES IN (-2), 5336PARTITION part_1 VALUES IN (-1), 5337PARTITION part_N VALUES IN (NULL), 5338PARTITION part0 VALUES IN (0), 5339PARTITION part1 VALUES IN (1), 5340PARTITION part2 VALUES IN (2), 5341PARTITION part3 VALUES IN (3)); 5342Warnings: 5343Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5344INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5345SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5346WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 5347Warnings: 5348Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5349ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 5350Warnings: 5351Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5352INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5353SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5354WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 5355Warnings: 5356Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5357# Start usability test (inc/partition_check.inc) 5358create_command 5359SHOW CREATE TABLE t1; 5360Table Create Table 5361t1 CREATE TABLE `t1` ( 5362 `f_int1` int(11) DEFAULT NULL, 5363 `f_int2` mediumint(9) DEFAULT NULL, 5364 `f_char1` char(20) DEFAULT NULL, 5365 `f_char2` char(20) DEFAULT NULL, 5366 `f_charbig` varchar(1000) DEFAULT NULL, 5367 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 5368) ENGINE=MyISAM DEFAULT CHARSET=latin1 5369/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 5370(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 5371 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 5372 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 5373 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 5374 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 5375 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 5376 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 5377 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 5378 5379unified filelist 5380t1#P#part0.MYD 5381t1#P#part0.MYI 5382t1#P#part1.MYD 5383t1#P#part1.MYI 5384t1#P#part2.MYD 5385t1#P#part2.MYI 5386t1#P#part3.MYD 5387t1#P#part3.MYI 5388t1#P#part_1.MYD 5389t1#P#part_1.MYI 5390t1#P#part_2.MYD 5391t1#P#part_2.MYI 5392t1#P#part_3.MYD 5393t1#P#part_3.MYI 5394t1#P#part_N.MYD 5395t1#P#part_N.MYI 5396t1.frm 5397t1.par 5398 5399# check prerequisites-1 success: 1 5400# check COUNT(*) success: 1 5401# check MIN/MAX(f_int1) success: 1 5402# check MIN/MAX(f_int2) success: 1 5403INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5404SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5405CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5406WHERE f_int1 IN (2,3); 5407ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 5408# check prerequisites-3 success: 1 5409# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 5410INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5411SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5412CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5413WHERE f_int1 IN (2,3); 5414DELETE FROM t1 WHERE f_charbig = 'delete me'; 5415INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5416SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5417CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5418WHERE f_int1 IN (2,3); 5419DELETE FROM t1 WHERE f_charbig = 'delete me'; 5420# check read via f_int1 success: 1 5421# check read via f_int2 success: 1 5422 5423# check multiple-1 success: 1 5424DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5425 5426# check multiple-2 success: 1 5427INSERT INTO t1 SELECT * FROM t0_template 5428WHERE MOD(f_int1,3) = 0; 5429 5430# check multiple-3 success: 1 5431UPDATE t1 SET f_int1 = f_int1 + @max_row 5432WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5433AND @max_row_div2 + @max_row_div4; 5434 5435# check multiple-4 success: 1 5436DELETE FROM t1 5437WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5438AND @max_row_div2 + @max_row_div4 + @max_row; 5439 5440# check multiple-5 success: 1 5441SELECT COUNT(*) INTO @try_count FROM t0_template 5442WHERE MOD(f_int1,3) = 0 5443AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5444SELECT COUNT(*) INTO @clash_count 5445FROM t1 INNER JOIN t0_template USING(f_int1) 5446WHERE MOD(f_int1,3) = 0 5447AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5448SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5449INSERT INTO t1 5450SET f_int1 = @cur_value , f_int2 = @cur_value, 5451f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5452f_charbig = '#SINGLE#'; 5453 5454# check single-1 success: 1 5455SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5456INSERT INTO t1 5457SET f_int1 = @cur_value , f_int2 = @cur_value, 5458f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5459f_charbig = '#SINGLE#'; 5460 5461# check single-2 success: 1 5462SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5463SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5464UPDATE t1 SET f_int1 = @cur_value2 5465WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5466 5467# check single-3 success: 1 5468SET @cur_value1= -1; 5469SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5470UPDATE t1 SET f_int1 = @cur_value1 5471WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5472 5473# check single-4 success: 1 5474SELECT MAX(f_int1) INTO @cur_value FROM t1; 5475DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5476 5477# check single-5 success: 1 5478DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5479 5480# check single-6 success: 1 5481INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5482Warnings: 5483Warning 1264 Out of range value for column 'f_int2' at row 1 5484 5485# check single-7 success: 1 5486DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 5487DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5488INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5489f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5490f_charbig = '#NULL#'; 5491INSERT INTO t1 5492SET f_int1 = NULL , f_int2 = -@max_row, 5493f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5494f_charbig = '#NULL#'; 5495# check null success: 1 5496 5497# check null-1 success: 1 5498UPDATE t1 SET f_int1 = -@max_row 5499WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5500AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5501 5502# check null-2 success: 1 5503UPDATE t1 SET f_int1 = NULL 5504WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5505AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5506 5507# check null-3 success: 1 5508DELETE FROM t1 5509WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5510AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5511 5512# check null-4 success: 1 5513DELETE FROM t1 5514WHERE f_int1 = 0 AND f_int2 = 0 5515AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5516AND f_charbig = '#NULL#'; 5517INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5518SELECT f_int1, f_int1, '', '', 'was inserted' 5519 FROM t0_template source_tab 5520WHERE MOD(f_int1,3) = 0 5521AND f_int1 BETWEEN @max_row_div2 AND @max_row 5522ON DUPLICATE KEY 5523UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 5524f_int2 = 2 * @max_row + source_tab.f_int1, 5525f_charbig = 'was updated'; 5526 5527# check unique-1-a success: 1 5528 5529# check unique-1-b success: 1 5530DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5531UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5532f_int2 = CAST(f_char1 AS SIGNED INT), 5533f_charbig = CONCAT('===',f_char1,'===') 5534WHERE f_charbig = 'was updated'; 5535REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5536SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 5537 FROM t0_template source_tab 5538WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5539 5540# check replace success: 1 5541DELETE FROM t1 5542WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 5543DELETE FROM t1 5544WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 5545f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 5546UPDATE t1 SET f_int2 = f_int1, 5547f_char1 = CAST(f_int1 AS CHAR), 5548f_char2 = CAST(f_int1 AS CHAR), 5549f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 5550WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 5551SET AUTOCOMMIT= 0; 5552INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5553SELECT f_int1, f_int1, '', '', 'was inserted' 5554FROM t0_template source_tab 5555WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5556 5557# check transactions-1 success: 1 5558COMMIT WORK; 5559 5560# check transactions-2 success: 1 5561ROLLBACK WORK; 5562 5563# check transactions-3 success: 1 5564DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5565COMMIT WORK; 5566ROLLBACK WORK; 5567 5568# check transactions-4 success: 1 5569INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5570SELECT f_int1, f_int1, '', '', 'was inserted' 5571FROM t0_template source_tab 5572WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5573 5574# check transactions-5 success: 1 5575ROLLBACK WORK; 5576Warnings: 5577Warning 1196 Some non-transactional changed tables couldn't be rolled back 5578 5579# check transactions-6 success: 1 5580# INFO: Storage engine used for t1 seems to be not transactional. 5581COMMIT; 5582 5583# check transactions-7 success: 1 5584DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5585COMMIT WORK; 5586SET @@session.sql_mode = 'traditional'; 5587Warnings: 5588Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5589SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5590INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5591SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5592'', '', 'was inserted' FROM t0_template 5593WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5594ERROR 22012: Division by 0 5595COMMIT; 5596 5597# check transactions-8 success: 1 5598# INFO: Storage engine used for t1 seems to be unable to revert 5599# changes made by the failing statement. 5600SET @@session.sql_mode = ''; 5601Warnings: 5602Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5603SET AUTOCOMMIT= 1; 5604DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5605COMMIT WORK; 5606UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5607 5608# check special-1 success: 1 5609UPDATE t1 SET f_charbig = ''; 5610 5611# check special-2 success: 1 5612UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5613INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5614SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5615WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5616INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5617SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5618'just inserted' FROM t0_template 5619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5620CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5621BEGIN 5622UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5623f_charbig = 'updated by trigger' 5624 WHERE f_int1 = new.f_int1; 5625END| 5626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5627SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5629 5630# check trigger-1 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; 5638INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5639SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5640'just inserted' FROM t0_template 5641WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5642CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5643BEGIN 5644UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5645f_charbig = 'updated by trigger' 5646 WHERE f_int1 = new.f_int1; 5647END| 5648INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5649SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5650WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5651 5652# check trigger-2 success: 1 5653DROP TRIGGER trg_1; 5654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5655f_int2 = CAST(f_char1 AS SIGNED INT), 5656f_charbig = 'just inserted' 5657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5658DELETE FROM t0_aux 5659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5662'just inserted' FROM t0_template 5663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5664CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5665BEGIN 5666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5667f_charbig = 'updated by trigger' 5668 WHERE f_int1 = new.f_int1; 5669END| 5670UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5672 5673# check trigger-3 success: 1 5674DROP TRIGGER trg_1; 5675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5676f_int2 = CAST(f_char1 AS SIGNED INT), 5677f_charbig = 'just inserted' 5678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5679DELETE FROM t0_aux 5680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5683'just inserted' FROM t0_template 5684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5685CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5686BEGIN 5687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5688f_charbig = 'updated by trigger' 5689 WHERE f_int1 = - old.f_int1; 5690END| 5691UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5693 5694# check trigger-4 success: 1 5695DROP TRIGGER trg_1; 5696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5697f_int2 = CAST(f_char1 AS SIGNED INT), 5698f_charbig = 'just inserted' 5699 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5700DELETE FROM t0_aux 5701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5704'just inserted' FROM t0_template 5705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5706CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5707BEGIN 5708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5709f_charbig = 'updated by trigger' 5710 WHERE f_int1 = new.f_int1; 5711END| 5712UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5714 5715# check trigger-5 success: 1 5716DROP TRIGGER trg_1; 5717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5718f_int2 = CAST(f_char1 AS SIGNED INT), 5719f_charbig = 'just inserted' 5720 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5721DELETE FROM t0_aux 5722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5724SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5725'just inserted' FROM t0_template 5726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5727CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5728BEGIN 5729UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5730f_charbig = 'updated by trigger' 5731 WHERE f_int1 = - old.f_int1; 5732END| 5733UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5734WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5735 5736# check trigger-6 success: 1 5737DROP TRIGGER trg_1; 5738UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5739f_int2 = CAST(f_char1 AS SIGNED INT), 5740f_charbig = 'just inserted' 5741 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5742DELETE FROM t0_aux 5743WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5744INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5745SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5746'just inserted' FROM t0_template 5747WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5748CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5749BEGIN 5750UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5751f_charbig = 'updated by trigger' 5752 WHERE f_int1 = - old.f_int1; 5753END| 5754DELETE FROM t0_aux 5755WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5756 5757# check trigger-7 success: 1 5758DROP TRIGGER trg_1; 5759UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5760f_int2 = CAST(f_char1 AS SIGNED INT), 5761f_charbig = 'just inserted' 5762 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5763DELETE FROM t0_aux 5764WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5765INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5766SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5767'just inserted' FROM t0_template 5768WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5769CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5770BEGIN 5771UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5772f_charbig = 'updated by trigger' 5773 WHERE f_int1 = - old.f_int1; 5774END| 5775DELETE FROM t0_aux 5776WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5777 5778# check trigger-8 success: 1 5779DROP TRIGGER trg_1; 5780UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5781f_int2 = CAST(f_char1 AS SIGNED INT), 5782f_charbig = 'just inserted' 5783 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5784DELETE FROM t0_aux 5785WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5786DELETE FROM t1 5787WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5788CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5789BEGIN 5790SET new.f_int1 = old.f_int1 + @max_row, 5791new.f_int2 = old.f_int2 - @max_row, 5792new.f_charbig = '####updated per update trigger####'; 5793END| 5794UPDATE t1 5795SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5796f_charbig = '####updated per update statement itself####'; 5797Warnings: 5798Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5799 5800# check trigger-9 success: 1 5801DROP TRIGGER trg_2; 5802UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5803f_int2 = CAST(f_char1 AS SIGNED INT), 5804f_charbig = CONCAT('===',f_char1,'==='); 5805Warnings: 5806Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5807CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5808BEGIN 5809SET new.f_int1 = new.f_int1 + @max_row, 5810new.f_int2 = new.f_int2 - @max_row, 5811new.f_charbig = '####updated per update trigger####'; 5812END| 5813UPDATE t1 5814SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5815f_charbig = '####updated per update statement itself####'; 5816Warnings: 5817Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5818 5819# check trigger-10 success: 1 5820DROP TRIGGER trg_2; 5821UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5822f_int2 = CAST(f_char1 AS SIGNED INT), 5823f_charbig = CONCAT('===',f_char1,'==='); 5824Warnings: 5825Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5826CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5827BEGIN 5828SET new.f_int1 = @my_max1 + @counter, 5829new.f_int2 = @my_min2 - @counter, 5830new.f_charbig = '####updated per insert trigger####'; 5831SET @counter = @counter + 1; 5832END| 5833SET @counter = 1; 5834SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5835Warnings: 5836Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5837INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5838SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5839CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5840WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5841ORDER BY f_int1; 5842DROP TRIGGER trg_3; 5843 5844# check trigger-11 success: 1 5845Warnings: 5846Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5847DELETE FROM t1 5848WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5849AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5850AND f_charbig = '####updated per insert trigger####'; 5851CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5852BEGIN 5853SET new.f_int1 = @my_max1 + @counter, 5854new.f_int2 = @my_min2 - @counter, 5855new.f_charbig = '####updated per insert trigger####'; 5856SET @counter = @counter + 1; 5857END| 5858SET @counter = 1; 5859SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5860Warnings: 5861Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5862INSERT INTO t1 (f_char1, f_char2, f_charbig) 5863SELECT CAST(f_int1 AS CHAR), 5864CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5866ORDER BY f_int1; 5867DROP TRIGGER trg_3; 5868 5869# check trigger-12 success: 1 5870Warnings: 5871Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5872DELETE FROM t1 5873WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5874AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5875AND f_charbig = '####updated per insert trigger####'; 5876ANALYZE TABLE t1; 5877Table Op Msg_type Msg_text 5878test.t1 analyze status OK 5879test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5880CHECK TABLE t1 EXTENDED; 5881Table Op Msg_type Msg_text 5882test.t1 check status OK 5883test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5884CHECKSUM TABLE t1 EXTENDED; 5885Table Checksum 5886test.t1 <some_value> 5887OPTIMIZE TABLE t1; 5888Table Op Msg_type Msg_text 5889test.t1 optimize status OK 5890test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5891# check layout success: 1 5892REPAIR TABLE t1 EXTENDED; 5893Table Op Msg_type Msg_text 5894test.t1 repair status OK 5895test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5896# check layout success: 1 5897TRUNCATE t1; 5898Warnings: 5899Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5900 5901# check TRUNCATE success: 1 5902# check layout success: 1 5903# End usability test (inc/partition_check.inc) 5904DROP TABLE t1; 5905CREATE TABLE t1 ( 5906f_int1 INTEGER, 5907f_int2 INTEGER, 5908f_char1 CHAR(20), 5909f_char2 CHAR(20), 5910f_charbig VARCHAR(1000) 5911, UNIQUE INDEX uidx1 (f_int1,f_int2) 5912) 5913PARTITION BY RANGE(f_int1) 5914(PARTITION parta VALUES LESS THAN (0), 5915PARTITION partb VALUES LESS THAN (5), 5916PARTITION partc VALUES LESS THAN (10), 5917PARTITION partd VALUES LESS THAN (10 + 5), 5918PARTITION parte VALUES LESS THAN (20), 5919PARTITION partf VALUES LESS THAN (2147483646)); 5920Warnings: 5921Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5922INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5923SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5924WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 5925Warnings: 5926Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5927ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 5928Warnings: 5929Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5930INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5931SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5932WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 5933Warnings: 5934Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5935# Start usability test (inc/partition_check.inc) 5936create_command 5937SHOW CREATE TABLE t1; 5938Table Create Table 5939t1 CREATE TABLE `t1` ( 5940 `f_int1` int(11) DEFAULT NULL, 5941 `f_int2` mediumint(9) DEFAULT NULL, 5942 `f_char1` char(20) DEFAULT NULL, 5943 `f_char2` char(20) DEFAULT NULL, 5944 `f_charbig` varchar(1000) DEFAULT NULL, 5945 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 5946) ENGINE=MyISAM DEFAULT CHARSET=latin1 5947/*!50100 PARTITION BY RANGE (f_int1) 5948(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 5949 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 5950 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 5951 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 5952 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 5953 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 5954 5955unified filelist 5956t1#P#parta.MYD 5957t1#P#parta.MYI 5958t1#P#partb.MYD 5959t1#P#partb.MYI 5960t1#P#partc.MYD 5961t1#P#partc.MYI 5962t1#P#partd.MYD 5963t1#P#partd.MYI 5964t1#P#parte.MYD 5965t1#P#parte.MYI 5966t1#P#partf.MYD 5967t1#P#partf.MYI 5968t1.frm 5969t1.par 5970 5971# check prerequisites-1 success: 1 5972# check COUNT(*) success: 1 5973# check MIN/MAX(f_int1) success: 1 5974# check MIN/MAX(f_int2) success: 1 5975INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5976SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5977CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5978WHERE f_int1 IN (2,3); 5979ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 5980# check prerequisites-3 success: 1 5981# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 5982INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5983SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5984CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5985WHERE f_int1 IN (2,3); 5986DELETE FROM t1 WHERE f_charbig = 'delete me'; 5987INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5988SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5989CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5990WHERE f_int1 IN (2,3); 5991DELETE FROM t1 WHERE f_charbig = 'delete me'; 5992# check read via f_int1 success: 1 5993# check read via f_int2 success: 1 5994 5995# check multiple-1 success: 1 5996DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5997 5998# check multiple-2 success: 1 5999INSERT INTO t1 SELECT * FROM t0_template 6000WHERE MOD(f_int1,3) = 0; 6001 6002# check multiple-3 success: 1 6003UPDATE t1 SET f_int1 = f_int1 + @max_row 6004WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6005AND @max_row_div2 + @max_row_div4; 6006 6007# check multiple-4 success: 1 6008DELETE FROM t1 6009WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6010AND @max_row_div2 + @max_row_div4 + @max_row; 6011 6012# check multiple-5 success: 1 6013SELECT COUNT(*) INTO @try_count FROM t0_template 6014WHERE MOD(f_int1,3) = 0 6015AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6016SELECT COUNT(*) INTO @clash_count 6017FROM t1 INNER JOIN t0_template USING(f_int1) 6018WHERE MOD(f_int1,3) = 0 6019AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6020SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6021INSERT INTO t1 6022SET f_int1 = @cur_value , f_int2 = @cur_value, 6023f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6024f_charbig = '#SINGLE#'; 6025 6026# check single-1 success: 1 6027SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6028INSERT INTO t1 6029SET f_int1 = @cur_value , f_int2 = @cur_value, 6030f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6031f_charbig = '#SINGLE#'; 6032 6033# check single-2 success: 1 6034SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6035SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6036UPDATE t1 SET f_int1 = @cur_value2 6037WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6038 6039# check single-3 success: 1 6040SET @cur_value1= -1; 6041SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6042UPDATE t1 SET f_int1 = @cur_value1 6043WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6044 6045# check single-4 success: 1 6046SELECT MAX(f_int1) INTO @cur_value FROM t1; 6047DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6048 6049# check single-5 success: 1 6050DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6051 6052# check single-6 success: 1 6053INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6054ERROR HY000: Table has no partition for value 2147483647 6055DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6056INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6057f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6058f_charbig = '#NULL#'; 6059INSERT INTO t1 6060SET f_int1 = NULL , f_int2 = -@max_row, 6061f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6062f_charbig = '#NULL#'; 6063# check null success: 1 6064 6065# check null-1 success: 1 6066UPDATE t1 SET f_int1 = -@max_row 6067WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6068AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6069 6070# check null-2 success: 1 6071UPDATE t1 SET f_int1 = NULL 6072WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6073AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6074 6075# check null-3 success: 1 6076DELETE FROM t1 6077WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6078AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6079 6080# check null-4 success: 1 6081DELETE FROM t1 6082WHERE f_int1 = 0 AND f_int2 = 0 6083AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6084AND f_charbig = '#NULL#'; 6085INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6086SELECT f_int1, f_int1, '', '', 'was inserted' 6087 FROM t0_template source_tab 6088WHERE MOD(f_int1,3) = 0 6089AND f_int1 BETWEEN @max_row_div2 AND @max_row 6090ON DUPLICATE KEY 6091UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 6092f_int2 = 2 * @max_row + source_tab.f_int1, 6093f_charbig = 'was updated'; 6094 6095# check unique-1-a success: 1 6096 6097# check unique-1-b success: 1 6098DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6099UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6100f_int2 = CAST(f_char1 AS SIGNED INT), 6101f_charbig = CONCAT('===',f_char1,'===') 6102WHERE f_charbig = 'was updated'; 6103REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6104SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 6105 FROM t0_template source_tab 6106WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6107 6108# check replace success: 1 6109DELETE FROM t1 6110WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 6111DELETE FROM t1 6112WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 6113f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 6114UPDATE t1 SET f_int2 = f_int1, 6115f_char1 = CAST(f_int1 AS CHAR), 6116f_char2 = CAST(f_int1 AS CHAR), 6117f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 6118WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 6119SET AUTOCOMMIT= 0; 6120INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6121SELECT f_int1, f_int1, '', '', 'was inserted' 6122FROM t0_template source_tab 6123WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6124 6125# check transactions-1 success: 1 6126COMMIT WORK; 6127 6128# check transactions-2 success: 1 6129ROLLBACK WORK; 6130 6131# check transactions-3 success: 1 6132DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6133COMMIT WORK; 6134ROLLBACK WORK; 6135 6136# check transactions-4 success: 1 6137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6138SELECT f_int1, f_int1, '', '', 'was inserted' 6139FROM t0_template source_tab 6140WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6141 6142# check transactions-5 success: 1 6143ROLLBACK WORK; 6144Warnings: 6145Warning 1196 Some non-transactional changed tables couldn't be rolled back 6146 6147# check transactions-6 success: 1 6148# INFO: Storage engine used for t1 seems to be not transactional. 6149COMMIT; 6150 6151# check transactions-7 success: 1 6152DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6153COMMIT WORK; 6154SET @@session.sql_mode = 'traditional'; 6155Warnings: 6156Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6157SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6158INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6159SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6160'', '', 'was inserted' FROM t0_template 6161WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6162ERROR 22012: Division by 0 6163COMMIT; 6164 6165# check transactions-8 success: 1 6166# INFO: Storage engine used for t1 seems to be unable to revert 6167# changes made by the failing statement. 6168SET @@session.sql_mode = ''; 6169Warnings: 6170Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6171SET AUTOCOMMIT= 1; 6172DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6173COMMIT WORK; 6174UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6175 6176# check special-1 success: 1 6177UPDATE t1 SET f_charbig = ''; 6178 6179# check special-2 success: 1 6180UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6181INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6182SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6183WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6185SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6186'just inserted' FROM t0_template 6187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6188CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6189BEGIN 6190UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6191f_charbig = 'updated by trigger' 6192 WHERE f_int1 = new.f_int1; 6193END| 6194INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6195SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6196WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6197 6198# check trigger-1 success: 1 6199DROP TRIGGER trg_1; 6200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6201f_int2 = CAST(f_char1 AS SIGNED INT), 6202f_charbig = 'just inserted' 6203 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6204DELETE FROM t0_aux 6205WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6206INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6207SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6208'just inserted' FROM t0_template 6209WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6210CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6211BEGIN 6212UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6213f_charbig = 'updated by trigger' 6214 WHERE f_int1 = new.f_int1; 6215END| 6216INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6217SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6219 6220# check trigger-2 success: 1 6221DROP TRIGGER trg_1; 6222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6223f_int2 = CAST(f_char1 AS SIGNED INT), 6224f_charbig = 'just inserted' 6225 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6226DELETE FROM t0_aux 6227WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6228INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6229SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6230'just inserted' FROM t0_template 6231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6232CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6233BEGIN 6234UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6235f_charbig = 'updated by trigger' 6236 WHERE f_int1 = new.f_int1; 6237END| 6238UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6239WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6240 6241# check trigger-3 success: 1 6242DROP TRIGGER trg_1; 6243UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6244f_int2 = CAST(f_char1 AS SIGNED INT), 6245f_charbig = 'just inserted' 6246 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6247DELETE FROM t0_aux 6248WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6250SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6251'just inserted' FROM t0_template 6252WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6253CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6254BEGIN 6255UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6256f_charbig = 'updated by trigger' 6257 WHERE f_int1 = - old.f_int1; 6258END| 6259UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6260WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6261 6262# check trigger-4 success: 1 6263DROP TRIGGER trg_1; 6264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6265f_int2 = CAST(f_char1 AS SIGNED INT), 6266f_charbig = 'just inserted' 6267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6268DELETE FROM t0_aux 6269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6270INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6271SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6272'just inserted' FROM t0_template 6273WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6274CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6275BEGIN 6276UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6277f_charbig = 'updated by trigger' 6278 WHERE f_int1 = new.f_int1; 6279END| 6280UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6281WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6282 6283# check trigger-5 success: 1 6284DROP TRIGGER trg_1; 6285UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6286f_int2 = CAST(f_char1 AS SIGNED INT), 6287f_charbig = 'just inserted' 6288 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6289DELETE FROM t0_aux 6290WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6291INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6292SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6293'just inserted' FROM t0_template 6294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6295CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6296BEGIN 6297UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6298f_charbig = 'updated by trigger' 6299 WHERE f_int1 = - old.f_int1; 6300END| 6301UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6302WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6303 6304# check trigger-6 success: 1 6305DROP TRIGGER trg_1; 6306UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6307f_int2 = CAST(f_char1 AS SIGNED INT), 6308f_charbig = 'just inserted' 6309 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6310DELETE FROM t0_aux 6311WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6312INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6313SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6314'just inserted' FROM t0_template 6315WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6316CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6317BEGIN 6318UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6319f_charbig = 'updated by trigger' 6320 WHERE f_int1 = - old.f_int1; 6321END| 6322DELETE FROM t0_aux 6323WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6324 6325# check trigger-7 success: 1 6326DROP TRIGGER trg_1; 6327UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6328f_int2 = CAST(f_char1 AS SIGNED INT), 6329f_charbig = 'just inserted' 6330 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6331DELETE FROM t0_aux 6332WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6333INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6334SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6335'just inserted' FROM t0_template 6336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6337CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6338BEGIN 6339UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6340f_charbig = 'updated by trigger' 6341 WHERE f_int1 = - old.f_int1; 6342END| 6343DELETE FROM t0_aux 6344WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6345 6346# check trigger-8 success: 1 6347DROP TRIGGER trg_1; 6348UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6349f_int2 = CAST(f_char1 AS SIGNED INT), 6350f_charbig = 'just inserted' 6351 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6352DELETE FROM t0_aux 6353WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6354DELETE FROM t1 6355WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6356CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6357BEGIN 6358SET new.f_int1 = old.f_int1 + @max_row, 6359new.f_int2 = old.f_int2 - @max_row, 6360new.f_charbig = '####updated per update trigger####'; 6361END| 6362UPDATE t1 6363SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6364f_charbig = '####updated per update statement itself####'; 6365Warnings: 6366Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6367 6368# check trigger-9 success: 1 6369DROP TRIGGER trg_2; 6370UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6371f_int2 = CAST(f_char1 AS SIGNED INT), 6372f_charbig = CONCAT('===',f_char1,'==='); 6373Warnings: 6374Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6375CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6376BEGIN 6377SET new.f_int1 = new.f_int1 + @max_row, 6378new.f_int2 = new.f_int2 - @max_row, 6379new.f_charbig = '####updated per update trigger####'; 6380END| 6381UPDATE t1 6382SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6383f_charbig = '####updated per update statement itself####'; 6384Warnings: 6385Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6386 6387# check trigger-10 success: 1 6388DROP TRIGGER trg_2; 6389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6390f_int2 = CAST(f_char1 AS SIGNED INT), 6391f_charbig = CONCAT('===',f_char1,'==='); 6392Warnings: 6393Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6394CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6395BEGIN 6396SET new.f_int1 = @my_max1 + @counter, 6397new.f_int2 = @my_min2 - @counter, 6398new.f_charbig = '####updated per insert trigger####'; 6399SET @counter = @counter + 1; 6400END| 6401SET @counter = 1; 6402SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6403Warnings: 6404Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6405INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6406SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6407CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6408WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6409ORDER BY f_int1; 6410DROP TRIGGER trg_3; 6411 6412# check trigger-11 success: 1 6413Warnings: 6414Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6415DELETE FROM t1 6416WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6417AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6418AND f_charbig = '####updated per insert trigger####'; 6419CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6420BEGIN 6421SET new.f_int1 = @my_max1 + @counter, 6422new.f_int2 = @my_min2 - @counter, 6423new.f_charbig = '####updated per insert trigger####'; 6424SET @counter = @counter + 1; 6425END| 6426SET @counter = 1; 6427SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6428Warnings: 6429Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6430INSERT INTO t1 (f_char1, f_char2, f_charbig) 6431SELECT CAST(f_int1 AS CHAR), 6432CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6434ORDER BY f_int1; 6435DROP TRIGGER trg_3; 6436 6437# check trigger-12 success: 1 6438Warnings: 6439Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6440DELETE FROM t1 6441WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6442AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6443AND f_charbig = '####updated per insert trigger####'; 6444ANALYZE TABLE t1; 6445Table Op Msg_type Msg_text 6446test.t1 analyze status OK 6447test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6448CHECK TABLE t1 EXTENDED; 6449Table Op Msg_type Msg_text 6450test.t1 check status OK 6451test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6452CHECKSUM TABLE t1 EXTENDED; 6453Table Checksum 6454test.t1 <some_value> 6455OPTIMIZE TABLE t1; 6456Table Op Msg_type Msg_text 6457test.t1 optimize status OK 6458test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6459# check layout success: 1 6460REPAIR TABLE t1 EXTENDED; 6461Table Op Msg_type Msg_text 6462test.t1 repair status OK 6463test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6464# check layout success: 1 6465TRUNCATE t1; 6466Warnings: 6467Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6468 6469# check TRUNCATE success: 1 6470# check layout success: 1 6471# End usability test (inc/partition_check.inc) 6472DROP TABLE t1; 6473CREATE TABLE t1 ( 6474f_int1 INTEGER, 6475f_int2 INTEGER, 6476f_char1 CHAR(20), 6477f_char2 CHAR(20), 6478f_charbig VARCHAR(1000) 6479, UNIQUE INDEX uidx1 (f_int1,f_int2) 6480) 6481PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 6482(PARTITION parta VALUES LESS THAN (0), 6483PARTITION partb VALUES LESS THAN (5), 6484PARTITION partc VALUES LESS THAN (10), 6485PARTITION partd VALUES LESS THAN (2147483646)); 6486Warnings: 6487Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6488INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6489SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6490WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 6491Warnings: 6492Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6493ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 6494Warnings: 6495Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6496INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6497SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6498WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 6499Warnings: 6500Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6501# Start usability test (inc/partition_check.inc) 6502create_command 6503SHOW CREATE TABLE t1; 6504Table Create Table 6505t1 CREATE TABLE `t1` ( 6506 `f_int1` int(11) DEFAULT NULL, 6507 `f_int2` mediumint(9) DEFAULT NULL, 6508 `f_char1` char(20) DEFAULT NULL, 6509 `f_char2` char(20) DEFAULT NULL, 6510 `f_charbig` varchar(1000) DEFAULT NULL, 6511 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 6512) ENGINE=MyISAM DEFAULT CHARSET=latin1 6513/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 6514SUBPARTITION BY HASH (f_int1) 6515SUBPARTITIONS 2 6516(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 6517 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 6518 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 6519 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 6520 6521unified filelist 6522t1#P#parta#SP#partasp0.MYD 6523t1#P#parta#SP#partasp0.MYI 6524t1#P#parta#SP#partasp1.MYD 6525t1#P#parta#SP#partasp1.MYI 6526t1#P#partb#SP#partbsp0.MYD 6527t1#P#partb#SP#partbsp0.MYI 6528t1#P#partb#SP#partbsp1.MYD 6529t1#P#partb#SP#partbsp1.MYI 6530t1#P#partc#SP#partcsp0.MYD 6531t1#P#partc#SP#partcsp0.MYI 6532t1#P#partc#SP#partcsp1.MYD 6533t1#P#partc#SP#partcsp1.MYI 6534t1#P#partd#SP#partdsp0.MYD 6535t1#P#partd#SP#partdsp0.MYI 6536t1#P#partd#SP#partdsp1.MYD 6537t1#P#partd#SP#partdsp1.MYI 6538t1.frm 6539t1.par 6540 6541# check prerequisites-1 success: 1 6542# check COUNT(*) success: 1 6543# check MIN/MAX(f_int1) success: 1 6544# check MIN/MAX(f_int2) success: 1 6545INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6546SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6547CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6548WHERE f_int1 IN (2,3); 6549ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 6550# check prerequisites-3 success: 1 6551# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 6552INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6553SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6554CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6555WHERE f_int1 IN (2,3); 6556DELETE FROM t1 WHERE f_charbig = 'delete me'; 6557INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6558SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6559CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6560WHERE f_int1 IN (2,3); 6561DELETE FROM t1 WHERE f_charbig = 'delete me'; 6562# check read via f_int1 success: 1 6563# check read via f_int2 success: 1 6564 6565# check multiple-1 success: 1 6566DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6567 6568# check multiple-2 success: 1 6569INSERT INTO t1 SELECT * FROM t0_template 6570WHERE MOD(f_int1,3) = 0; 6571 6572# check multiple-3 success: 1 6573UPDATE t1 SET f_int1 = f_int1 + @max_row 6574WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6575AND @max_row_div2 + @max_row_div4; 6576 6577# check multiple-4 success: 1 6578DELETE FROM t1 6579WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6580AND @max_row_div2 + @max_row_div4 + @max_row; 6581 6582# check multiple-5 success: 1 6583SELECT COUNT(*) INTO @try_count FROM t0_template 6584WHERE MOD(f_int1,3) = 0 6585AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6586SELECT COUNT(*) INTO @clash_count 6587FROM t1 INNER JOIN t0_template USING(f_int1) 6588WHERE MOD(f_int1,3) = 0 6589AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6590SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6591INSERT INTO t1 6592SET f_int1 = @cur_value , f_int2 = @cur_value, 6593f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6594f_charbig = '#SINGLE#'; 6595 6596# check single-1 success: 1 6597SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6598INSERT INTO t1 6599SET f_int1 = @cur_value , f_int2 = @cur_value, 6600f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6601f_charbig = '#SINGLE#'; 6602 6603# check single-2 success: 1 6604SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6605SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6606UPDATE t1 SET f_int1 = @cur_value2 6607WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6608 6609# check single-3 success: 1 6610SET @cur_value1= -1; 6611SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6612UPDATE t1 SET f_int1 = @cur_value1 6613WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6614 6615# check single-4 success: 1 6616SELECT MAX(f_int1) INTO @cur_value FROM t1; 6617DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6618 6619# check single-5 success: 1 6620DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6621 6622# check single-6 success: 1 6623INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6624Warnings: 6625Warning 1264 Out of range value for column 'f_int2' at row 1 6626 6627# check single-7 success: 1 6628DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 6629DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6630INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6631f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6632f_charbig = '#NULL#'; 6633INSERT INTO t1 6634SET f_int1 = NULL , f_int2 = -@max_row, 6635f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6636f_charbig = '#NULL#'; 6637# check null success: 1 6638 6639# check null-1 success: 1 6640UPDATE t1 SET f_int1 = -@max_row 6641WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6642AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6643 6644# check null-2 success: 1 6645UPDATE t1 SET f_int1 = NULL 6646WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6647AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6648 6649# check null-3 success: 1 6650DELETE FROM t1 6651WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6652AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6653 6654# check null-4 success: 1 6655DELETE FROM t1 6656WHERE f_int1 = 0 AND f_int2 = 0 6657AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6658AND f_charbig = '#NULL#'; 6659INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6660SELECT f_int1, f_int1, '', '', 'was inserted' 6661 FROM t0_template source_tab 6662WHERE MOD(f_int1,3) = 0 6663AND f_int1 BETWEEN @max_row_div2 AND @max_row 6664ON DUPLICATE KEY 6665UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 6666f_int2 = 2 * @max_row + source_tab.f_int1, 6667f_charbig = 'was updated'; 6668 6669# check unique-1-a success: 1 6670 6671# check unique-1-b success: 1 6672DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6674f_int2 = CAST(f_char1 AS SIGNED INT), 6675f_charbig = CONCAT('===',f_char1,'===') 6676WHERE f_charbig = 'was updated'; 6677REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6678SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 6679 FROM t0_template source_tab 6680WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6681 6682# check replace success: 1 6683DELETE FROM t1 6684WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 6685DELETE FROM t1 6686WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 6687f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 6688UPDATE t1 SET f_int2 = f_int1, 6689f_char1 = CAST(f_int1 AS CHAR), 6690f_char2 = CAST(f_int1 AS CHAR), 6691f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 6692WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 6693SET AUTOCOMMIT= 0; 6694INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6695SELECT f_int1, f_int1, '', '', 'was inserted' 6696FROM t0_template source_tab 6697WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6698 6699# check transactions-1 success: 1 6700COMMIT WORK; 6701 6702# check transactions-2 success: 1 6703ROLLBACK WORK; 6704 6705# check transactions-3 success: 1 6706DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6707COMMIT WORK; 6708ROLLBACK WORK; 6709 6710# check transactions-4 success: 1 6711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6712SELECT f_int1, f_int1, '', '', 'was inserted' 6713FROM t0_template source_tab 6714WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6715 6716# check transactions-5 success: 1 6717ROLLBACK WORK; 6718Warnings: 6719Warning 1196 Some non-transactional changed tables couldn't be rolled back 6720 6721# check transactions-6 success: 1 6722# INFO: Storage engine used for t1 seems to be not transactional. 6723COMMIT; 6724 6725# check transactions-7 success: 1 6726DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6727COMMIT WORK; 6728SET @@session.sql_mode = 'traditional'; 6729Warnings: 6730Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6731SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6732INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6733SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6734'', '', 'was inserted' FROM t0_template 6735WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6736ERROR 22012: Division by 0 6737COMMIT; 6738 6739# check transactions-8 success: 1 6740# INFO: Storage engine used for t1 seems to be unable to revert 6741# changes made by the failing statement. 6742SET @@session.sql_mode = ''; 6743Warnings: 6744Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6745SET AUTOCOMMIT= 1; 6746DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6747COMMIT WORK; 6748UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6749 6750# check special-1 success: 1 6751UPDATE t1 SET f_charbig = ''; 6752 6753# check special-2 success: 1 6754UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6755INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6756SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6757WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6758INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6759SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6760'just inserted' FROM t0_template 6761WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6762CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6763BEGIN 6764UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6765f_charbig = 'updated by trigger' 6766 WHERE f_int1 = new.f_int1; 6767END| 6768INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6769SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6770WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6771 6772# check trigger-1 success: 1 6773DROP TRIGGER trg_1; 6774UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6775f_int2 = CAST(f_char1 AS SIGNED INT), 6776f_charbig = 'just inserted' 6777 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6778DELETE FROM t0_aux 6779WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6780INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6781SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6782'just inserted' FROM t0_template 6783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6784CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6785BEGIN 6786UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6787f_charbig = 'updated by trigger' 6788 WHERE f_int1 = new.f_int1; 6789END| 6790INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6791SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6792WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6793 6794# check trigger-2 success: 1 6795DROP TRIGGER trg_1; 6796UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6797f_int2 = CAST(f_char1 AS SIGNED INT), 6798f_charbig = 'just inserted' 6799 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6800DELETE FROM t0_aux 6801WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6802INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6803SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6804'just inserted' FROM t0_template 6805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6806CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6807BEGIN 6808UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6809f_charbig = 'updated by trigger' 6810 WHERE f_int1 = new.f_int1; 6811END| 6812UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6813WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6814 6815# check trigger-3 success: 1 6816DROP TRIGGER trg_1; 6817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6818f_int2 = CAST(f_char1 AS SIGNED INT), 6819f_charbig = 'just inserted' 6820 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6821DELETE FROM t0_aux 6822WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6823INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6824SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6825'just inserted' FROM t0_template 6826WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6827CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6828BEGIN 6829UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6830f_charbig = 'updated by trigger' 6831 WHERE f_int1 = - old.f_int1; 6832END| 6833UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6834WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6835 6836# check trigger-4 success: 1 6837DROP TRIGGER trg_1; 6838UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6839f_int2 = CAST(f_char1 AS SIGNED INT), 6840f_charbig = 'just inserted' 6841 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6842DELETE FROM t0_aux 6843WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6844INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6845SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6846'just inserted' FROM t0_template 6847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6848CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6849BEGIN 6850UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6851f_charbig = 'updated by trigger' 6852 WHERE f_int1 = new.f_int1; 6853END| 6854UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6855WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6856 6857# check trigger-5 success: 1 6858DROP TRIGGER trg_1; 6859UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6860f_int2 = CAST(f_char1 AS SIGNED INT), 6861f_charbig = 'just inserted' 6862 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6863DELETE FROM t0_aux 6864WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6865INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6866SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6867'just inserted' FROM t0_template 6868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6869CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6870BEGIN 6871UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6872f_charbig = 'updated by trigger' 6873 WHERE f_int1 = - old.f_int1; 6874END| 6875UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6876WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6877 6878# check trigger-6 success: 1 6879DROP TRIGGER trg_1; 6880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6881f_int2 = CAST(f_char1 AS SIGNED INT), 6882f_charbig = 'just inserted' 6883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6884DELETE FROM t0_aux 6885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6888'just inserted' FROM t0_template 6889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6890CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6891BEGIN 6892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6893f_charbig = 'updated by trigger' 6894 WHERE f_int1 = - old.f_int1; 6895END| 6896DELETE FROM t0_aux 6897WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6898 6899# check trigger-7 success: 1 6900DROP TRIGGER trg_1; 6901UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6902f_int2 = CAST(f_char1 AS SIGNED INT), 6903f_charbig = 'just inserted' 6904 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6905DELETE FROM t0_aux 6906WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6907INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6908SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6909'just inserted' FROM t0_template 6910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6911CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6912BEGIN 6913UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6914f_charbig = 'updated by trigger' 6915 WHERE f_int1 = - old.f_int1; 6916END| 6917DELETE FROM t0_aux 6918WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6919 6920# check trigger-8 success: 1 6921DROP TRIGGER trg_1; 6922UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6923f_int2 = CAST(f_char1 AS SIGNED INT), 6924f_charbig = 'just inserted' 6925 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6926DELETE FROM t0_aux 6927WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6928DELETE FROM t1 6929WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6930CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6931BEGIN 6932SET new.f_int1 = old.f_int1 + @max_row, 6933new.f_int2 = old.f_int2 - @max_row, 6934new.f_charbig = '####updated per update trigger####'; 6935END| 6936UPDATE t1 6937SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6938f_charbig = '####updated per update statement itself####'; 6939Warnings: 6940Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6941 6942# check trigger-9 success: 1 6943DROP TRIGGER trg_2; 6944UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6945f_int2 = CAST(f_char1 AS SIGNED INT), 6946f_charbig = CONCAT('===',f_char1,'==='); 6947Warnings: 6948Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6949CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6950BEGIN 6951SET new.f_int1 = new.f_int1 + @max_row, 6952new.f_int2 = new.f_int2 - @max_row, 6953new.f_charbig = '####updated per update trigger####'; 6954END| 6955UPDATE t1 6956SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6957f_charbig = '####updated per update statement itself####'; 6958Warnings: 6959Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6960 6961# check trigger-10 success: 1 6962DROP TRIGGER trg_2; 6963UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6964f_int2 = CAST(f_char1 AS SIGNED INT), 6965f_charbig = CONCAT('===',f_char1,'==='); 6966Warnings: 6967Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6968CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6969BEGIN 6970SET new.f_int1 = @my_max1 + @counter, 6971new.f_int2 = @my_min2 - @counter, 6972new.f_charbig = '####updated per insert trigger####'; 6973SET @counter = @counter + 1; 6974END| 6975SET @counter = 1; 6976SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6977Warnings: 6978Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6980SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6981CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6982WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6983ORDER BY f_int1; 6984DROP TRIGGER trg_3; 6985 6986# check trigger-11 success: 1 6987Warnings: 6988Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6989DELETE FROM t1 6990WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6991AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6992AND f_charbig = '####updated per insert trigger####'; 6993CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6994BEGIN 6995SET new.f_int1 = @my_max1 + @counter, 6996new.f_int2 = @my_min2 - @counter, 6997new.f_charbig = '####updated per insert trigger####'; 6998SET @counter = @counter + 1; 6999END| 7000SET @counter = 1; 7001SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7002Warnings: 7003Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7004INSERT INTO t1 (f_char1, f_char2, f_charbig) 7005SELECT CAST(f_int1 AS CHAR), 7006CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7007WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7008ORDER BY f_int1; 7009DROP TRIGGER trg_3; 7010 7011# check trigger-12 success: 1 7012Warnings: 7013Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7014DELETE FROM t1 7015WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7016AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7017AND f_charbig = '####updated per insert trigger####'; 7018ANALYZE TABLE t1; 7019Table Op Msg_type Msg_text 7020test.t1 analyze status OK 7021test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7022CHECK TABLE t1 EXTENDED; 7023Table Op Msg_type Msg_text 7024test.t1 check status OK 7025test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7026CHECKSUM TABLE t1 EXTENDED; 7027Table Checksum 7028test.t1 <some_value> 7029OPTIMIZE TABLE t1; 7030Table Op Msg_type Msg_text 7031test.t1 optimize status OK 7032test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7033# check layout success: 1 7034REPAIR TABLE t1 EXTENDED; 7035Table Op Msg_type Msg_text 7036test.t1 repair status OK 7037test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7038# check layout success: 1 7039TRUNCATE t1; 7040Warnings: 7041Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7042 7043# check TRUNCATE success: 1 7044# check layout success: 1 7045# End usability test (inc/partition_check.inc) 7046DROP TABLE t1; 7047CREATE TABLE t1 ( 7048f_int1 INTEGER, 7049f_int2 INTEGER, 7050f_char1 CHAR(20), 7051f_char2 CHAR(20), 7052f_charbig VARCHAR(1000) 7053, UNIQUE INDEX uidx1 (f_int1,f_int2) 7054) 7055PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 7056(PARTITION part1 VALUES LESS THAN (0) 7057(SUBPARTITION subpart11, SUBPARTITION subpart12), 7058PARTITION part2 VALUES LESS THAN (5) 7059(SUBPARTITION subpart21, SUBPARTITION subpart22), 7060PARTITION part3 VALUES LESS THAN (10) 7061(SUBPARTITION subpart31, SUBPARTITION subpart32), 7062PARTITION part4 VALUES LESS THAN (2147483646) 7063(SUBPARTITION subpart41, SUBPARTITION subpart42)); 7064Warnings: 7065Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7066INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7067SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7068WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 7069Warnings: 7070Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7071ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 7072Warnings: 7073Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7074INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7075SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7076WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 7077Warnings: 7078Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7079# Start usability test (inc/partition_check.inc) 7080create_command 7081SHOW CREATE TABLE t1; 7082Table Create Table 7083t1 CREATE TABLE `t1` ( 7084 `f_int1` int(11) DEFAULT NULL, 7085 `f_int2` mediumint(9) DEFAULT NULL, 7086 `f_char1` char(20) DEFAULT NULL, 7087 `f_char2` char(20) DEFAULT NULL, 7088 `f_charbig` varchar(1000) DEFAULT NULL, 7089 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 7090) ENGINE=MyISAM DEFAULT CHARSET=latin1 7091/*!50100 PARTITION BY RANGE (f_int1) 7092SUBPARTITION BY KEY (f_int1) 7093(PARTITION part1 VALUES LESS THAN (0) 7094 (SUBPARTITION subpart11 ENGINE = MyISAM, 7095 SUBPARTITION subpart12 ENGINE = MyISAM), 7096 PARTITION part2 VALUES LESS THAN (5) 7097 (SUBPARTITION subpart21 ENGINE = MyISAM, 7098 SUBPARTITION subpart22 ENGINE = MyISAM), 7099 PARTITION part3 VALUES LESS THAN (10) 7100 (SUBPARTITION subpart31 ENGINE = MyISAM, 7101 SUBPARTITION subpart32 ENGINE = MyISAM), 7102 PARTITION part4 VALUES LESS THAN (2147483646) 7103 (SUBPARTITION subpart41 ENGINE = MyISAM, 7104 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 7105 7106unified filelist 7107t1#P#part1#SP#subpart11.MYD 7108t1#P#part1#SP#subpart11.MYI 7109t1#P#part1#SP#subpart12.MYD 7110t1#P#part1#SP#subpart12.MYI 7111t1#P#part2#SP#subpart21.MYD 7112t1#P#part2#SP#subpart21.MYI 7113t1#P#part2#SP#subpart22.MYD 7114t1#P#part2#SP#subpart22.MYI 7115t1#P#part3#SP#subpart31.MYD 7116t1#P#part3#SP#subpart31.MYI 7117t1#P#part3#SP#subpart32.MYD 7118t1#P#part3#SP#subpart32.MYI 7119t1#P#part4#SP#subpart41.MYD 7120t1#P#part4#SP#subpart41.MYI 7121t1#P#part4#SP#subpart42.MYD 7122t1#P#part4#SP#subpart42.MYI 7123t1.frm 7124t1.par 7125 7126# check prerequisites-1 success: 1 7127# check COUNT(*) success: 1 7128# check MIN/MAX(f_int1) success: 1 7129# check MIN/MAX(f_int2) success: 1 7130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7131SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7132CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7133WHERE f_int1 IN (2,3); 7134ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 7135# check prerequisites-3 success: 1 7136# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 7137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7138SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7139CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7140WHERE f_int1 IN (2,3); 7141DELETE FROM t1 WHERE f_charbig = 'delete me'; 7142INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7143SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7144CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7145WHERE f_int1 IN (2,3); 7146DELETE FROM t1 WHERE f_charbig = 'delete me'; 7147# check read via f_int1 success: 1 7148# check read via f_int2 success: 1 7149 7150# check multiple-1 success: 1 7151DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7152 7153# check multiple-2 success: 1 7154INSERT INTO t1 SELECT * FROM t0_template 7155WHERE MOD(f_int1,3) = 0; 7156 7157# check multiple-3 success: 1 7158UPDATE t1 SET f_int1 = f_int1 + @max_row 7159WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7160AND @max_row_div2 + @max_row_div4; 7161 7162# check multiple-4 success: 1 7163DELETE FROM t1 7164WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7165AND @max_row_div2 + @max_row_div4 + @max_row; 7166 7167# check multiple-5 success: 1 7168SELECT COUNT(*) INTO @try_count FROM t0_template 7169WHERE MOD(f_int1,3) = 0 7170AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7171SELECT COUNT(*) INTO @clash_count 7172FROM t1 INNER JOIN t0_template USING(f_int1) 7173WHERE MOD(f_int1,3) = 0 7174AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7175SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7176INSERT INTO t1 7177SET f_int1 = @cur_value , f_int2 = @cur_value, 7178f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7179f_charbig = '#SINGLE#'; 7180 7181# check single-1 success: 1 7182SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7183INSERT INTO t1 7184SET f_int1 = @cur_value , f_int2 = @cur_value, 7185f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7186f_charbig = '#SINGLE#'; 7187 7188# check single-2 success: 1 7189SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7190SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7191UPDATE t1 SET f_int1 = @cur_value2 7192WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7193 7194# check single-3 success: 1 7195SET @cur_value1= -1; 7196SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7197UPDATE t1 SET f_int1 = @cur_value1 7198WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7199 7200# check single-4 success: 1 7201SELECT MAX(f_int1) INTO @cur_value FROM t1; 7202DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7203 7204# check single-5 success: 1 7205DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7206 7207# check single-6 success: 1 7208INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7209ERROR HY000: Table has no partition for value 2147483647 7210DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7211INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7212f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7213f_charbig = '#NULL#'; 7214INSERT INTO t1 7215SET f_int1 = NULL , f_int2 = -@max_row, 7216f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7217f_charbig = '#NULL#'; 7218# check null success: 1 7219 7220# check null-1 success: 1 7221UPDATE t1 SET f_int1 = -@max_row 7222WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7223AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7224 7225# check null-2 success: 1 7226UPDATE t1 SET f_int1 = NULL 7227WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7228AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7229 7230# check null-3 success: 1 7231DELETE FROM t1 7232WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7233AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7234 7235# check null-4 success: 1 7236DELETE FROM t1 7237WHERE f_int1 = 0 AND f_int2 = 0 7238AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7239AND f_charbig = '#NULL#'; 7240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7241SELECT f_int1, f_int1, '', '', 'was inserted' 7242 FROM t0_template source_tab 7243WHERE MOD(f_int1,3) = 0 7244AND f_int1 BETWEEN @max_row_div2 AND @max_row 7245ON DUPLICATE KEY 7246UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 7247f_int2 = 2 * @max_row + source_tab.f_int1, 7248f_charbig = 'was updated'; 7249 7250# check unique-1-a success: 1 7251 7252# check unique-1-b success: 1 7253DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7254UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7255f_int2 = CAST(f_char1 AS SIGNED INT), 7256f_charbig = CONCAT('===',f_char1,'===') 7257WHERE f_charbig = 'was updated'; 7258REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7259SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 7260 FROM t0_template source_tab 7261WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7262 7263# check replace success: 1 7264DELETE FROM t1 7265WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 7266DELETE FROM t1 7267WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 7268f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 7269UPDATE t1 SET f_int2 = f_int1, 7270f_char1 = CAST(f_int1 AS CHAR), 7271f_char2 = CAST(f_int1 AS CHAR), 7272f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 7273WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 7274SET AUTOCOMMIT= 0; 7275INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7276SELECT f_int1, f_int1, '', '', 'was inserted' 7277FROM t0_template source_tab 7278WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7279 7280# check transactions-1 success: 1 7281COMMIT WORK; 7282 7283# check transactions-2 success: 1 7284ROLLBACK WORK; 7285 7286# check transactions-3 success: 1 7287DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7288COMMIT WORK; 7289ROLLBACK WORK; 7290 7291# check transactions-4 success: 1 7292INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7293SELECT f_int1, f_int1, '', '', 'was inserted' 7294FROM t0_template source_tab 7295WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7296 7297# check transactions-5 success: 1 7298ROLLBACK WORK; 7299Warnings: 7300Warning 1196 Some non-transactional changed tables couldn't be rolled back 7301 7302# check transactions-6 success: 1 7303# INFO: Storage engine used for t1 seems to be not transactional. 7304COMMIT; 7305 7306# check transactions-7 success: 1 7307DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7308COMMIT WORK; 7309SET @@session.sql_mode = 'traditional'; 7310Warnings: 7311Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7312SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7313INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7314SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7315'', '', 'was inserted' FROM t0_template 7316WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7317ERROR 22012: Division by 0 7318COMMIT; 7319 7320# check transactions-8 success: 1 7321# INFO: Storage engine used for t1 seems to be unable to revert 7322# changes made by the failing statement. 7323SET @@session.sql_mode = ''; 7324Warnings: 7325Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7326SET AUTOCOMMIT= 1; 7327DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7328COMMIT WORK; 7329UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7330 7331# check special-1 success: 1 7332UPDATE t1 SET f_charbig = ''; 7333 7334# check special-2 success: 1 7335UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7336INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7337SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7338WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7339INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7340SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7341'just inserted' FROM t0_template 7342WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7343CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7344BEGIN 7345UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7346f_charbig = 'updated by trigger' 7347 WHERE f_int1 = new.f_int1; 7348END| 7349INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7350SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7351WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7352 7353# check trigger-1 success: 1 7354DROP TRIGGER trg_1; 7355UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7356f_int2 = CAST(f_char1 AS SIGNED INT), 7357f_charbig = 'just inserted' 7358 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7359DELETE FROM t0_aux 7360WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7361INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7362SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7363'just inserted' FROM t0_template 7364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7365CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7366BEGIN 7367UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7368f_charbig = 'updated by trigger' 7369 WHERE f_int1 = new.f_int1; 7370END| 7371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7372SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7373WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7374 7375# check trigger-2 success: 1 7376DROP TRIGGER trg_1; 7377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7378f_int2 = CAST(f_char1 AS SIGNED INT), 7379f_charbig = 'just inserted' 7380 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7381DELETE FROM t0_aux 7382WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7383INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7384SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7385'just inserted' FROM t0_template 7386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7387CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7388BEGIN 7389UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7390f_charbig = 'updated by trigger' 7391 WHERE f_int1 = new.f_int1; 7392END| 7393UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7394WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7395 7396# check trigger-3 success: 1 7397DROP TRIGGER trg_1; 7398UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7399f_int2 = CAST(f_char1 AS SIGNED INT), 7400f_charbig = 'just inserted' 7401 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7402DELETE FROM t0_aux 7403WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7406'just inserted' FROM t0_template 7407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7408CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7409BEGIN 7410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7411f_charbig = 'updated by trigger' 7412 WHERE f_int1 = - old.f_int1; 7413END| 7414UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7415WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7416 7417# check trigger-4 success: 1 7418DROP TRIGGER trg_1; 7419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7420f_int2 = CAST(f_char1 AS SIGNED INT), 7421f_charbig = 'just inserted' 7422 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7423DELETE FROM t0_aux 7424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7427'just inserted' FROM t0_template 7428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7429CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7430BEGIN 7431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7432f_charbig = 'updated by trigger' 7433 WHERE f_int1 = new.f_int1; 7434END| 7435UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7436WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7437 7438# check trigger-5 success: 1 7439DROP TRIGGER trg_1; 7440UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7441f_int2 = CAST(f_char1 AS SIGNED INT), 7442f_charbig = 'just inserted' 7443 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7444DELETE FROM t0_aux 7445WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7446INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7447SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7448'just inserted' FROM t0_template 7449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7450CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7451BEGIN 7452UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7453f_charbig = 'updated by trigger' 7454 WHERE f_int1 = - old.f_int1; 7455END| 7456UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7457WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7458 7459# check trigger-6 success: 1 7460DROP TRIGGER trg_1; 7461UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7462f_int2 = CAST(f_char1 AS SIGNED INT), 7463f_charbig = 'just inserted' 7464 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7465DELETE FROM t0_aux 7466WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7467INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7468SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7469'just inserted' FROM t0_template 7470WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7471CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7472BEGIN 7473UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7474f_charbig = 'updated by trigger' 7475 WHERE f_int1 = - old.f_int1; 7476END| 7477DELETE FROM t0_aux 7478WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7479 7480# check trigger-7 success: 1 7481DROP TRIGGER trg_1; 7482UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7483f_int2 = CAST(f_char1 AS SIGNED INT), 7484f_charbig = 'just inserted' 7485 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7486DELETE FROM t0_aux 7487WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7488INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7489SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7490'just inserted' FROM t0_template 7491WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7492CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7493BEGIN 7494UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7495f_charbig = 'updated by trigger' 7496 WHERE f_int1 = - old.f_int1; 7497END| 7498DELETE FROM t0_aux 7499WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7500 7501# check trigger-8 success: 1 7502DROP TRIGGER trg_1; 7503UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7504f_int2 = CAST(f_char1 AS SIGNED INT), 7505f_charbig = 'just inserted' 7506 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7507DELETE FROM t0_aux 7508WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7509DELETE FROM t1 7510WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7511CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7512BEGIN 7513SET new.f_int1 = old.f_int1 + @max_row, 7514new.f_int2 = old.f_int2 - @max_row, 7515new.f_charbig = '####updated per update trigger####'; 7516END| 7517UPDATE t1 7518SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7519f_charbig = '####updated per update statement itself####'; 7520Warnings: 7521Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7522 7523# check trigger-9 success: 1 7524DROP TRIGGER trg_2; 7525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7526f_int2 = CAST(f_char1 AS SIGNED INT), 7527f_charbig = CONCAT('===',f_char1,'==='); 7528Warnings: 7529Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7530CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7531BEGIN 7532SET new.f_int1 = new.f_int1 + @max_row, 7533new.f_int2 = new.f_int2 - @max_row, 7534new.f_charbig = '####updated per update trigger####'; 7535END| 7536UPDATE t1 7537SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7538f_charbig = '####updated per update statement itself####'; 7539Warnings: 7540Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7541 7542# check trigger-10 success: 1 7543DROP TRIGGER trg_2; 7544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7545f_int2 = CAST(f_char1 AS SIGNED INT), 7546f_charbig = CONCAT('===',f_char1,'==='); 7547Warnings: 7548Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7549CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7550BEGIN 7551SET new.f_int1 = @my_max1 + @counter, 7552new.f_int2 = @my_min2 - @counter, 7553new.f_charbig = '####updated per insert trigger####'; 7554SET @counter = @counter + 1; 7555END| 7556SET @counter = 1; 7557SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7558Warnings: 7559Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7560INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7561SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7562CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7563WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7564ORDER BY f_int1; 7565DROP TRIGGER trg_3; 7566 7567# check trigger-11 success: 1 7568Warnings: 7569Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7570DELETE FROM t1 7571WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7572AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7573AND f_charbig = '####updated per insert trigger####'; 7574CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7575BEGIN 7576SET new.f_int1 = @my_max1 + @counter, 7577new.f_int2 = @my_min2 - @counter, 7578new.f_charbig = '####updated per insert trigger####'; 7579SET @counter = @counter + 1; 7580END| 7581SET @counter = 1; 7582SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7583Warnings: 7584Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7585INSERT INTO t1 (f_char1, f_char2, f_charbig) 7586SELECT CAST(f_int1 AS CHAR), 7587CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7589ORDER BY f_int1; 7590DROP TRIGGER trg_3; 7591 7592# check trigger-12 success: 1 7593Warnings: 7594Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7595DELETE FROM t1 7596WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7597AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7598AND f_charbig = '####updated per insert trigger####'; 7599ANALYZE TABLE t1; 7600Table Op Msg_type Msg_text 7601test.t1 analyze status OK 7602test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7603CHECK TABLE t1 EXTENDED; 7604Table Op Msg_type Msg_text 7605test.t1 check status OK 7606test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7607CHECKSUM TABLE t1 EXTENDED; 7608Table Checksum 7609test.t1 <some_value> 7610OPTIMIZE TABLE t1; 7611Table Op Msg_type Msg_text 7612test.t1 optimize status OK 7613test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7614# check layout success: 1 7615REPAIR TABLE t1 EXTENDED; 7616Table Op Msg_type Msg_text 7617test.t1 repair status OK 7618test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7619# check layout success: 1 7620TRUNCATE t1; 7621Warnings: 7622Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7623 7624# check TRUNCATE success: 1 7625# check layout success: 1 7626# End usability test (inc/partition_check.inc) 7627DROP TABLE t1; 7628CREATE TABLE t1 ( 7629f_int1 INTEGER, 7630f_int2 INTEGER, 7631f_char1 CHAR(20), 7632f_char2 CHAR(20), 7633f_charbig VARCHAR(1000) 7634, UNIQUE INDEX uidx1 (f_int1,f_int2) 7635) 7636PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 7637(PARTITION part1 VALUES IN (0) 7638(SUBPARTITION sp11, SUBPARTITION sp12), 7639PARTITION part2 VALUES IN (1) 7640(SUBPARTITION sp21, SUBPARTITION sp22), 7641PARTITION part3 VALUES IN (2) 7642(SUBPARTITION sp31, SUBPARTITION sp32), 7643PARTITION part4 VALUES IN (NULL) 7644(SUBPARTITION sp41, SUBPARTITION sp42)); 7645Warnings: 7646Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7647INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7648SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7649WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 7650Warnings: 7651Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7652ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 7653Warnings: 7654Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7655INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7656SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7657WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 7658Warnings: 7659Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7660# Start usability test (inc/partition_check.inc) 7661create_command 7662SHOW CREATE TABLE t1; 7663Table Create Table 7664t1 CREATE TABLE `t1` ( 7665 `f_int1` int(11) DEFAULT NULL, 7666 `f_int2` mediumint(9) DEFAULT NULL, 7667 `f_char1` char(20) DEFAULT NULL, 7668 `f_char2` char(20) DEFAULT NULL, 7669 `f_charbig` varchar(1000) DEFAULT NULL, 7670 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 7671) ENGINE=MyISAM DEFAULT CHARSET=latin1 7672/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 7673SUBPARTITION BY HASH (f_int1 + 1) 7674(PARTITION part1 VALUES IN (0) 7675 (SUBPARTITION sp11 ENGINE = MyISAM, 7676 SUBPARTITION sp12 ENGINE = MyISAM), 7677 PARTITION part2 VALUES IN (1) 7678 (SUBPARTITION sp21 ENGINE = MyISAM, 7679 SUBPARTITION sp22 ENGINE = MyISAM), 7680 PARTITION part3 VALUES IN (2) 7681 (SUBPARTITION sp31 ENGINE = MyISAM, 7682 SUBPARTITION sp32 ENGINE = MyISAM), 7683 PARTITION part4 VALUES IN (NULL) 7684 (SUBPARTITION sp41 ENGINE = MyISAM, 7685 SUBPARTITION sp42 ENGINE = MyISAM)) */ 7686 7687unified filelist 7688t1#P#part1#SP#sp11.MYD 7689t1#P#part1#SP#sp11.MYI 7690t1#P#part1#SP#sp12.MYD 7691t1#P#part1#SP#sp12.MYI 7692t1#P#part2#SP#sp21.MYD 7693t1#P#part2#SP#sp21.MYI 7694t1#P#part2#SP#sp22.MYD 7695t1#P#part2#SP#sp22.MYI 7696t1#P#part3#SP#sp31.MYD 7697t1#P#part3#SP#sp31.MYI 7698t1#P#part3#SP#sp32.MYD 7699t1#P#part3#SP#sp32.MYI 7700t1#P#part4#SP#sp41.MYD 7701t1#P#part4#SP#sp41.MYI 7702t1#P#part4#SP#sp42.MYD 7703t1#P#part4#SP#sp42.MYI 7704t1.frm 7705t1.par 7706 7707# check prerequisites-1 success: 1 7708# check COUNT(*) success: 1 7709# check MIN/MAX(f_int1) success: 1 7710# check MIN/MAX(f_int2) success: 1 7711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7712SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7713CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7714WHERE f_int1 IN (2,3); 7715ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 7716# check prerequisites-3 success: 1 7717# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 7718INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7719SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7720CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7721WHERE f_int1 IN (2,3); 7722DELETE FROM t1 WHERE f_charbig = 'delete me'; 7723INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7724SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7725CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7726WHERE f_int1 IN (2,3); 7727DELETE FROM t1 WHERE f_charbig = 'delete me'; 7728# check read via f_int1 success: 1 7729# check read via f_int2 success: 1 7730 7731# check multiple-1 success: 1 7732DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7733 7734# check multiple-2 success: 1 7735INSERT INTO t1 SELECT * FROM t0_template 7736WHERE MOD(f_int1,3) = 0; 7737 7738# check multiple-3 success: 1 7739UPDATE t1 SET f_int1 = f_int1 + @max_row 7740WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7741AND @max_row_div2 + @max_row_div4; 7742 7743# check multiple-4 success: 1 7744DELETE FROM t1 7745WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7746AND @max_row_div2 + @max_row_div4 + @max_row; 7747 7748# check multiple-5 success: 1 7749SELECT COUNT(*) INTO @try_count FROM t0_template 7750WHERE MOD(f_int1,3) = 0 7751AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7752SELECT COUNT(*) INTO @clash_count 7753FROM t1 INNER JOIN t0_template USING(f_int1) 7754WHERE MOD(f_int1,3) = 0 7755AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7756SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7757INSERT INTO t1 7758SET f_int1 = @cur_value , f_int2 = @cur_value, 7759f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7760f_charbig = '#SINGLE#'; 7761 7762# check single-1 success: 1 7763SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7764INSERT INTO t1 7765SET f_int1 = @cur_value , f_int2 = @cur_value, 7766f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7767f_charbig = '#SINGLE#'; 7768 7769# check single-2 success: 1 7770SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7771SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7772UPDATE t1 SET f_int1 = @cur_value2 7773WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7774 7775# check single-3 success: 1 7776SET @cur_value1= -1; 7777SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7778UPDATE t1 SET f_int1 = @cur_value1 7779WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7780 7781# check single-4 success: 1 7782SELECT MAX(f_int1) INTO @cur_value FROM t1; 7783DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7784 7785# check single-5 success: 1 7786DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7787 7788# check single-6 success: 1 7789INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7790Warnings: 7791Warning 1264 Out of range value for column 'f_int2' at row 1 7792 7793# check single-7 success: 1 7794DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7795DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7796INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7797f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7798f_charbig = '#NULL#'; 7799INSERT INTO t1 7800SET f_int1 = NULL , f_int2 = -@max_row, 7801f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7802f_charbig = '#NULL#'; 7803# check null success: 1 7804 7805# check null-1 success: 1 7806UPDATE t1 SET f_int1 = -@max_row 7807WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7808AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7809 7810# check null-2 success: 1 7811UPDATE t1 SET f_int1 = NULL 7812WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7813AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7814 7815# check null-3 success: 1 7816DELETE FROM t1 7817WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7818AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7819 7820# check null-4 success: 1 7821DELETE FROM t1 7822WHERE f_int1 = 0 AND f_int2 = 0 7823AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7824AND f_charbig = '#NULL#'; 7825INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7826SELECT f_int1, f_int1, '', '', 'was inserted' 7827 FROM t0_template source_tab 7828WHERE MOD(f_int1,3) = 0 7829AND f_int1 BETWEEN @max_row_div2 AND @max_row 7830ON DUPLICATE KEY 7831UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 7832f_int2 = 2 * @max_row + source_tab.f_int1, 7833f_charbig = 'was updated'; 7834 7835# check unique-1-a success: 1 7836 7837# check unique-1-b success: 1 7838DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7839UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7840f_int2 = CAST(f_char1 AS SIGNED INT), 7841f_charbig = CONCAT('===',f_char1,'===') 7842WHERE f_charbig = 'was updated'; 7843REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7844SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 7845 FROM t0_template source_tab 7846WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7847 7848# check replace success: 1 7849DELETE FROM t1 7850WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 7851DELETE FROM t1 7852WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 7853f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 7854UPDATE t1 SET f_int2 = f_int1, 7855f_char1 = CAST(f_int1 AS CHAR), 7856f_char2 = CAST(f_int1 AS CHAR), 7857f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 7858WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 7859SET AUTOCOMMIT= 0; 7860INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7861SELECT f_int1, f_int1, '', '', 'was inserted' 7862FROM t0_template source_tab 7863WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7864 7865# check transactions-1 success: 1 7866COMMIT WORK; 7867 7868# check transactions-2 success: 1 7869ROLLBACK WORK; 7870 7871# check transactions-3 success: 1 7872DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7873COMMIT WORK; 7874ROLLBACK WORK; 7875 7876# check transactions-4 success: 1 7877INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7878SELECT f_int1, f_int1, '', '', 'was inserted' 7879FROM t0_template source_tab 7880WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7881 7882# check transactions-5 success: 1 7883ROLLBACK WORK; 7884Warnings: 7885Warning 1196 Some non-transactional changed tables couldn't be rolled back 7886 7887# check transactions-6 success: 1 7888# INFO: Storage engine used for t1 seems to be not transactional. 7889COMMIT; 7890 7891# check transactions-7 success: 1 7892DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7893COMMIT WORK; 7894SET @@session.sql_mode = 'traditional'; 7895Warnings: 7896Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7897SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7898INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7899SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7900'', '', 'was inserted' FROM t0_template 7901WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7902ERROR 22012: Division by 0 7903COMMIT; 7904 7905# check transactions-8 success: 1 7906# INFO: Storage engine used for t1 seems to be unable to revert 7907# changes made by the failing statement. 7908SET @@session.sql_mode = ''; 7909Warnings: 7910Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7911SET AUTOCOMMIT= 1; 7912DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7913COMMIT WORK; 7914UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7915 7916# check special-1 success: 1 7917UPDATE t1 SET f_charbig = ''; 7918 7919# check special-2 success: 1 7920UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7921INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7922SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7924INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7925SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7926'just inserted' FROM t0_template 7927WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7928CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7929BEGIN 7930UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7931f_charbig = 'updated by trigger' 7932 WHERE f_int1 = new.f_int1; 7933END| 7934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7935SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7936WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7937 7938# check trigger-1 success: 1 7939DROP TRIGGER trg_1; 7940UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7941f_int2 = CAST(f_char1 AS SIGNED INT), 7942f_charbig = 'just inserted' 7943 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7944DELETE FROM t0_aux 7945WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7946INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7947SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7948'just inserted' FROM t0_template 7949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7950CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7951BEGIN 7952UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7953f_charbig = 'updated by trigger' 7954 WHERE f_int1 = new.f_int1; 7955END| 7956INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7957SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7959 7960# check trigger-2 success: 1 7961DROP TRIGGER trg_1; 7962UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7963f_int2 = CAST(f_char1 AS SIGNED INT), 7964f_charbig = 'just inserted' 7965 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7966DELETE FROM t0_aux 7967WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7968INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7969SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7970'just inserted' FROM t0_template 7971WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7972CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7973BEGIN 7974UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7975f_charbig = 'updated by trigger' 7976 WHERE f_int1 = new.f_int1; 7977END| 7978UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7979WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7980 7981# check trigger-3 success: 1 7982DROP TRIGGER trg_1; 7983UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7984f_int2 = CAST(f_char1 AS SIGNED INT), 7985f_charbig = 'just inserted' 7986 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7987DELETE FROM t0_aux 7988WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7989INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7990SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7991'just inserted' FROM t0_template 7992WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7993CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7994BEGIN 7995UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7996f_charbig = 'updated by trigger' 7997 WHERE f_int1 = - old.f_int1; 7998END| 7999UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8000WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8001 8002# check trigger-4 success: 1 8003DROP TRIGGER trg_1; 8004UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8005f_int2 = CAST(f_char1 AS SIGNED INT), 8006f_charbig = 'just inserted' 8007 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8008DELETE FROM t0_aux 8009WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8010INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8011SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8012'just inserted' FROM t0_template 8013WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8014CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8015BEGIN 8016UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8017f_charbig = 'updated by trigger' 8018 WHERE f_int1 = new.f_int1; 8019END| 8020UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8021WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8022 8023# check trigger-5 success: 1 8024DROP TRIGGER trg_1; 8025UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8026f_int2 = CAST(f_char1 AS SIGNED INT), 8027f_charbig = 'just inserted' 8028 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8029DELETE FROM t0_aux 8030WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8031INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8032SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8033'just inserted' FROM t0_template 8034WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8035CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8036BEGIN 8037UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8038f_charbig = 'updated by trigger' 8039 WHERE f_int1 = - old.f_int1; 8040END| 8041UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8042WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8043 8044# check trigger-6 success: 1 8045DROP TRIGGER trg_1; 8046UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8047f_int2 = CAST(f_char1 AS SIGNED INT), 8048f_charbig = 'just inserted' 8049 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8050DELETE FROM t0_aux 8051WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8052INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8053SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8054'just inserted' FROM t0_template 8055WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8056CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8057BEGIN 8058UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8059f_charbig = 'updated by trigger' 8060 WHERE f_int1 = - old.f_int1; 8061END| 8062DELETE FROM t0_aux 8063WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8064 8065# check trigger-7 success: 1 8066DROP TRIGGER trg_1; 8067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8068f_int2 = CAST(f_char1 AS SIGNED INT), 8069f_charbig = 'just inserted' 8070 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8071DELETE FROM t0_aux 8072WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8073INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8074SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8075'just inserted' FROM t0_template 8076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8077CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8078BEGIN 8079UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8080f_charbig = 'updated by trigger' 8081 WHERE f_int1 = - old.f_int1; 8082END| 8083DELETE FROM t0_aux 8084WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8085 8086# check trigger-8 success: 1 8087DROP TRIGGER trg_1; 8088UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8089f_int2 = CAST(f_char1 AS SIGNED INT), 8090f_charbig = 'just inserted' 8091 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8092DELETE FROM t0_aux 8093WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8094DELETE FROM t1 8095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8096CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8097BEGIN 8098SET new.f_int1 = old.f_int1 + @max_row, 8099new.f_int2 = old.f_int2 - @max_row, 8100new.f_charbig = '####updated per update trigger####'; 8101END| 8102UPDATE t1 8103SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8104f_charbig = '####updated per update statement itself####'; 8105Warnings: 8106Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8107 8108# check trigger-9 success: 1 8109DROP TRIGGER trg_2; 8110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8111f_int2 = CAST(f_char1 AS SIGNED INT), 8112f_charbig = CONCAT('===',f_char1,'==='); 8113Warnings: 8114Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8115CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8116BEGIN 8117SET new.f_int1 = new.f_int1 + @max_row, 8118new.f_int2 = new.f_int2 - @max_row, 8119new.f_charbig = '####updated per update trigger####'; 8120END| 8121UPDATE t1 8122SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8123f_charbig = '####updated per update statement itself####'; 8124Warnings: 8125Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8126 8127# check trigger-10 success: 1 8128DROP TRIGGER trg_2; 8129UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8130f_int2 = CAST(f_char1 AS SIGNED INT), 8131f_charbig = CONCAT('===',f_char1,'==='); 8132Warnings: 8133Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8134CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8135BEGIN 8136SET new.f_int1 = @my_max1 + @counter, 8137new.f_int2 = @my_min2 - @counter, 8138new.f_charbig = '####updated per insert trigger####'; 8139SET @counter = @counter + 1; 8140END| 8141SET @counter = 1; 8142SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8143Warnings: 8144Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8145INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8146SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8147CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8149ORDER BY f_int1; 8150DROP TRIGGER trg_3; 8151 8152# check trigger-11 success: 1 8153Warnings: 8154Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8155DELETE FROM t1 8156WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8157AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8158AND f_charbig = '####updated per insert trigger####'; 8159CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8160BEGIN 8161SET new.f_int1 = @my_max1 + @counter, 8162new.f_int2 = @my_min2 - @counter, 8163new.f_charbig = '####updated per insert trigger####'; 8164SET @counter = @counter + 1; 8165END| 8166SET @counter = 1; 8167SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8168Warnings: 8169Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8170INSERT INTO t1 (f_char1, f_char2, f_charbig) 8171SELECT CAST(f_int1 AS CHAR), 8172CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8173WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8174ORDER BY f_int1; 8175DROP TRIGGER trg_3; 8176 8177# check trigger-12 success: 1 8178Warnings: 8179Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8180DELETE FROM t1 8181WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8182AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8183AND f_charbig = '####updated per insert trigger####'; 8184ANALYZE TABLE t1; 8185Table Op Msg_type Msg_text 8186test.t1 analyze status OK 8187test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8188CHECK TABLE t1 EXTENDED; 8189Table Op Msg_type Msg_text 8190test.t1 check status OK 8191test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8192CHECKSUM TABLE t1 EXTENDED; 8193Table Checksum 8194test.t1 <some_value> 8195OPTIMIZE TABLE t1; 8196Table Op Msg_type Msg_text 8197test.t1 optimize status OK 8198test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8199# check layout success: 1 8200REPAIR TABLE t1 EXTENDED; 8201Table Op Msg_type Msg_text 8202test.t1 repair status OK 8203test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8204# check layout success: 1 8205TRUNCATE t1; 8206Warnings: 8207Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8208 8209# check TRUNCATE success: 1 8210# check layout success: 1 8211# End usability test (inc/partition_check.inc) 8212DROP TABLE t1; 8213CREATE TABLE t1 ( 8214f_int1 INTEGER, 8215f_int2 INTEGER, 8216f_char1 CHAR(20), 8217f_char2 CHAR(20), 8218f_charbig VARCHAR(1000) 8219, UNIQUE INDEX uidx1 (f_int1,f_int2) 8220) 8221PARTITION BY LIST(ABS(MOD(f_int1,2))) 8222SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 8223(PARTITION part1 VALUES IN (0), 8224PARTITION part2 VALUES IN (1), 8225PARTITION part3 VALUES IN (NULL)); 8226Warnings: 8227Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8228INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8229SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8230WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 8231Warnings: 8232Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8233ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 8234Warnings: 8235Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8236INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8237SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8238WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 8239Warnings: 8240Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8241# Start usability test (inc/partition_check.inc) 8242create_command 8243SHOW CREATE TABLE t1; 8244Table Create Table 8245t1 CREATE TABLE `t1` ( 8246 `f_int1` int(11) DEFAULT NULL, 8247 `f_int2` mediumint(9) DEFAULT NULL, 8248 `f_char1` char(20) DEFAULT NULL, 8249 `f_char2` char(20) DEFAULT NULL, 8250 `f_charbig` varchar(1000) DEFAULT NULL, 8251 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 8252) ENGINE=MyISAM DEFAULT CHARSET=latin1 8253/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 8254SUBPARTITION BY KEY (f_int1) 8255SUBPARTITIONS 3 8256(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 8257 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 8258 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 8259 8260unified filelist 8261t1#P#part1#SP#part1sp0.MYD 8262t1#P#part1#SP#part1sp0.MYI 8263t1#P#part1#SP#part1sp1.MYD 8264t1#P#part1#SP#part1sp1.MYI 8265t1#P#part1#SP#part1sp2.MYD 8266t1#P#part1#SP#part1sp2.MYI 8267t1#P#part2#SP#part2sp0.MYD 8268t1#P#part2#SP#part2sp0.MYI 8269t1#P#part2#SP#part2sp1.MYD 8270t1#P#part2#SP#part2sp1.MYI 8271t1#P#part2#SP#part2sp2.MYD 8272t1#P#part2#SP#part2sp2.MYI 8273t1#P#part3#SP#part3sp0.MYD 8274t1#P#part3#SP#part3sp0.MYI 8275t1#P#part3#SP#part3sp1.MYD 8276t1#P#part3#SP#part3sp1.MYI 8277t1#P#part3#SP#part3sp2.MYD 8278t1#P#part3#SP#part3sp2.MYI 8279t1.frm 8280t1.par 8281 8282# check prerequisites-1 success: 1 8283# check COUNT(*) success: 1 8284# check MIN/MAX(f_int1) success: 1 8285# check MIN/MAX(f_int2) success: 1 8286INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8287SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8288CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8289WHERE f_int1 IN (2,3); 8290ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 8291# check prerequisites-3 success: 1 8292# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8293INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8294SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8295CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8296WHERE f_int1 IN (2,3); 8297DELETE FROM t1 WHERE f_charbig = 'delete me'; 8298INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8299SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8300CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8301WHERE f_int1 IN (2,3); 8302DELETE FROM t1 WHERE f_charbig = 'delete me'; 8303# check read via f_int1 success: 1 8304# check read via f_int2 success: 1 8305 8306# check multiple-1 success: 1 8307DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8308 8309# check multiple-2 success: 1 8310INSERT INTO t1 SELECT * FROM t0_template 8311WHERE MOD(f_int1,3) = 0; 8312 8313# check multiple-3 success: 1 8314UPDATE t1 SET f_int1 = f_int1 + @max_row 8315WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8316AND @max_row_div2 + @max_row_div4; 8317 8318# check multiple-4 success: 1 8319DELETE FROM t1 8320WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8321AND @max_row_div2 + @max_row_div4 + @max_row; 8322 8323# check multiple-5 success: 1 8324SELECT COUNT(*) INTO @try_count FROM t0_template 8325WHERE MOD(f_int1,3) = 0 8326AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8327SELECT COUNT(*) INTO @clash_count 8328FROM t1 INNER JOIN t0_template USING(f_int1) 8329WHERE MOD(f_int1,3) = 0 8330AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8331SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8332INSERT INTO t1 8333SET f_int1 = @cur_value , f_int2 = @cur_value, 8334f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8335f_charbig = '#SINGLE#'; 8336 8337# check single-1 success: 1 8338SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8339INSERT INTO t1 8340SET f_int1 = @cur_value , f_int2 = @cur_value, 8341f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8342f_charbig = '#SINGLE#'; 8343 8344# check single-2 success: 1 8345SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8346SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8347UPDATE t1 SET f_int1 = @cur_value2 8348WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8349 8350# check single-3 success: 1 8351SET @cur_value1= -1; 8352SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8353UPDATE t1 SET f_int1 = @cur_value1 8354WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8355 8356# check single-4 success: 1 8357SELECT MAX(f_int1) INTO @cur_value FROM t1; 8358DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8359 8360# check single-5 success: 1 8361DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8362 8363# check single-6 success: 1 8364INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8365Warnings: 8366Warning 1264 Out of range value for column 'f_int2' at row 1 8367 8368# check single-7 success: 1 8369DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8370DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8371INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8372f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8373f_charbig = '#NULL#'; 8374INSERT INTO t1 8375SET f_int1 = NULL , f_int2 = -@max_row, 8376f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8377f_charbig = '#NULL#'; 8378# check null success: 1 8379 8380# check null-1 success: 1 8381UPDATE t1 SET f_int1 = -@max_row 8382WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8383AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8384 8385# check null-2 success: 1 8386UPDATE t1 SET f_int1 = NULL 8387WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8388AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8389 8390# check null-3 success: 1 8391DELETE FROM t1 8392WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8393AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8394 8395# check null-4 success: 1 8396DELETE FROM t1 8397WHERE f_int1 = 0 AND f_int2 = 0 8398AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8399AND f_charbig = '#NULL#'; 8400INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8401SELECT f_int1, f_int1, '', '', 'was inserted' 8402 FROM t0_template source_tab 8403WHERE MOD(f_int1,3) = 0 8404AND f_int1 BETWEEN @max_row_div2 AND @max_row 8405ON DUPLICATE KEY 8406UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8407f_int2 = 2 * @max_row + source_tab.f_int1, 8408f_charbig = 'was updated'; 8409 8410# check unique-1-a success: 1 8411 8412# check unique-1-b success: 1 8413DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8415f_int2 = CAST(f_char1 AS SIGNED INT), 8416f_charbig = CONCAT('===',f_char1,'===') 8417WHERE f_charbig = 'was updated'; 8418REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8419SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8420 FROM t0_template source_tab 8421WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8422 8423# check replace success: 1 8424DELETE FROM t1 8425WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8426DELETE FROM t1 8427WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8428f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8429UPDATE t1 SET f_int2 = f_int1, 8430f_char1 = CAST(f_int1 AS CHAR), 8431f_char2 = CAST(f_int1 AS CHAR), 8432f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8433WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8434SET AUTOCOMMIT= 0; 8435INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8436SELECT f_int1, f_int1, '', '', 'was inserted' 8437FROM t0_template source_tab 8438WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8439 8440# check transactions-1 success: 1 8441COMMIT WORK; 8442 8443# check transactions-2 success: 1 8444ROLLBACK WORK; 8445 8446# check transactions-3 success: 1 8447DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8448COMMIT WORK; 8449ROLLBACK WORK; 8450 8451# check transactions-4 success: 1 8452INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8453SELECT f_int1, f_int1, '', '', 'was inserted' 8454FROM t0_template source_tab 8455WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8456 8457# check transactions-5 success: 1 8458ROLLBACK WORK; 8459Warnings: 8460Warning 1196 Some non-transactional changed tables couldn't be rolled back 8461 8462# check transactions-6 success: 1 8463# INFO: Storage engine used for t1 seems to be not transactional. 8464COMMIT; 8465 8466# check transactions-7 success: 1 8467DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8468COMMIT WORK; 8469SET @@session.sql_mode = 'traditional'; 8470Warnings: 8471Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8472SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8473INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8474SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8475'', '', 'was inserted' FROM t0_template 8476WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8477ERROR 22012: Division by 0 8478COMMIT; 8479 8480# check transactions-8 success: 1 8481# INFO: Storage engine used for t1 seems to be unable to revert 8482# changes made by the failing statement. 8483SET @@session.sql_mode = ''; 8484Warnings: 8485Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8486SET AUTOCOMMIT= 1; 8487DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8488COMMIT WORK; 8489UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8490 8491# check special-1 success: 1 8492UPDATE t1 SET f_charbig = ''; 8493 8494# check special-2 success: 1 8495UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8496INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8497SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8498WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8501'just inserted' FROM t0_template 8502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8503CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8504BEGIN 8505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8506f_charbig = 'updated by trigger' 8507 WHERE f_int1 = new.f_int1; 8508END| 8509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8510SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8512 8513# check trigger-1 success: 1 8514DROP TRIGGER trg_1; 8515UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8516f_int2 = CAST(f_char1 AS SIGNED INT), 8517f_charbig = 'just inserted' 8518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8519DELETE FROM t0_aux 8520WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8521INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8522SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8523'just inserted' FROM t0_template 8524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8525CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8526BEGIN 8527UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8528f_charbig = 'updated by trigger' 8529 WHERE f_int1 = new.f_int1; 8530END| 8531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8532SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8533WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8534 8535# check trigger-2 success: 1 8536DROP TRIGGER trg_1; 8537UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8538f_int2 = CAST(f_char1 AS SIGNED INT), 8539f_charbig = 'just inserted' 8540 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8541DELETE FROM t0_aux 8542WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8543INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8544SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8545'just inserted' FROM t0_template 8546WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8547CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8548BEGIN 8549UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8550f_charbig = 'updated by trigger' 8551 WHERE f_int1 = new.f_int1; 8552END| 8553UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8554WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8555 8556# check trigger-3 success: 1 8557DROP TRIGGER trg_1; 8558UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8559f_int2 = CAST(f_char1 AS SIGNED INT), 8560f_charbig = 'just inserted' 8561 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8562DELETE FROM t0_aux 8563WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8564INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8565SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8566'just inserted' FROM t0_template 8567WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8568CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8569BEGIN 8570UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8571f_charbig = 'updated by trigger' 8572 WHERE f_int1 = - old.f_int1; 8573END| 8574UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8575WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8576 8577# check trigger-4 success: 1 8578DROP TRIGGER trg_1; 8579UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8580f_int2 = CAST(f_char1 AS SIGNED INT), 8581f_charbig = 'just inserted' 8582 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8583DELETE FROM t0_aux 8584WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8585INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8586SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8587'just inserted' FROM t0_template 8588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8589CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8590BEGIN 8591UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8592f_charbig = 'updated by trigger' 8593 WHERE f_int1 = new.f_int1; 8594END| 8595UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8596WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8597 8598# check trigger-5 success: 1 8599DROP TRIGGER trg_1; 8600UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8601f_int2 = CAST(f_char1 AS SIGNED INT), 8602f_charbig = 'just inserted' 8603 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8604DELETE FROM t0_aux 8605WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8606INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8607SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8608'just inserted' FROM t0_template 8609WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8610CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8611BEGIN 8612UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8613f_charbig = 'updated by trigger' 8614 WHERE f_int1 = - old.f_int1; 8615END| 8616UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8617WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8618 8619# check trigger-6 success: 1 8620DROP TRIGGER trg_1; 8621UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8622f_int2 = CAST(f_char1 AS SIGNED INT), 8623f_charbig = 'just inserted' 8624 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8625DELETE FROM t0_aux 8626WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8627INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8628SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8629'just inserted' FROM t0_template 8630WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8631CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8632BEGIN 8633UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8634f_charbig = 'updated by trigger' 8635 WHERE f_int1 = - old.f_int1; 8636END| 8637DELETE FROM t0_aux 8638WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8639 8640# check trigger-7 success: 1 8641DROP TRIGGER trg_1; 8642UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8643f_int2 = CAST(f_char1 AS SIGNED INT), 8644f_charbig = 'just inserted' 8645 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8646DELETE FROM t0_aux 8647WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8648INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8649SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8650'just inserted' FROM t0_template 8651WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8652CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8653BEGIN 8654UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8655f_charbig = 'updated by trigger' 8656 WHERE f_int1 = - old.f_int1; 8657END| 8658DELETE FROM t0_aux 8659WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8660 8661# check trigger-8 success: 1 8662DROP TRIGGER trg_1; 8663UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8664f_int2 = CAST(f_char1 AS SIGNED INT), 8665f_charbig = 'just inserted' 8666 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8667DELETE FROM t0_aux 8668WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8669DELETE FROM t1 8670WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8671CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8672BEGIN 8673SET new.f_int1 = old.f_int1 + @max_row, 8674new.f_int2 = old.f_int2 - @max_row, 8675new.f_charbig = '####updated per update trigger####'; 8676END| 8677UPDATE t1 8678SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8679f_charbig = '####updated per update statement itself####'; 8680Warnings: 8681Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8682 8683# check trigger-9 success: 1 8684DROP TRIGGER trg_2; 8685UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8686f_int2 = CAST(f_char1 AS SIGNED INT), 8687f_charbig = CONCAT('===',f_char1,'==='); 8688Warnings: 8689Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8690CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8691BEGIN 8692SET new.f_int1 = new.f_int1 + @max_row, 8693new.f_int2 = new.f_int2 - @max_row, 8694new.f_charbig = '####updated per update trigger####'; 8695END| 8696UPDATE t1 8697SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8698f_charbig = '####updated per update statement itself####'; 8699Warnings: 8700Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8701 8702# check trigger-10 success: 1 8703DROP TRIGGER trg_2; 8704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8705f_int2 = CAST(f_char1 AS SIGNED INT), 8706f_charbig = CONCAT('===',f_char1,'==='); 8707Warnings: 8708Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8709CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8710BEGIN 8711SET new.f_int1 = @my_max1 + @counter, 8712new.f_int2 = @my_min2 - @counter, 8713new.f_charbig = '####updated per insert trigger####'; 8714SET @counter = @counter + 1; 8715END| 8716SET @counter = 1; 8717SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8718Warnings: 8719Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8721SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8722CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8723WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8724ORDER BY f_int1; 8725DROP TRIGGER trg_3; 8726 8727# check trigger-11 success: 1 8728Warnings: 8729Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8730DELETE FROM t1 8731WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8732AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8733AND f_charbig = '####updated per insert trigger####'; 8734CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8735BEGIN 8736SET new.f_int1 = @my_max1 + @counter, 8737new.f_int2 = @my_min2 - @counter, 8738new.f_charbig = '####updated per insert trigger####'; 8739SET @counter = @counter + 1; 8740END| 8741SET @counter = 1; 8742SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8743Warnings: 8744Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8745INSERT INTO t1 (f_char1, f_char2, f_charbig) 8746SELECT CAST(f_int1 AS CHAR), 8747CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8748WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8749ORDER BY f_int1; 8750DROP TRIGGER trg_3; 8751 8752# check trigger-12 success: 1 8753Warnings: 8754Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8755DELETE FROM t1 8756WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8757AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8758AND f_charbig = '####updated per insert trigger####'; 8759ANALYZE TABLE t1; 8760Table Op Msg_type Msg_text 8761test.t1 analyze status OK 8762test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8763CHECK TABLE t1 EXTENDED; 8764Table Op Msg_type Msg_text 8765test.t1 check status OK 8766test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8767CHECKSUM TABLE t1 EXTENDED; 8768Table Checksum 8769test.t1 <some_value> 8770OPTIMIZE TABLE t1; 8771Table Op Msg_type Msg_text 8772test.t1 optimize status OK 8773test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8774# check layout success: 1 8775REPAIR TABLE t1 EXTENDED; 8776Table Op Msg_type Msg_text 8777test.t1 repair status OK 8778test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8779# check layout success: 1 8780TRUNCATE t1; 8781Warnings: 8782Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8783 8784# check TRUNCATE success: 1 8785# check layout success: 1 8786# End usability test (inc/partition_check.inc) 8787DROP TABLE t1; 8788DROP TABLE IF EXISTS t1; 8789CREATE TABLE t1 ( 8790f_int1 INTEGER, 8791f_int2 INTEGER, 8792f_char1 CHAR(20), 8793f_char2 CHAR(20), 8794f_charbig VARCHAR(1000) 8795, UNIQUE INDEX uidx1 (f_int2,f_int1) 8796) 8797PARTITION BY HASH(f_int1) PARTITIONS 2; 8798Warnings: 8799Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8800INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8801SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8802WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 8803Warnings: 8804Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8805ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 8806Warnings: 8807Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8808INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8809SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8810WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 8811Warnings: 8812Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8813# Start usability test (inc/partition_check.inc) 8814create_command 8815SHOW CREATE TABLE t1; 8816Table Create Table 8817t1 CREATE TABLE `t1` ( 8818 `f_int1` int(11) DEFAULT NULL, 8819 `f_int2` mediumint(9) DEFAULT NULL, 8820 `f_char1` char(20) DEFAULT NULL, 8821 `f_char2` char(20) DEFAULT NULL, 8822 `f_charbig` varchar(1000) DEFAULT NULL, 8823 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 8824) ENGINE=MyISAM DEFAULT CHARSET=latin1 8825/*!50100 PARTITION BY HASH (f_int1) 8826PARTITIONS 2 */ 8827 8828unified filelist 8829t1#P#p0.MYD 8830t1#P#p0.MYI 8831t1#P#p1.MYD 8832t1#P#p1.MYI 8833t1.frm 8834t1.par 8835 8836# check prerequisites-1 success: 1 8837# check COUNT(*) success: 1 8838# check MIN/MAX(f_int1) success: 1 8839# check MIN/MAX(f_int2) success: 1 8840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8841SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8842CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8843WHERE f_int1 IN (2,3); 8844ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 8845# check prerequisites-3 success: 1 8846# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8847INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8848SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8849CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8850WHERE f_int1 IN (2,3); 8851DELETE FROM t1 WHERE f_charbig = 'delete me'; 8852INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8853SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8854CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8855WHERE f_int1 IN (2,3); 8856DELETE FROM t1 WHERE f_charbig = 'delete me'; 8857# check read via f_int1 success: 1 8858# check read via f_int2 success: 1 8859 8860# check multiple-1 success: 1 8861DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8862 8863# check multiple-2 success: 1 8864INSERT INTO t1 SELECT * FROM t0_template 8865WHERE MOD(f_int1,3) = 0; 8866 8867# check multiple-3 success: 1 8868UPDATE t1 SET f_int1 = f_int1 + @max_row 8869WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8870AND @max_row_div2 + @max_row_div4; 8871 8872# check multiple-4 success: 1 8873DELETE FROM t1 8874WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8875AND @max_row_div2 + @max_row_div4 + @max_row; 8876 8877# check multiple-5 success: 1 8878SELECT COUNT(*) INTO @try_count FROM t0_template 8879WHERE MOD(f_int1,3) = 0 8880AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8881SELECT COUNT(*) INTO @clash_count 8882FROM t1 INNER JOIN t0_template USING(f_int1) 8883WHERE MOD(f_int1,3) = 0 8884AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8885SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8886INSERT INTO t1 8887SET f_int1 = @cur_value , f_int2 = @cur_value, 8888f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8889f_charbig = '#SINGLE#'; 8890 8891# check single-1 success: 1 8892SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8893INSERT INTO t1 8894SET f_int1 = @cur_value , f_int2 = @cur_value, 8895f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8896f_charbig = '#SINGLE#'; 8897 8898# check single-2 success: 1 8899SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8900SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8901UPDATE t1 SET f_int1 = @cur_value2 8902WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8903 8904# check single-3 success: 1 8905SET @cur_value1= -1; 8906SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8907UPDATE t1 SET f_int1 = @cur_value1 8908WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8909 8910# check single-4 success: 1 8911SELECT MAX(f_int1) INTO @cur_value FROM t1; 8912DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8913 8914# check single-5 success: 1 8915DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8916 8917# check single-6 success: 1 8918INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8919Warnings: 8920Warning 1264 Out of range value for column 'f_int2' at row 1 8921 8922# check single-7 success: 1 8923DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8924DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8925INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8926f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8927f_charbig = '#NULL#'; 8928INSERT INTO t1 8929SET f_int1 = NULL , f_int2 = -@max_row, 8930f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8931f_charbig = '#NULL#'; 8932# check null success: 1 8933 8934# check null-1 success: 1 8935UPDATE t1 SET f_int1 = -@max_row 8936WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8937AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8938 8939# check null-2 success: 1 8940UPDATE t1 SET f_int1 = NULL 8941WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8942AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8943 8944# check null-3 success: 1 8945DELETE FROM t1 8946WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8947AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8948 8949# check null-4 success: 1 8950DELETE FROM t1 8951WHERE f_int1 = 0 AND f_int2 = 0 8952AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8953AND f_charbig = '#NULL#'; 8954INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8955SELECT f_int1, f_int1, '', '', 'was inserted' 8956 FROM t0_template source_tab 8957WHERE MOD(f_int1,3) = 0 8958AND f_int1 BETWEEN @max_row_div2 AND @max_row 8959ON DUPLICATE KEY 8960UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8961f_int2 = 2 * @max_row + source_tab.f_int1, 8962f_charbig = 'was updated'; 8963 8964# check unique-1-a success: 1 8965 8966# check unique-1-b success: 1 8967DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8968UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8969f_int2 = CAST(f_char1 AS SIGNED INT), 8970f_charbig = CONCAT('===',f_char1,'===') 8971WHERE f_charbig = 'was updated'; 8972REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8973SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8974 FROM t0_template source_tab 8975WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8976 8977# check replace success: 1 8978DELETE FROM t1 8979WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8980DELETE FROM t1 8981WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8982f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8983UPDATE t1 SET f_int2 = f_int1, 8984f_char1 = CAST(f_int1 AS CHAR), 8985f_char2 = CAST(f_int1 AS CHAR), 8986f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8987WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8988SET AUTOCOMMIT= 0; 8989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8990SELECT f_int1, f_int1, '', '', 'was inserted' 8991FROM t0_template source_tab 8992WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8993 8994# check transactions-1 success: 1 8995COMMIT WORK; 8996 8997# check transactions-2 success: 1 8998ROLLBACK WORK; 8999 9000# check transactions-3 success: 1 9001DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9002COMMIT WORK; 9003ROLLBACK WORK; 9004 9005# check transactions-4 success: 1 9006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9007SELECT f_int1, f_int1, '', '', 'was inserted' 9008FROM t0_template source_tab 9009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9010 9011# check transactions-5 success: 1 9012ROLLBACK WORK; 9013Warnings: 9014Warning 1196 Some non-transactional changed tables couldn't be rolled back 9015 9016# check transactions-6 success: 1 9017# INFO: Storage engine used for t1 seems to be not transactional. 9018COMMIT; 9019 9020# check transactions-7 success: 1 9021DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9022COMMIT WORK; 9023SET @@session.sql_mode = 'traditional'; 9024Warnings: 9025Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9026SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9027INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9028SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9029'', '', 'was inserted' FROM t0_template 9030WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9031ERROR 22012: Division by 0 9032COMMIT; 9033 9034# check transactions-8 success: 1 9035# INFO: Storage engine used for t1 seems to be unable to revert 9036# changes made by the failing statement. 9037SET @@session.sql_mode = ''; 9038Warnings: 9039Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9040SET AUTOCOMMIT= 1; 9041DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9042COMMIT WORK; 9043UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9044 9045# check special-1 success: 1 9046UPDATE t1 SET f_charbig = ''; 9047 9048# check special-2 success: 1 9049UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9050INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9051SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9053INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9054SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9055'just inserted' FROM t0_template 9056WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9057CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9058BEGIN 9059UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9060f_charbig = 'updated by trigger' 9061 WHERE f_int1 = new.f_int1; 9062END| 9063INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9064SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9065WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9066 9067# check trigger-1 success: 1 9068DROP TRIGGER trg_1; 9069UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9070f_int2 = CAST(f_char1 AS SIGNED INT), 9071f_charbig = 'just inserted' 9072 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9073DELETE FROM t0_aux 9074WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9077'just inserted' FROM t0_template 9078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9079CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9080BEGIN 9081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9082f_charbig = 'updated by trigger' 9083 WHERE f_int1 = new.f_int1; 9084END| 9085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9088 9089# check trigger-2 success: 1 9090DROP TRIGGER trg_1; 9091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9092f_int2 = CAST(f_char1 AS SIGNED INT), 9093f_charbig = 'just inserted' 9094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9095DELETE FROM t0_aux 9096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9099'just inserted' FROM t0_template 9100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9101CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9102BEGIN 9103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9104f_charbig = 'updated by trigger' 9105 WHERE f_int1 = new.f_int1; 9106END| 9107UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9108WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9109 9110# check trigger-3 success: 1 9111DROP TRIGGER trg_1; 9112UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9113f_int2 = CAST(f_char1 AS SIGNED INT), 9114f_charbig = 'just inserted' 9115 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9116DELETE FROM t0_aux 9117WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9118INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9119SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9120'just inserted' FROM t0_template 9121WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9122CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9123BEGIN 9124UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9125f_charbig = 'updated by trigger' 9126 WHERE f_int1 = - old.f_int1; 9127END| 9128UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9129WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9130 9131# check trigger-4 success: 1 9132DROP TRIGGER trg_1; 9133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9134f_int2 = CAST(f_char1 AS SIGNED INT), 9135f_charbig = 'just inserted' 9136 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9137DELETE FROM t0_aux 9138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9141'just inserted' FROM t0_template 9142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9143CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9144BEGIN 9145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9146f_charbig = 'updated by trigger' 9147 WHERE f_int1 = new.f_int1; 9148END| 9149UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9150WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9151 9152# check trigger-5 success: 1 9153DROP TRIGGER trg_1; 9154UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9155f_int2 = CAST(f_char1 AS SIGNED INT), 9156f_charbig = 'just inserted' 9157 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9158DELETE FROM t0_aux 9159WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9160INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9161SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9162'just inserted' FROM t0_template 9163WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9164CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9165BEGIN 9166UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9167f_charbig = 'updated by trigger' 9168 WHERE f_int1 = - old.f_int1; 9169END| 9170UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9171WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9172 9173# check trigger-6 success: 1 9174DROP TRIGGER trg_1; 9175UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9176f_int2 = CAST(f_char1 AS SIGNED INT), 9177f_charbig = 'just inserted' 9178 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9179DELETE FROM t0_aux 9180WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9181INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9182SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9183'just inserted' FROM t0_template 9184WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9185CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9186BEGIN 9187UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9188f_charbig = 'updated by trigger' 9189 WHERE f_int1 = - old.f_int1; 9190END| 9191DELETE FROM t0_aux 9192WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9193 9194# check trigger-7 success: 1 9195DROP TRIGGER trg_1; 9196UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9197f_int2 = CAST(f_char1 AS SIGNED INT), 9198f_charbig = 'just inserted' 9199 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9200DELETE FROM t0_aux 9201WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9202INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9203SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9204'just inserted' FROM t0_template 9205WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9206CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9207BEGIN 9208UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9209f_charbig = 'updated by trigger' 9210 WHERE f_int1 = - old.f_int1; 9211END| 9212DELETE FROM t0_aux 9213WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9214 9215# check trigger-8 success: 1 9216DROP TRIGGER trg_1; 9217UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9218f_int2 = CAST(f_char1 AS SIGNED INT), 9219f_charbig = 'just inserted' 9220 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9221DELETE FROM t0_aux 9222WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9223DELETE FROM t1 9224WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9225CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9226BEGIN 9227SET new.f_int1 = old.f_int1 + @max_row, 9228new.f_int2 = old.f_int2 - @max_row, 9229new.f_charbig = '####updated per update trigger####'; 9230END| 9231UPDATE t1 9232SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9233f_charbig = '####updated per update statement itself####'; 9234Warnings: 9235Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9236 9237# check trigger-9 success: 1 9238DROP TRIGGER trg_2; 9239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9240f_int2 = CAST(f_char1 AS SIGNED INT), 9241f_charbig = CONCAT('===',f_char1,'==='); 9242Warnings: 9243Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9244CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9245BEGIN 9246SET new.f_int1 = new.f_int1 + @max_row, 9247new.f_int2 = new.f_int2 - @max_row, 9248new.f_charbig = '####updated per update trigger####'; 9249END| 9250UPDATE t1 9251SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9252f_charbig = '####updated per update statement itself####'; 9253Warnings: 9254Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9255 9256# check trigger-10 success: 1 9257DROP TRIGGER trg_2; 9258UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9259f_int2 = CAST(f_char1 AS SIGNED INT), 9260f_charbig = CONCAT('===',f_char1,'==='); 9261Warnings: 9262Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9263CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9264BEGIN 9265SET new.f_int1 = @my_max1 + @counter, 9266new.f_int2 = @my_min2 - @counter, 9267new.f_charbig = '####updated per insert trigger####'; 9268SET @counter = @counter + 1; 9269END| 9270SET @counter = 1; 9271SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9272Warnings: 9273Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9274INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9275SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9276CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9277WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9278ORDER BY f_int1; 9279DROP TRIGGER trg_3; 9280 9281# check trigger-11 success: 1 9282Warnings: 9283Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9284DELETE FROM t1 9285WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9286AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9287AND f_charbig = '####updated per insert trigger####'; 9288CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9289BEGIN 9290SET new.f_int1 = @my_max1 + @counter, 9291new.f_int2 = @my_min2 - @counter, 9292new.f_charbig = '####updated per insert trigger####'; 9293SET @counter = @counter + 1; 9294END| 9295SET @counter = 1; 9296SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9297Warnings: 9298Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9299INSERT INTO t1 (f_char1, f_char2, f_charbig) 9300SELECT CAST(f_int1 AS CHAR), 9301CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9303ORDER BY f_int1; 9304DROP TRIGGER trg_3; 9305 9306# check trigger-12 success: 1 9307Warnings: 9308Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9309DELETE FROM t1 9310WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9311AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9312AND f_charbig = '####updated per insert trigger####'; 9313ANALYZE TABLE t1; 9314Table Op Msg_type Msg_text 9315test.t1 analyze status OK 9316test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9317CHECK TABLE t1 EXTENDED; 9318Table Op Msg_type Msg_text 9319test.t1 check status OK 9320test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9321CHECKSUM TABLE t1 EXTENDED; 9322Table Checksum 9323test.t1 <some_value> 9324OPTIMIZE TABLE t1; 9325Table Op Msg_type Msg_text 9326test.t1 optimize status OK 9327test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9328# check layout success: 1 9329REPAIR TABLE t1 EXTENDED; 9330Table Op Msg_type Msg_text 9331test.t1 repair status OK 9332test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9333# check layout success: 1 9334TRUNCATE t1; 9335Warnings: 9336Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9337 9338# check TRUNCATE success: 1 9339# check layout success: 1 9340# End usability test (inc/partition_check.inc) 9341DROP TABLE t1; 9342CREATE TABLE t1 ( 9343f_int1 INTEGER, 9344f_int2 INTEGER, 9345f_char1 CHAR(20), 9346f_char2 CHAR(20), 9347f_charbig VARCHAR(1000) 9348, UNIQUE INDEX uidx1 (f_int2,f_int1) 9349) 9350PARTITION BY KEY(f_int1) PARTITIONS 5; 9351Warnings: 9352Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9353INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9354SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9355WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 9356Warnings: 9357Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9358ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 9359Warnings: 9360Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9361INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9362SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9363WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 9364Warnings: 9365Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9366# Start usability test (inc/partition_check.inc) 9367create_command 9368SHOW CREATE TABLE t1; 9369Table Create Table 9370t1 CREATE TABLE `t1` ( 9371 `f_int1` int(11) DEFAULT NULL, 9372 `f_int2` mediumint(9) DEFAULT NULL, 9373 `f_char1` char(20) DEFAULT NULL, 9374 `f_char2` char(20) DEFAULT NULL, 9375 `f_charbig` varchar(1000) DEFAULT NULL, 9376 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 9377) ENGINE=MyISAM DEFAULT CHARSET=latin1 9378/*!50100 PARTITION BY KEY (f_int1) 9379PARTITIONS 5 */ 9380 9381unified filelist 9382t1#P#p0.MYD 9383t1#P#p0.MYI 9384t1#P#p1.MYD 9385t1#P#p1.MYI 9386t1#P#p2.MYD 9387t1#P#p2.MYI 9388t1#P#p3.MYD 9389t1#P#p3.MYI 9390t1#P#p4.MYD 9391t1#P#p4.MYI 9392t1.frm 9393t1.par 9394 9395# check prerequisites-1 success: 1 9396# check COUNT(*) success: 1 9397# check MIN/MAX(f_int1) success: 1 9398# check MIN/MAX(f_int2) success: 1 9399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9400SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9401CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9402WHERE f_int1 IN (2,3); 9403ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 9404# check prerequisites-3 success: 1 9405# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9406INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9407SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9408CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9409WHERE f_int1 IN (2,3); 9410DELETE FROM t1 WHERE f_charbig = 'delete me'; 9411INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9412SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9413CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9414WHERE f_int1 IN (2,3); 9415DELETE FROM t1 WHERE f_charbig = 'delete me'; 9416# check read via f_int1 success: 1 9417# check read via f_int2 success: 1 9418 9419# check multiple-1 success: 1 9420DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9421 9422# check multiple-2 success: 1 9423INSERT INTO t1 SELECT * FROM t0_template 9424WHERE MOD(f_int1,3) = 0; 9425 9426# check multiple-3 success: 1 9427UPDATE t1 SET f_int1 = f_int1 + @max_row 9428WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9429AND @max_row_div2 + @max_row_div4; 9430 9431# check multiple-4 success: 1 9432DELETE FROM t1 9433WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9434AND @max_row_div2 + @max_row_div4 + @max_row; 9435 9436# check multiple-5 success: 1 9437SELECT COUNT(*) INTO @try_count FROM t0_template 9438WHERE MOD(f_int1,3) = 0 9439AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9440SELECT COUNT(*) INTO @clash_count 9441FROM t1 INNER JOIN t0_template USING(f_int1) 9442WHERE MOD(f_int1,3) = 0 9443AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9444SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9445INSERT INTO t1 9446SET f_int1 = @cur_value , f_int2 = @cur_value, 9447f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9448f_charbig = '#SINGLE#'; 9449 9450# check single-1 success: 1 9451SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9452INSERT INTO t1 9453SET f_int1 = @cur_value , f_int2 = @cur_value, 9454f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9455f_charbig = '#SINGLE#'; 9456 9457# check single-2 success: 1 9458SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9459SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9460UPDATE t1 SET f_int1 = @cur_value2 9461WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9462 9463# check single-3 success: 1 9464SET @cur_value1= -1; 9465SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9466UPDATE t1 SET f_int1 = @cur_value1 9467WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9468 9469# check single-4 success: 1 9470SELECT MAX(f_int1) INTO @cur_value FROM t1; 9471DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9472 9473# check single-5 success: 1 9474DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9475 9476# check single-6 success: 1 9477INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9478Warnings: 9479Warning 1264 Out of range value for column 'f_int2' at row 1 9480 9481# check single-7 success: 1 9482DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 9483DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9484INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9485f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9486f_charbig = '#NULL#'; 9487INSERT INTO t1 9488SET f_int1 = NULL , f_int2 = -@max_row, 9489f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9490f_charbig = '#NULL#'; 9491# check null success: 1 9492 9493# check null-1 success: 1 9494UPDATE t1 SET f_int1 = -@max_row 9495WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9496AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9497 9498# check null-2 success: 1 9499UPDATE t1 SET f_int1 = NULL 9500WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9501AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9502 9503# check null-3 success: 1 9504DELETE FROM t1 9505WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9506AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9507 9508# check null-4 success: 1 9509DELETE FROM t1 9510WHERE f_int1 = 0 AND f_int2 = 0 9511AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9512AND f_charbig = '#NULL#'; 9513INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9514SELECT f_int1, f_int1, '', '', 'was inserted' 9515 FROM t0_template source_tab 9516WHERE MOD(f_int1,3) = 0 9517AND f_int1 BETWEEN @max_row_div2 AND @max_row 9518ON DUPLICATE KEY 9519UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9520f_int2 = 2 * @max_row + source_tab.f_int1, 9521f_charbig = 'was updated'; 9522 9523# check unique-1-a success: 1 9524 9525# check unique-1-b success: 1 9526DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9527UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9528f_int2 = CAST(f_char1 AS SIGNED INT), 9529f_charbig = CONCAT('===',f_char1,'===') 9530WHERE f_charbig = 'was updated'; 9531REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9532SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9533 FROM t0_template source_tab 9534WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9535 9536# check replace success: 1 9537DELETE FROM t1 9538WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9539DELETE FROM t1 9540WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9541f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9542UPDATE t1 SET f_int2 = f_int1, 9543f_char1 = CAST(f_int1 AS CHAR), 9544f_char2 = CAST(f_int1 AS CHAR), 9545f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9546WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9547SET AUTOCOMMIT= 0; 9548INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9549SELECT f_int1, f_int1, '', '', 'was inserted' 9550FROM t0_template source_tab 9551WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9552 9553# check transactions-1 success: 1 9554COMMIT WORK; 9555 9556# check transactions-2 success: 1 9557ROLLBACK WORK; 9558 9559# check transactions-3 success: 1 9560DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9561COMMIT WORK; 9562ROLLBACK WORK; 9563 9564# check transactions-4 success: 1 9565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9566SELECT f_int1, f_int1, '', '', 'was inserted' 9567FROM t0_template source_tab 9568WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9569 9570# check transactions-5 success: 1 9571ROLLBACK WORK; 9572Warnings: 9573Warning 1196 Some non-transactional changed tables couldn't be rolled back 9574 9575# check transactions-6 success: 1 9576# INFO: Storage engine used for t1 seems to be not transactional. 9577COMMIT; 9578 9579# check transactions-7 success: 1 9580DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9581COMMIT WORK; 9582SET @@session.sql_mode = 'traditional'; 9583Warnings: 9584Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9585SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9586INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9587SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9588'', '', 'was inserted' FROM t0_template 9589WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9590ERROR 22012: Division by 0 9591COMMIT; 9592 9593# check transactions-8 success: 1 9594# INFO: Storage engine used for t1 seems to be unable to revert 9595# changes made by the failing statement. 9596SET @@session.sql_mode = ''; 9597Warnings: 9598Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9599SET AUTOCOMMIT= 1; 9600DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9601COMMIT WORK; 9602UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9603 9604# check special-1 success: 1 9605UPDATE t1 SET f_charbig = ''; 9606 9607# check special-2 success: 1 9608UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9609INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9610SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9611WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9612INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9613SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9614'just inserted' FROM t0_template 9615WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9616CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9617BEGIN 9618UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9619f_charbig = 'updated by trigger' 9620 WHERE f_int1 = new.f_int1; 9621END| 9622INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9623SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9624WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9625 9626# check trigger-1 success: 1 9627DROP TRIGGER trg_1; 9628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9629f_int2 = CAST(f_char1 AS SIGNED INT), 9630f_charbig = 'just inserted' 9631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9632DELETE FROM t0_aux 9633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9636'just inserted' FROM t0_template 9637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9638CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9639BEGIN 9640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9641f_charbig = 'updated by trigger' 9642 WHERE f_int1 = new.f_int1; 9643END| 9644INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9645SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9647 9648# check trigger-2 success: 1 9649DROP TRIGGER trg_1; 9650UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9651f_int2 = CAST(f_char1 AS SIGNED INT), 9652f_charbig = 'just inserted' 9653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9654DELETE FROM t0_aux 9655WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9656INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9657SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9658'just inserted' FROM t0_template 9659WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9660CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9661BEGIN 9662UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9663f_charbig = 'updated by trigger' 9664 WHERE f_int1 = new.f_int1; 9665END| 9666UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9667WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9668 9669# check trigger-3 success: 1 9670DROP TRIGGER trg_1; 9671UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9672f_int2 = CAST(f_char1 AS SIGNED INT), 9673f_charbig = 'just inserted' 9674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9675DELETE FROM t0_aux 9676WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9677INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9678SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9679'just inserted' FROM t0_template 9680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9681CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9682BEGIN 9683UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9684f_charbig = 'updated by trigger' 9685 WHERE f_int1 = - old.f_int1; 9686END| 9687UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9688WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9689 9690# check trigger-4 success: 1 9691DROP TRIGGER trg_1; 9692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9693f_int2 = CAST(f_char1 AS SIGNED INT), 9694f_charbig = 'just inserted' 9695 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9696DELETE FROM t0_aux 9697WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9698INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9699SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9700'just inserted' FROM t0_template 9701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9702CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9703BEGIN 9704UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9705f_charbig = 'updated by trigger' 9706 WHERE f_int1 = new.f_int1; 9707END| 9708UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9709WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9710 9711# check trigger-5 success: 1 9712DROP TRIGGER trg_1; 9713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9714f_int2 = CAST(f_char1 AS SIGNED INT), 9715f_charbig = 'just inserted' 9716 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9717DELETE FROM t0_aux 9718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9721'just inserted' FROM t0_template 9722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9723CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9724BEGIN 9725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9726f_charbig = 'updated by trigger' 9727 WHERE f_int1 = - old.f_int1; 9728END| 9729UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9731 9732# check trigger-6 success: 1 9733DROP TRIGGER trg_1; 9734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9735f_int2 = CAST(f_char1 AS SIGNED INT), 9736f_charbig = 'just inserted' 9737 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9738DELETE FROM t0_aux 9739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9740INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9741SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9742'just inserted' FROM t0_template 9743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9744CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9745BEGIN 9746UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9747f_charbig = 'updated by trigger' 9748 WHERE f_int1 = - old.f_int1; 9749END| 9750DELETE FROM t0_aux 9751WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9752 9753# check trigger-7 success: 1 9754DROP TRIGGER trg_1; 9755UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9756f_int2 = CAST(f_char1 AS SIGNED INT), 9757f_charbig = 'just inserted' 9758 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9759DELETE FROM t0_aux 9760WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9761INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9762SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9763'just inserted' FROM t0_template 9764WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9765CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9766BEGIN 9767UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9768f_charbig = 'updated by trigger' 9769 WHERE f_int1 = - old.f_int1; 9770END| 9771DELETE FROM t0_aux 9772WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9773 9774# check trigger-8 success: 1 9775DROP TRIGGER trg_1; 9776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9777f_int2 = CAST(f_char1 AS SIGNED INT), 9778f_charbig = 'just inserted' 9779 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9780DELETE FROM t0_aux 9781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9782DELETE FROM t1 9783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9784CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9785BEGIN 9786SET new.f_int1 = old.f_int1 + @max_row, 9787new.f_int2 = old.f_int2 - @max_row, 9788new.f_charbig = '####updated per update trigger####'; 9789END| 9790UPDATE t1 9791SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9792f_charbig = '####updated per update statement itself####'; 9793Warnings: 9794Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9795 9796# check trigger-9 success: 1 9797DROP TRIGGER trg_2; 9798UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9799f_int2 = CAST(f_char1 AS SIGNED INT), 9800f_charbig = CONCAT('===',f_char1,'==='); 9801Warnings: 9802Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9803CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9804BEGIN 9805SET new.f_int1 = new.f_int1 + @max_row, 9806new.f_int2 = new.f_int2 - @max_row, 9807new.f_charbig = '####updated per update trigger####'; 9808END| 9809UPDATE t1 9810SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9811f_charbig = '####updated per update statement itself####'; 9812Warnings: 9813Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9814 9815# check trigger-10 success: 1 9816DROP TRIGGER trg_2; 9817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9818f_int2 = CAST(f_char1 AS SIGNED INT), 9819f_charbig = CONCAT('===',f_char1,'==='); 9820Warnings: 9821Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9822CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9823BEGIN 9824SET new.f_int1 = @my_max1 + @counter, 9825new.f_int2 = @my_min2 - @counter, 9826new.f_charbig = '####updated per insert trigger####'; 9827SET @counter = @counter + 1; 9828END| 9829SET @counter = 1; 9830SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9831Warnings: 9832Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9833INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9834SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9835CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9837ORDER BY f_int1; 9838DROP TRIGGER trg_3; 9839 9840# check trigger-11 success: 1 9841Warnings: 9842Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9843DELETE FROM t1 9844WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9845AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9846AND f_charbig = '####updated per insert trigger####'; 9847CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9848BEGIN 9849SET new.f_int1 = @my_max1 + @counter, 9850new.f_int2 = @my_min2 - @counter, 9851new.f_charbig = '####updated per insert trigger####'; 9852SET @counter = @counter + 1; 9853END| 9854SET @counter = 1; 9855SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9856Warnings: 9857Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9858INSERT INTO t1 (f_char1, f_char2, f_charbig) 9859SELECT CAST(f_int1 AS CHAR), 9860CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9861WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9862ORDER BY f_int1; 9863DROP TRIGGER trg_3; 9864 9865# check trigger-12 success: 1 9866Warnings: 9867Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9868DELETE FROM t1 9869WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9870AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9871AND f_charbig = '####updated per insert trigger####'; 9872ANALYZE TABLE t1; 9873Table Op Msg_type Msg_text 9874test.t1 analyze status OK 9875test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9876CHECK TABLE t1 EXTENDED; 9877Table Op Msg_type Msg_text 9878test.t1 check status OK 9879test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9880CHECKSUM TABLE t1 EXTENDED; 9881Table Checksum 9882test.t1 <some_value> 9883OPTIMIZE TABLE t1; 9884Table Op Msg_type Msg_text 9885test.t1 optimize status OK 9886test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9887# check layout success: 1 9888REPAIR TABLE t1 EXTENDED; 9889Table Op Msg_type Msg_text 9890test.t1 repair status OK 9891test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9892# check layout success: 1 9893TRUNCATE t1; 9894Warnings: 9895Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9896 9897# check TRUNCATE success: 1 9898# check layout success: 1 9899# End usability test (inc/partition_check.inc) 9900DROP TABLE t1; 9901CREATE TABLE t1 ( 9902f_int1 INTEGER, 9903f_int2 INTEGER, 9904f_char1 CHAR(20), 9905f_char2 CHAR(20), 9906f_charbig VARCHAR(1000) 9907, UNIQUE INDEX uidx1 (f_int2,f_int1) 9908) 9909PARTITION BY LIST(MOD(f_int1,4)) 9910(PARTITION part_3 VALUES IN (-3), 9911PARTITION part_2 VALUES IN (-2), 9912PARTITION part_1 VALUES IN (-1), 9913PARTITION part_N VALUES IN (NULL), 9914PARTITION part0 VALUES IN (0), 9915PARTITION part1 VALUES IN (1), 9916PARTITION part2 VALUES IN (2), 9917PARTITION part3 VALUES IN (3)); 9918Warnings: 9919Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9920INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9921SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9922WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 9923Warnings: 9924Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9925ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 9926Warnings: 9927Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9928INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9929SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9930WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 9931Warnings: 9932Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9933# Start usability test (inc/partition_check.inc) 9934create_command 9935SHOW CREATE TABLE t1; 9936Table Create Table 9937t1 CREATE TABLE `t1` ( 9938 `f_int1` int(11) DEFAULT NULL, 9939 `f_int2` mediumint(9) DEFAULT NULL, 9940 `f_char1` char(20) DEFAULT NULL, 9941 `f_char2` char(20) DEFAULT NULL, 9942 `f_charbig` varchar(1000) DEFAULT NULL, 9943 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 9944) ENGINE=MyISAM DEFAULT CHARSET=latin1 9945/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 9946(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 9947 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 9948 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 9949 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 9950 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 9951 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 9952 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 9953 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 9954 9955unified filelist 9956t1#P#part0.MYD 9957t1#P#part0.MYI 9958t1#P#part1.MYD 9959t1#P#part1.MYI 9960t1#P#part2.MYD 9961t1#P#part2.MYI 9962t1#P#part3.MYD 9963t1#P#part3.MYI 9964t1#P#part_1.MYD 9965t1#P#part_1.MYI 9966t1#P#part_2.MYD 9967t1#P#part_2.MYI 9968t1#P#part_3.MYD 9969t1#P#part_3.MYI 9970t1#P#part_N.MYD 9971t1#P#part_N.MYI 9972t1.frm 9973t1.par 9974 9975# check prerequisites-1 success: 1 9976# check COUNT(*) success: 1 9977# check MIN/MAX(f_int1) success: 1 9978# check MIN/MAX(f_int2) success: 1 9979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9980SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9981CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9982WHERE f_int1 IN (2,3); 9983ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 9984# check prerequisites-3 success: 1 9985# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9986INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9987SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9988CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9989WHERE f_int1 IN (2,3); 9990DELETE FROM t1 WHERE f_charbig = 'delete me'; 9991INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9992SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9993CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9994WHERE f_int1 IN (2,3); 9995DELETE FROM t1 WHERE f_charbig = 'delete me'; 9996# check read via f_int1 success: 1 9997# check read via f_int2 success: 1 9998 9999# check multiple-1 success: 1 10000DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10001 10002# check multiple-2 success: 1 10003INSERT INTO t1 SELECT * FROM t0_template 10004WHERE MOD(f_int1,3) = 0; 10005 10006# check multiple-3 success: 1 10007UPDATE t1 SET f_int1 = f_int1 + @max_row 10008WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10009AND @max_row_div2 + @max_row_div4; 10010 10011# check multiple-4 success: 1 10012DELETE FROM t1 10013WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10014AND @max_row_div2 + @max_row_div4 + @max_row; 10015 10016# check multiple-5 success: 1 10017SELECT COUNT(*) INTO @try_count FROM t0_template 10018WHERE MOD(f_int1,3) = 0 10019AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10020SELECT COUNT(*) INTO @clash_count 10021FROM t1 INNER JOIN t0_template USING(f_int1) 10022WHERE MOD(f_int1,3) = 0 10023AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10024SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10025INSERT INTO t1 10026SET f_int1 = @cur_value , f_int2 = @cur_value, 10027f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10028f_charbig = '#SINGLE#'; 10029 10030# check single-1 success: 1 10031SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10032INSERT INTO t1 10033SET f_int1 = @cur_value , f_int2 = @cur_value, 10034f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10035f_charbig = '#SINGLE#'; 10036 10037# check single-2 success: 1 10038SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10039SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10040UPDATE t1 SET f_int1 = @cur_value2 10041WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10042 10043# check single-3 success: 1 10044SET @cur_value1= -1; 10045SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10046UPDATE t1 SET f_int1 = @cur_value1 10047WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10048 10049# check single-4 success: 1 10050SELECT MAX(f_int1) INTO @cur_value FROM t1; 10051DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10052 10053# check single-5 success: 1 10054DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10055 10056# check single-6 success: 1 10057INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10058Warnings: 10059Warning 1264 Out of range value for column 'f_int2' at row 1 10060 10061# check single-7 success: 1 10062DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 10063DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10064INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10065f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10066f_charbig = '#NULL#'; 10067INSERT INTO t1 10068SET f_int1 = NULL , f_int2 = -@max_row, 10069f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10070f_charbig = '#NULL#'; 10071# check null success: 1 10072 10073# check null-1 success: 1 10074UPDATE t1 SET f_int1 = -@max_row 10075WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10076AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10077 10078# check null-2 success: 1 10079UPDATE t1 SET f_int1 = NULL 10080WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10081AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10082 10083# check null-3 success: 1 10084DELETE FROM t1 10085WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10086AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10087 10088# check null-4 success: 1 10089DELETE FROM t1 10090WHERE f_int1 = 0 AND f_int2 = 0 10091AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10092AND f_charbig = '#NULL#'; 10093INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10094SELECT f_int1, f_int1, '', '', 'was inserted' 10095 FROM t0_template source_tab 10096WHERE MOD(f_int1,3) = 0 10097AND f_int1 BETWEEN @max_row_div2 AND @max_row 10098ON DUPLICATE KEY 10099UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10100f_int2 = 2 * @max_row + source_tab.f_int1, 10101f_charbig = 'was updated'; 10102 10103# check unique-1-a success: 1 10104 10105# check unique-1-b success: 1 10106DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10107UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10108f_int2 = CAST(f_char1 AS SIGNED INT), 10109f_charbig = CONCAT('===',f_char1,'===') 10110WHERE f_charbig = 'was updated'; 10111REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10112SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10113 FROM t0_template source_tab 10114WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10115 10116# check replace success: 1 10117DELETE FROM t1 10118WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10119DELETE FROM t1 10120WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10121f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10122UPDATE t1 SET f_int2 = f_int1, 10123f_char1 = CAST(f_int1 AS CHAR), 10124f_char2 = CAST(f_int1 AS CHAR), 10125f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10126WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10127SET AUTOCOMMIT= 0; 10128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10129SELECT f_int1, f_int1, '', '', 'was inserted' 10130FROM t0_template source_tab 10131WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10132 10133# check transactions-1 success: 1 10134COMMIT WORK; 10135 10136# check transactions-2 success: 1 10137ROLLBACK WORK; 10138 10139# check transactions-3 success: 1 10140DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10141COMMIT WORK; 10142ROLLBACK WORK; 10143 10144# check transactions-4 success: 1 10145INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10146SELECT f_int1, f_int1, '', '', 'was inserted' 10147FROM t0_template source_tab 10148WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10149 10150# check transactions-5 success: 1 10151ROLLBACK WORK; 10152Warnings: 10153Warning 1196 Some non-transactional changed tables couldn't be rolled back 10154 10155# check transactions-6 success: 1 10156# INFO: Storage engine used for t1 seems to be not transactional. 10157COMMIT; 10158 10159# check transactions-7 success: 1 10160DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10161COMMIT WORK; 10162SET @@session.sql_mode = 'traditional'; 10163Warnings: 10164Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10165SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10166INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10167SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10168'', '', 'was inserted' FROM t0_template 10169WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10170ERROR 22012: Division by 0 10171COMMIT; 10172 10173# check transactions-8 success: 1 10174# INFO: Storage engine used for t1 seems to be unable to revert 10175# changes made by the failing statement. 10176SET @@session.sql_mode = ''; 10177Warnings: 10178Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10179SET AUTOCOMMIT= 1; 10180DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10181COMMIT WORK; 10182UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10183 10184# check special-1 success: 1 10185UPDATE t1 SET f_charbig = ''; 10186 10187# check special-2 success: 1 10188UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10189INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10190SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10191WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10192INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10193SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10194'just inserted' FROM t0_template 10195WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10196CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10197BEGIN 10198UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10199f_charbig = 'updated by trigger' 10200 WHERE f_int1 = new.f_int1; 10201END| 10202INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10203SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10205 10206# check trigger-1 success: 1 10207DROP TRIGGER trg_1; 10208UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10209f_int2 = CAST(f_char1 AS SIGNED INT), 10210f_charbig = 'just inserted' 10211 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10212DELETE FROM t0_aux 10213WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10214INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10215SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10216'just inserted' FROM t0_template 10217WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10218CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10219BEGIN 10220UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10221f_charbig = 'updated by trigger' 10222 WHERE f_int1 = new.f_int1; 10223END| 10224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10225SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10226WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10227 10228# check trigger-2 success: 1 10229DROP TRIGGER trg_1; 10230UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10231f_int2 = CAST(f_char1 AS SIGNED INT), 10232f_charbig = 'just inserted' 10233 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10234DELETE FROM t0_aux 10235WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10236INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10237SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10238'just inserted' FROM t0_template 10239WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10240CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10241BEGIN 10242UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10243f_charbig = 'updated by trigger' 10244 WHERE f_int1 = new.f_int1; 10245END| 10246UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10247WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10248 10249# check trigger-3 success: 1 10250DROP TRIGGER trg_1; 10251UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10252f_int2 = CAST(f_char1 AS SIGNED INT), 10253f_charbig = 'just inserted' 10254 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10255DELETE FROM t0_aux 10256WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10257INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10258SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10259'just inserted' FROM t0_template 10260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10261CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10262BEGIN 10263UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10264f_charbig = 'updated by trigger' 10265 WHERE f_int1 = - old.f_int1; 10266END| 10267UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10268WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10269 10270# check trigger-4 success: 1 10271DROP TRIGGER trg_1; 10272UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10273f_int2 = CAST(f_char1 AS SIGNED INT), 10274f_charbig = 'just inserted' 10275 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10276DELETE FROM t0_aux 10277WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10278INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10279SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10280'just inserted' FROM t0_template 10281WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10282CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10283BEGIN 10284UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10285f_charbig = 'updated by trigger' 10286 WHERE f_int1 = new.f_int1; 10287END| 10288UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10289WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10290 10291# check trigger-5 success: 1 10292DROP TRIGGER trg_1; 10293UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10294f_int2 = CAST(f_char1 AS SIGNED INT), 10295f_charbig = 'just inserted' 10296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10297DELETE FROM t0_aux 10298WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10301'just inserted' FROM t0_template 10302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10303CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10304BEGIN 10305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10306f_charbig = 'updated by trigger' 10307 WHERE f_int1 = - old.f_int1; 10308END| 10309UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10310WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10311 10312# check trigger-6 success: 1 10313DROP TRIGGER trg_1; 10314UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10315f_int2 = CAST(f_char1 AS SIGNED INT), 10316f_charbig = 'just inserted' 10317 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10318DELETE FROM t0_aux 10319WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10320INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10321SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10322'just inserted' FROM t0_template 10323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10324CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10325BEGIN 10326UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10327f_charbig = 'updated by trigger' 10328 WHERE f_int1 = - old.f_int1; 10329END| 10330DELETE FROM t0_aux 10331WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10332 10333# check trigger-7 success: 1 10334DROP TRIGGER trg_1; 10335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10336f_int2 = CAST(f_char1 AS SIGNED INT), 10337f_charbig = 'just inserted' 10338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10339DELETE FROM t0_aux 10340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10343'just inserted' FROM t0_template 10344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10345CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10346BEGIN 10347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10348f_charbig = 'updated by trigger' 10349 WHERE f_int1 = - old.f_int1; 10350END| 10351DELETE FROM t0_aux 10352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10353 10354# check trigger-8 success: 1 10355DROP TRIGGER trg_1; 10356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10357f_int2 = CAST(f_char1 AS SIGNED INT), 10358f_charbig = 'just inserted' 10359 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10360DELETE FROM t0_aux 10361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10362DELETE FROM t1 10363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10364CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10365BEGIN 10366SET new.f_int1 = old.f_int1 + @max_row, 10367new.f_int2 = old.f_int2 - @max_row, 10368new.f_charbig = '####updated per update trigger####'; 10369END| 10370UPDATE t1 10371SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10372f_charbig = '####updated per update statement itself####'; 10373Warnings: 10374Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10375 10376# check trigger-9 success: 1 10377DROP TRIGGER trg_2; 10378UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10379f_int2 = CAST(f_char1 AS SIGNED INT), 10380f_charbig = CONCAT('===',f_char1,'==='); 10381Warnings: 10382Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10383CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10384BEGIN 10385SET new.f_int1 = new.f_int1 + @max_row, 10386new.f_int2 = new.f_int2 - @max_row, 10387new.f_charbig = '####updated per update trigger####'; 10388END| 10389UPDATE t1 10390SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10391f_charbig = '####updated per update statement itself####'; 10392Warnings: 10393Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10394 10395# check trigger-10 success: 1 10396DROP TRIGGER trg_2; 10397UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10398f_int2 = CAST(f_char1 AS SIGNED INT), 10399f_charbig = CONCAT('===',f_char1,'==='); 10400Warnings: 10401Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10402CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10403BEGIN 10404SET new.f_int1 = @my_max1 + @counter, 10405new.f_int2 = @my_min2 - @counter, 10406new.f_charbig = '####updated per insert trigger####'; 10407SET @counter = @counter + 1; 10408END| 10409SET @counter = 1; 10410SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10411Warnings: 10412Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10413INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10414SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10415CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10417ORDER BY f_int1; 10418DROP TRIGGER trg_3; 10419 10420# check trigger-11 success: 1 10421Warnings: 10422Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10423DELETE FROM t1 10424WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10425AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10426AND f_charbig = '####updated per insert trigger####'; 10427CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10428BEGIN 10429SET new.f_int1 = @my_max1 + @counter, 10430new.f_int2 = @my_min2 - @counter, 10431new.f_charbig = '####updated per insert trigger####'; 10432SET @counter = @counter + 1; 10433END| 10434SET @counter = 1; 10435SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10436Warnings: 10437Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10438INSERT INTO t1 (f_char1, f_char2, f_charbig) 10439SELECT CAST(f_int1 AS CHAR), 10440CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10441WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10442ORDER BY f_int1; 10443DROP TRIGGER trg_3; 10444 10445# check trigger-12 success: 1 10446Warnings: 10447Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10448DELETE FROM t1 10449WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10450AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10451AND f_charbig = '####updated per insert trigger####'; 10452ANALYZE TABLE t1; 10453Table Op Msg_type Msg_text 10454test.t1 analyze status OK 10455test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10456CHECK TABLE t1 EXTENDED; 10457Table Op Msg_type Msg_text 10458test.t1 check status OK 10459test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10460CHECKSUM TABLE t1 EXTENDED; 10461Table Checksum 10462test.t1 <some_value> 10463OPTIMIZE TABLE t1; 10464Table Op Msg_type Msg_text 10465test.t1 optimize status OK 10466test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10467# check layout success: 1 10468REPAIR TABLE t1 EXTENDED; 10469Table Op Msg_type Msg_text 10470test.t1 repair status OK 10471test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10472# check layout success: 1 10473TRUNCATE t1; 10474Warnings: 10475Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10476 10477# check TRUNCATE success: 1 10478# check layout success: 1 10479# End usability test (inc/partition_check.inc) 10480DROP TABLE t1; 10481CREATE TABLE t1 ( 10482f_int1 INTEGER, 10483f_int2 INTEGER, 10484f_char1 CHAR(20), 10485f_char2 CHAR(20), 10486f_charbig VARCHAR(1000) 10487, UNIQUE INDEX uidx1 (f_int2,f_int1) 10488) 10489PARTITION BY RANGE(f_int1) 10490(PARTITION parta VALUES LESS THAN (0), 10491PARTITION partb VALUES LESS THAN (5), 10492PARTITION partc VALUES LESS THAN (10), 10493PARTITION partd VALUES LESS THAN (10 + 5), 10494PARTITION parte VALUES LESS THAN (20), 10495PARTITION partf VALUES LESS THAN (2147483646)); 10496Warnings: 10497Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10498INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10499SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10500WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 10501Warnings: 10502Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10503ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 10504Warnings: 10505Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10506INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10507SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10508WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 10509Warnings: 10510Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10511# Start usability test (inc/partition_check.inc) 10512create_command 10513SHOW CREATE TABLE t1; 10514Table Create Table 10515t1 CREATE TABLE `t1` ( 10516 `f_int1` int(11) DEFAULT NULL, 10517 `f_int2` mediumint(9) DEFAULT NULL, 10518 `f_char1` char(20) DEFAULT NULL, 10519 `f_char2` char(20) DEFAULT NULL, 10520 `f_charbig` varchar(1000) DEFAULT NULL, 10521 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 10522) ENGINE=MyISAM DEFAULT CHARSET=latin1 10523/*!50100 PARTITION BY RANGE (f_int1) 10524(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 10525 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 10526 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 10527 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 10528 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 10529 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 10530 10531unified filelist 10532t1#P#parta.MYD 10533t1#P#parta.MYI 10534t1#P#partb.MYD 10535t1#P#partb.MYI 10536t1#P#partc.MYD 10537t1#P#partc.MYI 10538t1#P#partd.MYD 10539t1#P#partd.MYI 10540t1#P#parte.MYD 10541t1#P#parte.MYI 10542t1#P#partf.MYD 10543t1#P#partf.MYI 10544t1.frm 10545t1.par 10546 10547# check prerequisites-1 success: 1 10548# check COUNT(*) success: 1 10549# check MIN/MAX(f_int1) success: 1 10550# check MIN/MAX(f_int2) success: 1 10551INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10552SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10553CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10554WHERE f_int1 IN (2,3); 10555ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 10556# check prerequisites-3 success: 1 10557# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10559SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10560CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10561WHERE f_int1 IN (2,3); 10562DELETE FROM t1 WHERE f_charbig = 'delete me'; 10563INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10564SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10565CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10566WHERE f_int1 IN (2,3); 10567DELETE FROM t1 WHERE f_charbig = 'delete me'; 10568# check read via f_int1 success: 1 10569# check read via f_int2 success: 1 10570 10571# check multiple-1 success: 1 10572DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10573 10574# check multiple-2 success: 1 10575INSERT INTO t1 SELECT * FROM t0_template 10576WHERE MOD(f_int1,3) = 0; 10577 10578# check multiple-3 success: 1 10579UPDATE t1 SET f_int1 = f_int1 + @max_row 10580WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10581AND @max_row_div2 + @max_row_div4; 10582 10583# check multiple-4 success: 1 10584DELETE FROM t1 10585WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10586AND @max_row_div2 + @max_row_div4 + @max_row; 10587 10588# check multiple-5 success: 1 10589SELECT COUNT(*) INTO @try_count FROM t0_template 10590WHERE MOD(f_int1,3) = 0 10591AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10592SELECT COUNT(*) INTO @clash_count 10593FROM t1 INNER JOIN t0_template USING(f_int1) 10594WHERE MOD(f_int1,3) = 0 10595AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10596SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10597INSERT INTO t1 10598SET f_int1 = @cur_value , f_int2 = @cur_value, 10599f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10600f_charbig = '#SINGLE#'; 10601 10602# check single-1 success: 1 10603SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10604INSERT INTO t1 10605SET f_int1 = @cur_value , f_int2 = @cur_value, 10606f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10607f_charbig = '#SINGLE#'; 10608 10609# check single-2 success: 1 10610SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10611SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10612UPDATE t1 SET f_int1 = @cur_value2 10613WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10614 10615# check single-3 success: 1 10616SET @cur_value1= -1; 10617SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10618UPDATE t1 SET f_int1 = @cur_value1 10619WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10620 10621# check single-4 success: 1 10622SELECT MAX(f_int1) INTO @cur_value FROM t1; 10623DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10624 10625# check single-5 success: 1 10626DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10627 10628# check single-6 success: 1 10629INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10630ERROR HY000: Table has no partition for value 2147483647 10631DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10632INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10633f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10634f_charbig = '#NULL#'; 10635INSERT INTO t1 10636SET f_int1 = NULL , f_int2 = -@max_row, 10637f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10638f_charbig = '#NULL#'; 10639# check null success: 1 10640 10641# check null-1 success: 1 10642UPDATE t1 SET f_int1 = -@max_row 10643WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10644AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10645 10646# check null-2 success: 1 10647UPDATE t1 SET f_int1 = NULL 10648WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10649AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10650 10651# check null-3 success: 1 10652DELETE FROM t1 10653WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10654AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10655 10656# check null-4 success: 1 10657DELETE FROM t1 10658WHERE f_int1 = 0 AND f_int2 = 0 10659AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10660AND f_charbig = '#NULL#'; 10661INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10662SELECT f_int1, f_int1, '', '', 'was inserted' 10663 FROM t0_template source_tab 10664WHERE MOD(f_int1,3) = 0 10665AND f_int1 BETWEEN @max_row_div2 AND @max_row 10666ON DUPLICATE KEY 10667UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10668f_int2 = 2 * @max_row + source_tab.f_int1, 10669f_charbig = 'was updated'; 10670 10671# check unique-1-a success: 1 10672 10673# check unique-1-b success: 1 10674DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10676f_int2 = CAST(f_char1 AS SIGNED INT), 10677f_charbig = CONCAT('===',f_char1,'===') 10678WHERE f_charbig = 'was updated'; 10679REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10680SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10681 FROM t0_template source_tab 10682WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10683 10684# check replace success: 1 10685DELETE FROM t1 10686WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10687DELETE FROM t1 10688WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10689f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10690UPDATE t1 SET f_int2 = f_int1, 10691f_char1 = CAST(f_int1 AS CHAR), 10692f_char2 = CAST(f_int1 AS CHAR), 10693f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10694WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10695SET AUTOCOMMIT= 0; 10696INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10697SELECT f_int1, f_int1, '', '', 'was inserted' 10698FROM t0_template source_tab 10699WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10700 10701# check transactions-1 success: 1 10702COMMIT WORK; 10703 10704# check transactions-2 success: 1 10705ROLLBACK WORK; 10706 10707# check transactions-3 success: 1 10708DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10709COMMIT WORK; 10710ROLLBACK WORK; 10711 10712# check transactions-4 success: 1 10713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10714SELECT f_int1, f_int1, '', '', 'was inserted' 10715FROM t0_template source_tab 10716WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10717 10718# check transactions-5 success: 1 10719ROLLBACK WORK; 10720Warnings: 10721Warning 1196 Some non-transactional changed tables couldn't be rolled back 10722 10723# check transactions-6 success: 1 10724# INFO: Storage engine used for t1 seems to be not transactional. 10725COMMIT; 10726 10727# check transactions-7 success: 1 10728DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10729COMMIT WORK; 10730SET @@session.sql_mode = 'traditional'; 10731Warnings: 10732Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10733SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10734INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10735SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10736'', '', 'was inserted' FROM t0_template 10737WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10738ERROR 22012: Division by 0 10739COMMIT; 10740 10741# check transactions-8 success: 1 10742# INFO: Storage engine used for t1 seems to be unable to revert 10743# changes made by the failing statement. 10744SET @@session.sql_mode = ''; 10745Warnings: 10746Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10747SET AUTOCOMMIT= 1; 10748DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10749COMMIT WORK; 10750UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10751 10752# check special-1 success: 1 10753UPDATE t1 SET f_charbig = ''; 10754 10755# check special-2 success: 1 10756UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10757INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10758SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10759WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10760INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10761SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10762'just inserted' FROM t0_template 10763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10764CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10765BEGIN 10766UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10767f_charbig = 'updated by trigger' 10768 WHERE f_int1 = new.f_int1; 10769END| 10770INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10771SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10773 10774# check trigger-1 success: 1 10775DROP TRIGGER trg_1; 10776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10777f_int2 = CAST(f_char1 AS SIGNED INT), 10778f_charbig = 'just inserted' 10779 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10780DELETE FROM t0_aux 10781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10782INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10783SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10784'just inserted' FROM t0_template 10785WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10786CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10787BEGIN 10788UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10789f_charbig = 'updated by trigger' 10790 WHERE f_int1 = new.f_int1; 10791END| 10792INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10793SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10795 10796# check trigger-2 success: 1 10797DROP TRIGGER trg_1; 10798UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10799f_int2 = CAST(f_char1 AS SIGNED INT), 10800f_charbig = 'just inserted' 10801 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10802DELETE FROM t0_aux 10803WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10804INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10805SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10806'just inserted' FROM t0_template 10807WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10808CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10809BEGIN 10810UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10811f_charbig = 'updated by trigger' 10812 WHERE f_int1 = new.f_int1; 10813END| 10814UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10815WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10816 10817# check trigger-3 success: 1 10818DROP TRIGGER trg_1; 10819UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10820f_int2 = CAST(f_char1 AS SIGNED INT), 10821f_charbig = 'just inserted' 10822 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10823DELETE FROM t0_aux 10824WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10825INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10826SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10827'just inserted' FROM t0_template 10828WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10829CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10830BEGIN 10831UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10832f_charbig = 'updated by trigger' 10833 WHERE f_int1 = - old.f_int1; 10834END| 10835UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10836WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10837 10838# check trigger-4 success: 1 10839DROP TRIGGER trg_1; 10840UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10841f_int2 = CAST(f_char1 AS SIGNED INT), 10842f_charbig = 'just inserted' 10843 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10844DELETE FROM t0_aux 10845WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10846INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10847SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10848'just inserted' FROM t0_template 10849WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10850CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10851BEGIN 10852UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10853f_charbig = 'updated by trigger' 10854 WHERE f_int1 = new.f_int1; 10855END| 10856UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10857WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10858 10859# check trigger-5 success: 1 10860DROP TRIGGER trg_1; 10861UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10862f_int2 = CAST(f_char1 AS SIGNED INT), 10863f_charbig = 'just inserted' 10864 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10865DELETE FROM t0_aux 10866WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10867INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10868SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10869'just inserted' FROM t0_template 10870WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10871CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10872BEGIN 10873UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10874f_charbig = 'updated by trigger' 10875 WHERE f_int1 = - old.f_int1; 10876END| 10877UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10878WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10879 10880# check trigger-6 success: 1 10881DROP TRIGGER trg_1; 10882UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10883f_int2 = CAST(f_char1 AS SIGNED INT), 10884f_charbig = 'just inserted' 10885 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10886DELETE FROM t0_aux 10887WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10888INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10889SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10890'just inserted' FROM t0_template 10891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10892CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10893BEGIN 10894UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10895f_charbig = 'updated by trigger' 10896 WHERE f_int1 = - old.f_int1; 10897END| 10898DELETE FROM t0_aux 10899WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10900 10901# check trigger-7 success: 1 10902DROP TRIGGER trg_1; 10903UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10904f_int2 = CAST(f_char1 AS SIGNED INT), 10905f_charbig = 'just inserted' 10906 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10907DELETE FROM t0_aux 10908WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10909INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10910SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10911'just inserted' FROM t0_template 10912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10913CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10914BEGIN 10915UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10916f_charbig = 'updated by trigger' 10917 WHERE f_int1 = - old.f_int1; 10918END| 10919DELETE FROM t0_aux 10920WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10921 10922# check trigger-8 success: 1 10923DROP TRIGGER trg_1; 10924UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10925f_int2 = CAST(f_char1 AS SIGNED INT), 10926f_charbig = 'just inserted' 10927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10928DELETE FROM t0_aux 10929WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10930DELETE FROM t1 10931WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10932CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10933BEGIN 10934SET new.f_int1 = old.f_int1 + @max_row, 10935new.f_int2 = old.f_int2 - @max_row, 10936new.f_charbig = '####updated per update trigger####'; 10937END| 10938UPDATE t1 10939SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10940f_charbig = '####updated per update statement itself####'; 10941Warnings: 10942Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10943 10944# check trigger-9 success: 1 10945DROP TRIGGER trg_2; 10946UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10947f_int2 = CAST(f_char1 AS SIGNED INT), 10948f_charbig = CONCAT('===',f_char1,'==='); 10949Warnings: 10950Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10951CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10952BEGIN 10953SET new.f_int1 = new.f_int1 + @max_row, 10954new.f_int2 = new.f_int2 - @max_row, 10955new.f_charbig = '####updated per update trigger####'; 10956END| 10957UPDATE t1 10958SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10959f_charbig = '####updated per update statement itself####'; 10960Warnings: 10961Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10962 10963# check trigger-10 success: 1 10964DROP TRIGGER trg_2; 10965UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10966f_int2 = CAST(f_char1 AS SIGNED INT), 10967f_charbig = CONCAT('===',f_char1,'==='); 10968Warnings: 10969Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10970CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10971BEGIN 10972SET new.f_int1 = @my_max1 + @counter, 10973new.f_int2 = @my_min2 - @counter, 10974new.f_charbig = '####updated per insert trigger####'; 10975SET @counter = @counter + 1; 10976END| 10977SET @counter = 1; 10978SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10979Warnings: 10980Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10981INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10982SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10983CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10984WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10985ORDER BY f_int1; 10986DROP TRIGGER trg_3; 10987 10988# check trigger-11 success: 1 10989Warnings: 10990Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10991DELETE FROM t1 10992WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10993AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10994AND f_charbig = '####updated per insert trigger####'; 10995CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10996BEGIN 10997SET new.f_int1 = @my_max1 + @counter, 10998new.f_int2 = @my_min2 - @counter, 10999new.f_charbig = '####updated per insert trigger####'; 11000SET @counter = @counter + 1; 11001END| 11002SET @counter = 1; 11003SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11004Warnings: 11005Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11006INSERT INTO t1 (f_char1, f_char2, f_charbig) 11007SELECT CAST(f_int1 AS CHAR), 11008CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11009WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11010ORDER BY f_int1; 11011DROP TRIGGER trg_3; 11012 11013# check trigger-12 success: 1 11014Warnings: 11015Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11016DELETE FROM t1 11017WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11018AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11019AND f_charbig = '####updated per insert trigger####'; 11020ANALYZE TABLE t1; 11021Table Op Msg_type Msg_text 11022test.t1 analyze status OK 11023test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11024CHECK TABLE t1 EXTENDED; 11025Table Op Msg_type Msg_text 11026test.t1 check status OK 11027test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11028CHECKSUM TABLE t1 EXTENDED; 11029Table Checksum 11030test.t1 <some_value> 11031OPTIMIZE TABLE t1; 11032Table Op Msg_type Msg_text 11033test.t1 optimize status OK 11034test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11035# check layout success: 1 11036REPAIR TABLE t1 EXTENDED; 11037Table Op Msg_type Msg_text 11038test.t1 repair status OK 11039test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11040# check layout success: 1 11041TRUNCATE t1; 11042Warnings: 11043Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11044 11045# check TRUNCATE success: 1 11046# check layout success: 1 11047# End usability test (inc/partition_check.inc) 11048DROP TABLE t1; 11049CREATE TABLE t1 ( 11050f_int1 INTEGER, 11051f_int2 INTEGER, 11052f_char1 CHAR(20), 11053f_char2 CHAR(20), 11054f_charbig VARCHAR(1000) 11055, UNIQUE INDEX uidx1 (f_int2,f_int1) 11056) 11057PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 11058(PARTITION parta VALUES LESS THAN (0), 11059PARTITION partb VALUES LESS THAN (5), 11060PARTITION partc VALUES LESS THAN (10), 11061PARTITION partd VALUES LESS THAN (2147483646)); 11062Warnings: 11063Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11064INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11065SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11066WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 11067Warnings: 11068Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11069ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 11070Warnings: 11071Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11073SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11074WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 11075Warnings: 11076Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11077# Start usability test (inc/partition_check.inc) 11078create_command 11079SHOW CREATE TABLE t1; 11080Table Create Table 11081t1 CREATE TABLE `t1` ( 11082 `f_int1` int(11) DEFAULT NULL, 11083 `f_int2` mediumint(9) DEFAULT NULL, 11084 `f_char1` char(20) DEFAULT NULL, 11085 `f_char2` char(20) DEFAULT NULL, 11086 `f_charbig` varchar(1000) DEFAULT NULL, 11087 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 11088) ENGINE=MyISAM DEFAULT CHARSET=latin1 11089/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 11090SUBPARTITION BY HASH (f_int1) 11091SUBPARTITIONS 2 11092(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 11093 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 11094 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 11095 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 11096 11097unified filelist 11098t1#P#parta#SP#partasp0.MYD 11099t1#P#parta#SP#partasp0.MYI 11100t1#P#parta#SP#partasp1.MYD 11101t1#P#parta#SP#partasp1.MYI 11102t1#P#partb#SP#partbsp0.MYD 11103t1#P#partb#SP#partbsp0.MYI 11104t1#P#partb#SP#partbsp1.MYD 11105t1#P#partb#SP#partbsp1.MYI 11106t1#P#partc#SP#partcsp0.MYD 11107t1#P#partc#SP#partcsp0.MYI 11108t1#P#partc#SP#partcsp1.MYD 11109t1#P#partc#SP#partcsp1.MYI 11110t1#P#partd#SP#partdsp0.MYD 11111t1#P#partd#SP#partdsp0.MYI 11112t1#P#partd#SP#partdsp1.MYD 11113t1#P#partd#SP#partdsp1.MYI 11114t1.frm 11115t1.par 11116 11117# check prerequisites-1 success: 1 11118# check COUNT(*) success: 1 11119# check MIN/MAX(f_int1) success: 1 11120# check MIN/MAX(f_int2) success: 1 11121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11123CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11124WHERE f_int1 IN (2,3); 11125ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 11126# check prerequisites-3 success: 1 11127# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11129SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11130CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11131WHERE f_int1 IN (2,3); 11132DELETE FROM t1 WHERE f_charbig = 'delete me'; 11133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11134SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11135CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11136WHERE f_int1 IN (2,3); 11137DELETE FROM t1 WHERE f_charbig = 'delete me'; 11138# check read via f_int1 success: 1 11139# check read via f_int2 success: 1 11140 11141# check multiple-1 success: 1 11142DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11143 11144# check multiple-2 success: 1 11145INSERT INTO t1 SELECT * FROM t0_template 11146WHERE MOD(f_int1,3) = 0; 11147 11148# check multiple-3 success: 1 11149UPDATE t1 SET f_int1 = f_int1 + @max_row 11150WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11151AND @max_row_div2 + @max_row_div4; 11152 11153# check multiple-4 success: 1 11154DELETE FROM t1 11155WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11156AND @max_row_div2 + @max_row_div4 + @max_row; 11157 11158# check multiple-5 success: 1 11159SELECT COUNT(*) INTO @try_count FROM t0_template 11160WHERE MOD(f_int1,3) = 0 11161AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11162SELECT COUNT(*) INTO @clash_count 11163FROM t1 INNER JOIN t0_template USING(f_int1) 11164WHERE MOD(f_int1,3) = 0 11165AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11166SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11167INSERT INTO t1 11168SET f_int1 = @cur_value , f_int2 = @cur_value, 11169f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11170f_charbig = '#SINGLE#'; 11171 11172# check single-1 success: 1 11173SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11174INSERT INTO t1 11175SET f_int1 = @cur_value , f_int2 = @cur_value, 11176f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11177f_charbig = '#SINGLE#'; 11178 11179# check single-2 success: 1 11180SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11181SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11182UPDATE t1 SET f_int1 = @cur_value2 11183WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11184 11185# check single-3 success: 1 11186SET @cur_value1= -1; 11187SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11188UPDATE t1 SET f_int1 = @cur_value1 11189WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11190 11191# check single-4 success: 1 11192SELECT MAX(f_int1) INTO @cur_value FROM t1; 11193DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11194 11195# check single-5 success: 1 11196DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11197 11198# check single-6 success: 1 11199INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11200Warnings: 11201Warning 1264 Out of range value for column 'f_int2' at row 1 11202 11203# check single-7 success: 1 11204DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11205DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11206INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11207f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11208f_charbig = '#NULL#'; 11209INSERT INTO t1 11210SET f_int1 = NULL , f_int2 = -@max_row, 11211f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11212f_charbig = '#NULL#'; 11213# check null success: 1 11214 11215# check null-1 success: 1 11216UPDATE t1 SET f_int1 = -@max_row 11217WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11218AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11219 11220# check null-2 success: 1 11221UPDATE t1 SET f_int1 = NULL 11222WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11223AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11224 11225# check null-3 success: 1 11226DELETE FROM t1 11227WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11228AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11229 11230# check null-4 success: 1 11231DELETE FROM t1 11232WHERE f_int1 = 0 AND f_int2 = 0 11233AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11234AND f_charbig = '#NULL#'; 11235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11236SELECT f_int1, f_int1, '', '', 'was inserted' 11237 FROM t0_template source_tab 11238WHERE MOD(f_int1,3) = 0 11239AND f_int1 BETWEEN @max_row_div2 AND @max_row 11240ON DUPLICATE KEY 11241UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11242f_int2 = 2 * @max_row + source_tab.f_int1, 11243f_charbig = 'was updated'; 11244 11245# check unique-1-a success: 1 11246 11247# check unique-1-b success: 1 11248DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11249UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11250f_int2 = CAST(f_char1 AS SIGNED INT), 11251f_charbig = CONCAT('===',f_char1,'===') 11252WHERE f_charbig = 'was updated'; 11253REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11254SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11255 FROM t0_template source_tab 11256WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11257 11258# check replace success: 1 11259DELETE FROM t1 11260WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11261DELETE FROM t1 11262WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11263f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11264UPDATE t1 SET f_int2 = f_int1, 11265f_char1 = CAST(f_int1 AS CHAR), 11266f_char2 = CAST(f_int1 AS CHAR), 11267f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11268WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11269SET AUTOCOMMIT= 0; 11270INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11271SELECT f_int1, f_int1, '', '', 'was inserted' 11272FROM t0_template source_tab 11273WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11274 11275# check transactions-1 success: 1 11276COMMIT WORK; 11277 11278# check transactions-2 success: 1 11279ROLLBACK WORK; 11280 11281# check transactions-3 success: 1 11282DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11283COMMIT WORK; 11284ROLLBACK WORK; 11285 11286# check transactions-4 success: 1 11287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11288SELECT f_int1, f_int1, '', '', 'was inserted' 11289FROM t0_template source_tab 11290WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11291 11292# check transactions-5 success: 1 11293ROLLBACK WORK; 11294Warnings: 11295Warning 1196 Some non-transactional changed tables couldn't be rolled back 11296 11297# check transactions-6 success: 1 11298# INFO: Storage engine used for t1 seems to be not transactional. 11299COMMIT; 11300 11301# check transactions-7 success: 1 11302DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11303COMMIT WORK; 11304SET @@session.sql_mode = 'traditional'; 11305Warnings: 11306Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11307SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11308INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11309SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11310'', '', 'was inserted' FROM t0_template 11311WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11312ERROR 22012: Division by 0 11313COMMIT; 11314 11315# check transactions-8 success: 1 11316# INFO: Storage engine used for t1 seems to be unable to revert 11317# changes made by the failing statement. 11318SET @@session.sql_mode = ''; 11319Warnings: 11320Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11321SET AUTOCOMMIT= 1; 11322DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11323COMMIT WORK; 11324UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11325 11326# check special-1 success: 1 11327UPDATE t1 SET f_charbig = ''; 11328 11329# check special-2 success: 1 11330UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11331INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11332SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11334INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11335SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11336'just inserted' FROM t0_template 11337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11338CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11339BEGIN 11340UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11341f_charbig = 'updated by trigger' 11342 WHERE f_int1 = new.f_int1; 11343END| 11344INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11345SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11347 11348# check trigger-1 success: 1 11349DROP TRIGGER trg_1; 11350UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11351f_int2 = CAST(f_char1 AS SIGNED INT), 11352f_charbig = 'just inserted' 11353 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11354DELETE FROM t0_aux 11355WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11356INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11357SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11358'just inserted' FROM t0_template 11359WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11360CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11361BEGIN 11362UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11363f_charbig = 'updated by trigger' 11364 WHERE f_int1 = new.f_int1; 11365END| 11366INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11367SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11369 11370# check trigger-2 success: 1 11371DROP TRIGGER trg_1; 11372UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11373f_int2 = CAST(f_char1 AS SIGNED INT), 11374f_charbig = 'just inserted' 11375 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11376DELETE FROM t0_aux 11377WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11378INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11379SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11380'just inserted' FROM t0_template 11381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11382CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11383BEGIN 11384UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11385f_charbig = 'updated by trigger' 11386 WHERE f_int1 = new.f_int1; 11387END| 11388UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11389WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11390 11391# check trigger-3 success: 1 11392DROP TRIGGER trg_1; 11393UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11394f_int2 = CAST(f_char1 AS SIGNED INT), 11395f_charbig = 'just inserted' 11396 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11397DELETE FROM t0_aux 11398WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11401'just inserted' FROM t0_template 11402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11403CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11404BEGIN 11405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11406f_charbig = 'updated by trigger' 11407 WHERE f_int1 = - old.f_int1; 11408END| 11409UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11410WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11411 11412# check trigger-4 success: 1 11413DROP TRIGGER trg_1; 11414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11415f_int2 = CAST(f_char1 AS SIGNED INT), 11416f_charbig = 'just inserted' 11417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11418DELETE FROM t0_aux 11419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11422'just inserted' FROM t0_template 11423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11424CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11425BEGIN 11426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11427f_charbig = 'updated by trigger' 11428 WHERE f_int1 = new.f_int1; 11429END| 11430UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11431WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11432 11433# check trigger-5 success: 1 11434DROP TRIGGER trg_1; 11435UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11436f_int2 = CAST(f_char1 AS SIGNED INT), 11437f_charbig = 'just inserted' 11438 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11439DELETE FROM t0_aux 11440WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11441INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11442SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11443'just inserted' FROM t0_template 11444WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11445CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11446BEGIN 11447UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11448f_charbig = 'updated by trigger' 11449 WHERE f_int1 = - old.f_int1; 11450END| 11451UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11452WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11453 11454# check trigger-6 success: 1 11455DROP TRIGGER trg_1; 11456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11457f_int2 = CAST(f_char1 AS SIGNED INT), 11458f_charbig = 'just inserted' 11459 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11460DELETE FROM t0_aux 11461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11464'just inserted' FROM t0_template 11465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11466CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11467BEGIN 11468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11469f_charbig = 'updated by trigger' 11470 WHERE f_int1 = - old.f_int1; 11471END| 11472DELETE FROM t0_aux 11473WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11474 11475# check trigger-7 success: 1 11476DROP TRIGGER trg_1; 11477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11478f_int2 = CAST(f_char1 AS SIGNED INT), 11479f_charbig = 'just inserted' 11480 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11481DELETE FROM t0_aux 11482WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11484SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11485'just inserted' FROM t0_template 11486WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11487CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11488BEGIN 11489UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11490f_charbig = 'updated by trigger' 11491 WHERE f_int1 = - old.f_int1; 11492END| 11493DELETE FROM t0_aux 11494WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11495 11496# check trigger-8 success: 1 11497DROP TRIGGER trg_1; 11498UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11499f_int2 = CAST(f_char1 AS SIGNED INT), 11500f_charbig = 'just inserted' 11501 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11502DELETE FROM t0_aux 11503WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11504DELETE FROM t1 11505WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11506CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11507BEGIN 11508SET new.f_int1 = old.f_int1 + @max_row, 11509new.f_int2 = old.f_int2 - @max_row, 11510new.f_charbig = '####updated per update trigger####'; 11511END| 11512UPDATE t1 11513SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11514f_charbig = '####updated per update statement itself####'; 11515Warnings: 11516Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11517 11518# check trigger-9 success: 1 11519DROP TRIGGER trg_2; 11520UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11521f_int2 = CAST(f_char1 AS SIGNED INT), 11522f_charbig = CONCAT('===',f_char1,'==='); 11523Warnings: 11524Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11525CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11526BEGIN 11527SET new.f_int1 = new.f_int1 + @max_row, 11528new.f_int2 = new.f_int2 - @max_row, 11529new.f_charbig = '####updated per update trigger####'; 11530END| 11531UPDATE t1 11532SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11533f_charbig = '####updated per update statement itself####'; 11534Warnings: 11535Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11536 11537# check trigger-10 success: 1 11538DROP TRIGGER trg_2; 11539UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11540f_int2 = CAST(f_char1 AS SIGNED INT), 11541f_charbig = CONCAT('===',f_char1,'==='); 11542Warnings: 11543Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11544CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11545BEGIN 11546SET new.f_int1 = @my_max1 + @counter, 11547new.f_int2 = @my_min2 - @counter, 11548new.f_charbig = '####updated per insert trigger####'; 11549SET @counter = @counter + 1; 11550END| 11551SET @counter = 1; 11552SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11553Warnings: 11554Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11555INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11556SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11557CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11558WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11559ORDER BY f_int1; 11560DROP TRIGGER trg_3; 11561 11562# check trigger-11 success: 1 11563Warnings: 11564Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11565DELETE FROM t1 11566WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11567AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11568AND f_charbig = '####updated per insert trigger####'; 11569CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11570BEGIN 11571SET new.f_int1 = @my_max1 + @counter, 11572new.f_int2 = @my_min2 - @counter, 11573new.f_charbig = '####updated per insert trigger####'; 11574SET @counter = @counter + 1; 11575END| 11576SET @counter = 1; 11577SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11578Warnings: 11579Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11580INSERT INTO t1 (f_char1, f_char2, f_charbig) 11581SELECT CAST(f_int1 AS CHAR), 11582CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11583WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11584ORDER BY f_int1; 11585DROP TRIGGER trg_3; 11586 11587# check trigger-12 success: 1 11588Warnings: 11589Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11590DELETE FROM t1 11591WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11592AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11593AND f_charbig = '####updated per insert trigger####'; 11594ANALYZE TABLE t1; 11595Table Op Msg_type Msg_text 11596test.t1 analyze status OK 11597test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11598CHECK TABLE t1 EXTENDED; 11599Table Op Msg_type Msg_text 11600test.t1 check status OK 11601test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11602CHECKSUM TABLE t1 EXTENDED; 11603Table Checksum 11604test.t1 <some_value> 11605OPTIMIZE TABLE t1; 11606Table Op Msg_type Msg_text 11607test.t1 optimize status OK 11608test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11609# check layout success: 1 11610REPAIR TABLE t1 EXTENDED; 11611Table Op Msg_type Msg_text 11612test.t1 repair status OK 11613test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11614# check layout success: 1 11615TRUNCATE t1; 11616Warnings: 11617Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11618 11619# check TRUNCATE success: 1 11620# check layout success: 1 11621# End usability test (inc/partition_check.inc) 11622DROP TABLE t1; 11623CREATE TABLE t1 ( 11624f_int1 INTEGER, 11625f_int2 INTEGER, 11626f_char1 CHAR(20), 11627f_char2 CHAR(20), 11628f_charbig VARCHAR(1000) 11629, UNIQUE INDEX uidx1 (f_int2,f_int1) 11630) 11631PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 11632(PARTITION part1 VALUES LESS THAN (0) 11633(SUBPARTITION subpart11, SUBPARTITION subpart12), 11634PARTITION part2 VALUES LESS THAN (5) 11635(SUBPARTITION subpart21, SUBPARTITION subpart22), 11636PARTITION part3 VALUES LESS THAN (10) 11637(SUBPARTITION subpart31, SUBPARTITION subpart32), 11638PARTITION part4 VALUES LESS THAN (2147483646) 11639(SUBPARTITION subpart41, SUBPARTITION subpart42)); 11640Warnings: 11641Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11642INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11643SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11644WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 11645Warnings: 11646Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11647ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 11648Warnings: 11649Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11650INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11651SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11652WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 11653Warnings: 11654Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11655# Start usability test (inc/partition_check.inc) 11656create_command 11657SHOW CREATE TABLE t1; 11658Table Create Table 11659t1 CREATE TABLE `t1` ( 11660 `f_int1` int(11) DEFAULT NULL, 11661 `f_int2` mediumint(9) DEFAULT NULL, 11662 `f_char1` char(20) DEFAULT NULL, 11663 `f_char2` char(20) DEFAULT NULL, 11664 `f_charbig` varchar(1000) DEFAULT NULL, 11665 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 11666) ENGINE=MyISAM DEFAULT CHARSET=latin1 11667/*!50100 PARTITION BY RANGE (f_int1) 11668SUBPARTITION BY KEY (f_int1) 11669(PARTITION part1 VALUES LESS THAN (0) 11670 (SUBPARTITION subpart11 ENGINE = MyISAM, 11671 SUBPARTITION subpart12 ENGINE = MyISAM), 11672 PARTITION part2 VALUES LESS THAN (5) 11673 (SUBPARTITION subpart21 ENGINE = MyISAM, 11674 SUBPARTITION subpart22 ENGINE = MyISAM), 11675 PARTITION part3 VALUES LESS THAN (10) 11676 (SUBPARTITION subpart31 ENGINE = MyISAM, 11677 SUBPARTITION subpart32 ENGINE = MyISAM), 11678 PARTITION part4 VALUES LESS THAN (2147483646) 11679 (SUBPARTITION subpart41 ENGINE = MyISAM, 11680 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 11681 11682unified filelist 11683t1#P#part1#SP#subpart11.MYD 11684t1#P#part1#SP#subpart11.MYI 11685t1#P#part1#SP#subpart12.MYD 11686t1#P#part1#SP#subpart12.MYI 11687t1#P#part2#SP#subpart21.MYD 11688t1#P#part2#SP#subpart21.MYI 11689t1#P#part2#SP#subpart22.MYD 11690t1#P#part2#SP#subpart22.MYI 11691t1#P#part3#SP#subpart31.MYD 11692t1#P#part3#SP#subpart31.MYI 11693t1#P#part3#SP#subpart32.MYD 11694t1#P#part3#SP#subpart32.MYI 11695t1#P#part4#SP#subpart41.MYD 11696t1#P#part4#SP#subpart41.MYI 11697t1#P#part4#SP#subpart42.MYD 11698t1#P#part4#SP#subpart42.MYI 11699t1.frm 11700t1.par 11701 11702# check prerequisites-1 success: 1 11703# check COUNT(*) success: 1 11704# check MIN/MAX(f_int1) success: 1 11705# check MIN/MAX(f_int2) success: 1 11706INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11707SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11708CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11709WHERE f_int1 IN (2,3); 11710ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 11711# check prerequisites-3 success: 1 11712# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11714SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11715CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11716WHERE f_int1 IN (2,3); 11717DELETE FROM t1 WHERE f_charbig = 'delete me'; 11718INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11719SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11720CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11721WHERE f_int1 IN (2,3); 11722DELETE FROM t1 WHERE f_charbig = 'delete me'; 11723# check read via f_int1 success: 1 11724# check read via f_int2 success: 1 11725 11726# check multiple-1 success: 1 11727DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11728 11729# check multiple-2 success: 1 11730INSERT INTO t1 SELECT * FROM t0_template 11731WHERE MOD(f_int1,3) = 0; 11732 11733# check multiple-3 success: 1 11734UPDATE t1 SET f_int1 = f_int1 + @max_row 11735WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11736AND @max_row_div2 + @max_row_div4; 11737 11738# check multiple-4 success: 1 11739DELETE FROM t1 11740WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11741AND @max_row_div2 + @max_row_div4 + @max_row; 11742 11743# check multiple-5 success: 1 11744SELECT COUNT(*) INTO @try_count FROM t0_template 11745WHERE MOD(f_int1,3) = 0 11746AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11747SELECT COUNT(*) INTO @clash_count 11748FROM t1 INNER JOIN t0_template USING(f_int1) 11749WHERE MOD(f_int1,3) = 0 11750AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11751SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11752INSERT INTO t1 11753SET f_int1 = @cur_value , f_int2 = @cur_value, 11754f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11755f_charbig = '#SINGLE#'; 11756 11757# check single-1 success: 1 11758SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11759INSERT INTO t1 11760SET f_int1 = @cur_value , f_int2 = @cur_value, 11761f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11762f_charbig = '#SINGLE#'; 11763 11764# check single-2 success: 1 11765SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11766SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11767UPDATE t1 SET f_int1 = @cur_value2 11768WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11769 11770# check single-3 success: 1 11771SET @cur_value1= -1; 11772SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11773UPDATE t1 SET f_int1 = @cur_value1 11774WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11775 11776# check single-4 success: 1 11777SELECT MAX(f_int1) INTO @cur_value FROM t1; 11778DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11779 11780# check single-5 success: 1 11781DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11782 11783# check single-6 success: 1 11784INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11785ERROR HY000: Table has no partition for value 2147483647 11786DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11787INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11788f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11789f_charbig = '#NULL#'; 11790INSERT INTO t1 11791SET f_int1 = NULL , f_int2 = -@max_row, 11792f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11793f_charbig = '#NULL#'; 11794# check null success: 1 11795 11796# check null-1 success: 1 11797UPDATE t1 SET f_int1 = -@max_row 11798WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11799AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11800 11801# check null-2 success: 1 11802UPDATE t1 SET f_int1 = NULL 11803WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11804AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11805 11806# check null-3 success: 1 11807DELETE FROM t1 11808WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11809AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11810 11811# check null-4 success: 1 11812DELETE FROM t1 11813WHERE f_int1 = 0 AND f_int2 = 0 11814AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11815AND f_charbig = '#NULL#'; 11816INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11817SELECT f_int1, f_int1, '', '', 'was inserted' 11818 FROM t0_template source_tab 11819WHERE MOD(f_int1,3) = 0 11820AND f_int1 BETWEEN @max_row_div2 AND @max_row 11821ON DUPLICATE KEY 11822UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11823f_int2 = 2 * @max_row + source_tab.f_int1, 11824f_charbig = 'was updated'; 11825 11826# check unique-1-a success: 1 11827 11828# check unique-1-b success: 1 11829DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11830UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11831f_int2 = CAST(f_char1 AS SIGNED INT), 11832f_charbig = CONCAT('===',f_char1,'===') 11833WHERE f_charbig = 'was updated'; 11834REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11835SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11836 FROM t0_template source_tab 11837WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11838 11839# check replace success: 1 11840DELETE FROM t1 11841WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11842DELETE FROM t1 11843WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11844f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11845UPDATE t1 SET f_int2 = f_int1, 11846f_char1 = CAST(f_int1 AS CHAR), 11847f_char2 = CAST(f_int1 AS CHAR), 11848f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11849WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11850SET AUTOCOMMIT= 0; 11851INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11852SELECT f_int1, f_int1, '', '', 'was inserted' 11853FROM t0_template source_tab 11854WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11855 11856# check transactions-1 success: 1 11857COMMIT WORK; 11858 11859# check transactions-2 success: 1 11860ROLLBACK WORK; 11861 11862# check transactions-3 success: 1 11863DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11864COMMIT WORK; 11865ROLLBACK WORK; 11866 11867# check transactions-4 success: 1 11868INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11869SELECT f_int1, f_int1, '', '', 'was inserted' 11870FROM t0_template source_tab 11871WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11872 11873# check transactions-5 success: 1 11874ROLLBACK WORK; 11875Warnings: 11876Warning 1196 Some non-transactional changed tables couldn't be rolled back 11877 11878# check transactions-6 success: 1 11879# INFO: Storage engine used for t1 seems to be not transactional. 11880COMMIT; 11881 11882# check transactions-7 success: 1 11883DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11884COMMIT WORK; 11885SET @@session.sql_mode = 'traditional'; 11886Warnings: 11887Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11888SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11889INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11890SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11891'', '', 'was inserted' FROM t0_template 11892WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11893ERROR 22012: Division by 0 11894COMMIT; 11895 11896# check transactions-8 success: 1 11897# INFO: Storage engine used for t1 seems to be unable to revert 11898# changes made by the failing statement. 11899SET @@session.sql_mode = ''; 11900Warnings: 11901Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11902SET AUTOCOMMIT= 1; 11903DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11904COMMIT WORK; 11905UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11906 11907# check special-1 success: 1 11908UPDATE t1 SET f_charbig = ''; 11909 11910# check special-2 success: 1 11911UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11912INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11913SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11914WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11915INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11916SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11917'just inserted' FROM t0_template 11918WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11919CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11920BEGIN 11921UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11922f_charbig = 'updated by trigger' 11923 WHERE f_int1 = new.f_int1; 11924END| 11925INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11926SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11927WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11928 11929# check trigger-1 success: 1 11930DROP TRIGGER trg_1; 11931UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11932f_int2 = CAST(f_char1 AS SIGNED INT), 11933f_charbig = 'just inserted' 11934 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11935DELETE FROM t0_aux 11936WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11937INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11938SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11939'just inserted' FROM t0_template 11940WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11941CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11942BEGIN 11943UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11944f_charbig = 'updated by trigger' 11945 WHERE f_int1 = new.f_int1; 11946END| 11947INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11948SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11950 11951# check trigger-2 success: 1 11952DROP TRIGGER trg_1; 11953UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11954f_int2 = CAST(f_char1 AS SIGNED INT), 11955f_charbig = 'just inserted' 11956 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11957DELETE FROM t0_aux 11958WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11959INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11960SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11961'just inserted' FROM t0_template 11962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11963CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11964BEGIN 11965UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11966f_charbig = 'updated by trigger' 11967 WHERE f_int1 = new.f_int1; 11968END| 11969UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11971 11972# check trigger-3 success: 1 11973DROP TRIGGER trg_1; 11974UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11975f_int2 = CAST(f_char1 AS SIGNED INT), 11976f_charbig = 'just inserted' 11977 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11978DELETE FROM t0_aux 11979WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11980INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11981SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11982'just inserted' FROM t0_template 11983WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11984CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11985BEGIN 11986UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11987f_charbig = 'updated by trigger' 11988 WHERE f_int1 = - old.f_int1; 11989END| 11990UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11991WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11992 11993# check trigger-4 success: 1 11994DROP TRIGGER trg_1; 11995UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11996f_int2 = CAST(f_char1 AS SIGNED INT), 11997f_charbig = 'just inserted' 11998 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11999DELETE FROM t0_aux 12000WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12001INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12002SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12003'just inserted' FROM t0_template 12004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12005CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12006BEGIN 12007UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12008f_charbig = 'updated by trigger' 12009 WHERE f_int1 = new.f_int1; 12010END| 12011UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12012WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12013 12014# check trigger-5 success: 1 12015DROP TRIGGER trg_1; 12016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12017f_int2 = CAST(f_char1 AS SIGNED INT), 12018f_charbig = 'just inserted' 12019 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12020DELETE FROM t0_aux 12021WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12022INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12023SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12024'just inserted' FROM t0_template 12025WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12026CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12027BEGIN 12028UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12029f_charbig = 'updated by trigger' 12030 WHERE f_int1 = - old.f_int1; 12031END| 12032UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12033WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12034 12035# check trigger-6 success: 1 12036DROP TRIGGER trg_1; 12037UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12038f_int2 = CAST(f_char1 AS SIGNED INT), 12039f_charbig = 'just inserted' 12040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12041DELETE FROM t0_aux 12042WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12043INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12044SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12045'just inserted' FROM t0_template 12046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12047CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12048BEGIN 12049UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12050f_charbig = 'updated by trigger' 12051 WHERE f_int1 = - old.f_int1; 12052END| 12053DELETE FROM t0_aux 12054WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12055 12056# check trigger-7 success: 1 12057DROP TRIGGER trg_1; 12058UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12059f_int2 = CAST(f_char1 AS SIGNED INT), 12060f_charbig = 'just inserted' 12061 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12062DELETE FROM t0_aux 12063WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12065SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12066'just inserted' FROM t0_template 12067WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12068CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12069BEGIN 12070UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12071f_charbig = 'updated by trigger' 12072 WHERE f_int1 = - old.f_int1; 12073END| 12074DELETE FROM t0_aux 12075WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12076 12077# check trigger-8 success: 1 12078DROP TRIGGER trg_1; 12079UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12080f_int2 = CAST(f_char1 AS SIGNED INT), 12081f_charbig = 'just inserted' 12082 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12083DELETE FROM t0_aux 12084WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12085DELETE FROM t1 12086WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12087CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12088BEGIN 12089SET new.f_int1 = old.f_int1 + @max_row, 12090new.f_int2 = old.f_int2 - @max_row, 12091new.f_charbig = '####updated per update trigger####'; 12092END| 12093UPDATE t1 12094SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12095f_charbig = '####updated per update statement itself####'; 12096Warnings: 12097Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12098 12099# check trigger-9 success: 1 12100DROP TRIGGER trg_2; 12101UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12102f_int2 = CAST(f_char1 AS SIGNED INT), 12103f_charbig = CONCAT('===',f_char1,'==='); 12104Warnings: 12105Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12106CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12107BEGIN 12108SET new.f_int1 = new.f_int1 + @max_row, 12109new.f_int2 = new.f_int2 - @max_row, 12110new.f_charbig = '####updated per update trigger####'; 12111END| 12112UPDATE t1 12113SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12114f_charbig = '####updated per update statement itself####'; 12115Warnings: 12116Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12117 12118# check trigger-10 success: 1 12119DROP TRIGGER trg_2; 12120UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12121f_int2 = CAST(f_char1 AS SIGNED INT), 12122f_charbig = CONCAT('===',f_char1,'==='); 12123Warnings: 12124Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12125CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12126BEGIN 12127SET new.f_int1 = @my_max1 + @counter, 12128new.f_int2 = @my_min2 - @counter, 12129new.f_charbig = '####updated per insert trigger####'; 12130SET @counter = @counter + 1; 12131END| 12132SET @counter = 1; 12133SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12134Warnings: 12135Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12136INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12137SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12138CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12140ORDER BY f_int1; 12141DROP TRIGGER trg_3; 12142 12143# check trigger-11 success: 1 12144Warnings: 12145Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12146DELETE FROM t1 12147WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12148AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12149AND f_charbig = '####updated per insert trigger####'; 12150CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12151BEGIN 12152SET new.f_int1 = @my_max1 + @counter, 12153new.f_int2 = @my_min2 - @counter, 12154new.f_charbig = '####updated per insert trigger####'; 12155SET @counter = @counter + 1; 12156END| 12157SET @counter = 1; 12158SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12159Warnings: 12160Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12161INSERT INTO t1 (f_char1, f_char2, f_charbig) 12162SELECT CAST(f_int1 AS CHAR), 12163CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12165ORDER BY f_int1; 12166DROP TRIGGER trg_3; 12167 12168# check trigger-12 success: 1 12169Warnings: 12170Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12171DELETE FROM t1 12172WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12173AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12174AND f_charbig = '####updated per insert trigger####'; 12175ANALYZE TABLE t1; 12176Table Op Msg_type Msg_text 12177test.t1 analyze status OK 12178test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12179CHECK TABLE t1 EXTENDED; 12180Table Op Msg_type Msg_text 12181test.t1 check status OK 12182test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12183CHECKSUM TABLE t1 EXTENDED; 12184Table Checksum 12185test.t1 <some_value> 12186OPTIMIZE TABLE t1; 12187Table Op Msg_type Msg_text 12188test.t1 optimize status OK 12189test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12190# check layout success: 1 12191REPAIR TABLE t1 EXTENDED; 12192Table Op Msg_type Msg_text 12193test.t1 repair status OK 12194test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12195# check layout success: 1 12196TRUNCATE t1; 12197Warnings: 12198Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12199 12200# check TRUNCATE success: 1 12201# check layout success: 1 12202# End usability test (inc/partition_check.inc) 12203DROP TABLE t1; 12204CREATE TABLE t1 ( 12205f_int1 INTEGER, 12206f_int2 INTEGER, 12207f_char1 CHAR(20), 12208f_char2 CHAR(20), 12209f_charbig VARCHAR(1000) 12210, UNIQUE INDEX uidx1 (f_int2,f_int1) 12211) 12212PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 12213(PARTITION part1 VALUES IN (0) 12214(SUBPARTITION sp11, SUBPARTITION sp12), 12215PARTITION part2 VALUES IN (1) 12216(SUBPARTITION sp21, SUBPARTITION sp22), 12217PARTITION part3 VALUES IN (2) 12218(SUBPARTITION sp31, SUBPARTITION sp32), 12219PARTITION part4 VALUES IN (NULL) 12220(SUBPARTITION sp41, SUBPARTITION sp42)); 12221Warnings: 12222Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12223INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12224SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12225WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 12226Warnings: 12227Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12228ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 12229Warnings: 12230Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12231INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12232SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12233WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 12234Warnings: 12235Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12236# Start usability test (inc/partition_check.inc) 12237create_command 12238SHOW CREATE TABLE t1; 12239Table Create Table 12240t1 CREATE TABLE `t1` ( 12241 `f_int1` int(11) DEFAULT NULL, 12242 `f_int2` mediumint(9) DEFAULT NULL, 12243 `f_char1` char(20) DEFAULT NULL, 12244 `f_char2` char(20) DEFAULT NULL, 12245 `f_charbig` varchar(1000) DEFAULT NULL, 12246 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 12247) ENGINE=MyISAM DEFAULT CHARSET=latin1 12248/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 12249SUBPARTITION BY HASH (f_int1 + 1) 12250(PARTITION part1 VALUES IN (0) 12251 (SUBPARTITION sp11 ENGINE = MyISAM, 12252 SUBPARTITION sp12 ENGINE = MyISAM), 12253 PARTITION part2 VALUES IN (1) 12254 (SUBPARTITION sp21 ENGINE = MyISAM, 12255 SUBPARTITION sp22 ENGINE = MyISAM), 12256 PARTITION part3 VALUES IN (2) 12257 (SUBPARTITION sp31 ENGINE = MyISAM, 12258 SUBPARTITION sp32 ENGINE = MyISAM), 12259 PARTITION part4 VALUES IN (NULL) 12260 (SUBPARTITION sp41 ENGINE = MyISAM, 12261 SUBPARTITION sp42 ENGINE = MyISAM)) */ 12262 12263unified filelist 12264t1#P#part1#SP#sp11.MYD 12265t1#P#part1#SP#sp11.MYI 12266t1#P#part1#SP#sp12.MYD 12267t1#P#part1#SP#sp12.MYI 12268t1#P#part2#SP#sp21.MYD 12269t1#P#part2#SP#sp21.MYI 12270t1#P#part2#SP#sp22.MYD 12271t1#P#part2#SP#sp22.MYI 12272t1#P#part3#SP#sp31.MYD 12273t1#P#part3#SP#sp31.MYI 12274t1#P#part3#SP#sp32.MYD 12275t1#P#part3#SP#sp32.MYI 12276t1#P#part4#SP#sp41.MYD 12277t1#P#part4#SP#sp41.MYI 12278t1#P#part4#SP#sp42.MYD 12279t1#P#part4#SP#sp42.MYI 12280t1.frm 12281t1.par 12282 12283# check prerequisites-1 success: 1 12284# check COUNT(*) success: 1 12285# check MIN/MAX(f_int1) success: 1 12286# check MIN/MAX(f_int2) success: 1 12287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12288SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12289CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12290WHERE f_int1 IN (2,3); 12291ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12292# check prerequisites-3 success: 1 12293# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12294INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12295SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12296CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12297WHERE f_int1 IN (2,3); 12298DELETE FROM t1 WHERE f_charbig = 'delete me'; 12299INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12300SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12301CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12302WHERE f_int1 IN (2,3); 12303DELETE FROM t1 WHERE f_charbig = 'delete me'; 12304# check read via f_int1 success: 1 12305# check read via f_int2 success: 1 12306 12307# check multiple-1 success: 1 12308DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12309 12310# check multiple-2 success: 1 12311INSERT INTO t1 SELECT * FROM t0_template 12312WHERE MOD(f_int1,3) = 0; 12313 12314# check multiple-3 success: 1 12315UPDATE t1 SET f_int1 = f_int1 + @max_row 12316WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12317AND @max_row_div2 + @max_row_div4; 12318 12319# check multiple-4 success: 1 12320DELETE FROM t1 12321WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12322AND @max_row_div2 + @max_row_div4 + @max_row; 12323 12324# check multiple-5 success: 1 12325SELECT COUNT(*) INTO @try_count FROM t0_template 12326WHERE MOD(f_int1,3) = 0 12327AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12328SELECT COUNT(*) INTO @clash_count 12329FROM t1 INNER JOIN t0_template USING(f_int1) 12330WHERE MOD(f_int1,3) = 0 12331AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12332SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12333INSERT INTO t1 12334SET f_int1 = @cur_value , f_int2 = @cur_value, 12335f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12336f_charbig = '#SINGLE#'; 12337 12338# check single-1 success: 1 12339SELECT MAX(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-2 success: 1 12346SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12347SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12348UPDATE t1 SET f_int1 = @cur_value2 12349WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12350 12351# check single-3 success: 1 12352SET @cur_value1= -1; 12353SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12354UPDATE t1 SET f_int1 = @cur_value1 12355WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12356 12357# check single-4 success: 1 12358SELECT MAX(f_int1) INTO @cur_value FROM t1; 12359DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12360 12361# check single-5 success: 1 12362DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12363 12364# check single-6 success: 1 12365INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12366Warnings: 12367Warning 1264 Out of range value for column 'f_int2' at row 1 12368 12369# check single-7 success: 1 12370DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12371DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12372INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12373f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12374f_charbig = '#NULL#'; 12375INSERT INTO t1 12376SET f_int1 = NULL , f_int2 = -@max_row, 12377f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12378f_charbig = '#NULL#'; 12379# check null success: 1 12380 12381# check null-1 success: 1 12382UPDATE t1 SET f_int1 = -@max_row 12383WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12384AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12385 12386# check null-2 success: 1 12387UPDATE t1 SET f_int1 = NULL 12388WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12389AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12390 12391# check null-3 success: 1 12392DELETE FROM t1 12393WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12394AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12395 12396# check null-4 success: 1 12397DELETE FROM t1 12398WHERE f_int1 = 0 AND f_int2 = 0 12399AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12400AND f_charbig = '#NULL#'; 12401INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12402SELECT f_int1, f_int1, '', '', 'was inserted' 12403 FROM t0_template source_tab 12404WHERE MOD(f_int1,3) = 0 12405AND f_int1 BETWEEN @max_row_div2 AND @max_row 12406ON DUPLICATE KEY 12407UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12408f_int2 = 2 * @max_row + source_tab.f_int1, 12409f_charbig = 'was updated'; 12410 12411# check unique-1-a success: 1 12412 12413# check unique-1-b success: 1 12414DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12416f_int2 = CAST(f_char1 AS SIGNED INT), 12417f_charbig = CONCAT('===',f_char1,'===') 12418WHERE f_charbig = 'was updated'; 12419REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12420SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12421 FROM t0_template source_tab 12422WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12423 12424# check replace success: 1 12425DELETE FROM t1 12426WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12427DELETE FROM t1 12428WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12429f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12430UPDATE t1 SET f_int2 = f_int1, 12431f_char1 = CAST(f_int1 AS CHAR), 12432f_char2 = CAST(f_int1 AS CHAR), 12433f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12434WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12435SET AUTOCOMMIT= 0; 12436INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12437SELECT f_int1, f_int1, '', '', 'was inserted' 12438FROM t0_template source_tab 12439WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12440 12441# check transactions-1 success: 1 12442COMMIT WORK; 12443 12444# check transactions-2 success: 1 12445ROLLBACK WORK; 12446 12447# check transactions-3 success: 1 12448DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12449COMMIT WORK; 12450ROLLBACK WORK; 12451 12452# check transactions-4 success: 1 12453INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12454SELECT f_int1, f_int1, '', '', 'was inserted' 12455FROM t0_template source_tab 12456WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12457 12458# check transactions-5 success: 1 12459ROLLBACK WORK; 12460Warnings: 12461Warning 1196 Some non-transactional changed tables couldn't be rolled back 12462 12463# check transactions-6 success: 1 12464# INFO: Storage engine used for t1 seems to be not transactional. 12465COMMIT; 12466 12467# check transactions-7 success: 1 12468DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12469COMMIT WORK; 12470SET @@session.sql_mode = 'traditional'; 12471Warnings: 12472Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12473SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12474INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12475SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12476'', '', 'was inserted' FROM t0_template 12477WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12478ERROR 22012: Division by 0 12479COMMIT; 12480 12481# check transactions-8 success: 1 12482# INFO: Storage engine used for t1 seems to be unable to revert 12483# changes made by the failing statement. 12484SET @@session.sql_mode = ''; 12485Warnings: 12486Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12487SET AUTOCOMMIT= 1; 12488DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12489COMMIT WORK; 12490UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12491 12492# check special-1 success: 1 12493UPDATE t1 SET f_charbig = ''; 12494 12495# check special-2 success: 1 12496UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 12497INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12498SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 12499WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12500INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12501SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12502'just inserted' FROM t0_template 12503WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12504CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 12505BEGIN 12506UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12507f_charbig = 'updated by trigger' 12508 WHERE f_int1 = new.f_int1; 12509END| 12510INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12511SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12512WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12513 12514# check trigger-1 success: 1 12515DROP TRIGGER trg_1; 12516UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12517f_int2 = CAST(f_char1 AS SIGNED INT), 12518f_charbig = 'just inserted' 12519 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12520DELETE FROM t0_aux 12521WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12522INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12523SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12524'just inserted' FROM t0_template 12525WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12526CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12527BEGIN 12528UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12529f_charbig = 'updated by trigger' 12530 WHERE f_int1 = new.f_int1; 12531END| 12532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12533SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12535 12536# check trigger-2 success: 1 12537DROP TRIGGER trg_1; 12538UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12539f_int2 = CAST(f_char1 AS SIGNED INT), 12540f_charbig = 'just inserted' 12541 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12542DELETE FROM t0_aux 12543WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12544INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12545SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12546'just inserted' FROM t0_template 12547WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12548CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12549BEGIN 12550UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12551f_charbig = 'updated by trigger' 12552 WHERE f_int1 = new.f_int1; 12553END| 12554UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12555WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12556 12557# check trigger-3 success: 1 12558DROP TRIGGER trg_1; 12559UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12560f_int2 = CAST(f_char1 AS SIGNED INT), 12561f_charbig = 'just inserted' 12562 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12563DELETE FROM t0_aux 12564WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12565INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12566SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12567'just inserted' FROM t0_template 12568WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12569CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12570BEGIN 12571UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12572f_charbig = 'updated by trigger' 12573 WHERE f_int1 = - old.f_int1; 12574END| 12575UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12576WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12577 12578# check trigger-4 success: 1 12579DROP TRIGGER trg_1; 12580UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12581f_int2 = CAST(f_char1 AS SIGNED INT), 12582f_charbig = 'just inserted' 12583 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12584DELETE FROM t0_aux 12585WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12586INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12587SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12588'just inserted' FROM t0_template 12589WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12590CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12591BEGIN 12592UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12593f_charbig = 'updated by trigger' 12594 WHERE f_int1 = new.f_int1; 12595END| 12596UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12597WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12598 12599# check trigger-5 success: 1 12600DROP TRIGGER trg_1; 12601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12602f_int2 = CAST(f_char1 AS SIGNED INT), 12603f_charbig = 'just inserted' 12604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12605DELETE FROM t0_aux 12606WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12607INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12608SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12609'just inserted' FROM t0_template 12610WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12611CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12612BEGIN 12613UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12614f_charbig = 'updated by trigger' 12615 WHERE f_int1 = - old.f_int1; 12616END| 12617UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12618WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12619 12620# check trigger-6 success: 1 12621DROP TRIGGER trg_1; 12622UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12623f_int2 = CAST(f_char1 AS SIGNED INT), 12624f_charbig = 'just inserted' 12625 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12626DELETE FROM t0_aux 12627WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12628INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12629SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12630'just inserted' FROM t0_template 12631WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12632CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12633BEGIN 12634UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12635f_charbig = 'updated by trigger' 12636 WHERE f_int1 = - old.f_int1; 12637END| 12638DELETE FROM t0_aux 12639WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12640 12641# check trigger-7 success: 1 12642DROP TRIGGER trg_1; 12643UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12644f_int2 = CAST(f_char1 AS SIGNED INT), 12645f_charbig = 'just inserted' 12646 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12647DELETE FROM t0_aux 12648WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12649INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12650SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12651'just inserted' FROM t0_template 12652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12653CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12654BEGIN 12655UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12656f_charbig = 'updated by trigger' 12657 WHERE f_int1 = - old.f_int1; 12658END| 12659DELETE FROM t0_aux 12660WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12661 12662# check trigger-8 success: 1 12663DROP TRIGGER trg_1; 12664UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12665f_int2 = CAST(f_char1 AS SIGNED INT), 12666f_charbig = 'just inserted' 12667 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12668DELETE FROM t0_aux 12669WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12670DELETE FROM t1 12671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12672CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12673BEGIN 12674SET new.f_int1 = old.f_int1 + @max_row, 12675new.f_int2 = old.f_int2 - @max_row, 12676new.f_charbig = '####updated per update trigger####'; 12677END| 12678UPDATE t1 12679SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12680f_charbig = '####updated per update statement itself####'; 12681Warnings: 12682Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12683 12684# check trigger-9 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,'==='); 12689Warnings: 12690Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12691CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12692BEGIN 12693SET new.f_int1 = new.f_int1 + @max_row, 12694new.f_int2 = new.f_int2 - @max_row, 12695new.f_charbig = '####updated per update trigger####'; 12696END| 12697UPDATE t1 12698SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12699f_charbig = '####updated per update statement itself####'; 12700Warnings: 12701Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12702 12703# check trigger-10 success: 1 12704DROP TRIGGER trg_2; 12705UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12706f_int2 = CAST(f_char1 AS SIGNED INT), 12707f_charbig = CONCAT('===',f_char1,'==='); 12708Warnings: 12709Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 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; 12719Warnings: 12720Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12721INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12722SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12723CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12725ORDER BY f_int1; 12726DROP TRIGGER trg_3; 12727 12728# check trigger-11 success: 1 12729Warnings: 12730Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12731DELETE FROM t1 12732WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12733AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12734AND f_charbig = '####updated per insert trigger####'; 12735CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12736BEGIN 12737SET new.f_int1 = @my_max1 + @counter, 12738new.f_int2 = @my_min2 - @counter, 12739new.f_charbig = '####updated per insert trigger####'; 12740SET @counter = @counter + 1; 12741END| 12742SET @counter = 1; 12743SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12744Warnings: 12745Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12746INSERT INTO t1 (f_char1, f_char2, f_charbig) 12747SELECT CAST(f_int1 AS CHAR), 12748CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12750ORDER BY f_int1; 12751DROP TRIGGER trg_3; 12752 12753# check trigger-12 success: 1 12754Warnings: 12755Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12756DELETE FROM t1 12757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12758AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12759AND f_charbig = '####updated per insert trigger####'; 12760ANALYZE TABLE t1; 12761Table Op Msg_type Msg_text 12762test.t1 analyze status OK 12763test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12764CHECK TABLE t1 EXTENDED; 12765Table Op Msg_type Msg_text 12766test.t1 check status OK 12767test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12768CHECKSUM TABLE t1 EXTENDED; 12769Table Checksum 12770test.t1 <some_value> 12771OPTIMIZE TABLE t1; 12772Table Op Msg_type Msg_text 12773test.t1 optimize status OK 12774test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12775# check layout success: 1 12776REPAIR TABLE t1 EXTENDED; 12777Table Op Msg_type Msg_text 12778test.t1 repair status OK 12779test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12780# check layout success: 1 12781TRUNCATE t1; 12782Warnings: 12783Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12784 12785# check TRUNCATE success: 1 12786# check layout success: 1 12787# End usability test (inc/partition_check.inc) 12788DROP TABLE t1; 12789CREATE TABLE t1 ( 12790f_int1 INTEGER, 12791f_int2 INTEGER, 12792f_char1 CHAR(20), 12793f_char2 CHAR(20), 12794f_charbig VARCHAR(1000) 12795, UNIQUE INDEX uidx1 (f_int2,f_int1) 12796) 12797PARTITION BY LIST(ABS(MOD(f_int1,2))) 12798SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 12799(PARTITION part1 VALUES IN (0), 12800PARTITION part2 VALUES IN (1), 12801PARTITION part3 VALUES IN (NULL)); 12802Warnings: 12803Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12804INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12805SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12806WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 12807Warnings: 12808Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12809ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; 12810Warnings: 12811Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12812INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12813SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12814WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 12815Warnings: 12816Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12817# Start usability test (inc/partition_check.inc) 12818create_command 12819SHOW CREATE TABLE t1; 12820Table Create Table 12821t1 CREATE TABLE `t1` ( 12822 `f_int1` int(11) DEFAULT NULL, 12823 `f_int2` mediumint(9) DEFAULT NULL, 12824 `f_char1` char(20) DEFAULT NULL, 12825 `f_char2` char(20) DEFAULT NULL, 12826 `f_charbig` varchar(1000) DEFAULT NULL, 12827 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 12828) ENGINE=MyISAM DEFAULT CHARSET=latin1 12829/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 12830SUBPARTITION BY KEY (f_int1) 12831SUBPARTITIONS 3 12832(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 12833 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 12834 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 12835 12836unified filelist 12837t1#P#part1#SP#part1sp0.MYD 12838t1#P#part1#SP#part1sp0.MYI 12839t1#P#part1#SP#part1sp1.MYD 12840t1#P#part1#SP#part1sp1.MYI 12841t1#P#part1#SP#part1sp2.MYD 12842t1#P#part1#SP#part1sp2.MYI 12843t1#P#part2#SP#part2sp0.MYD 12844t1#P#part2#SP#part2sp0.MYI 12845t1#P#part2#SP#part2sp1.MYD 12846t1#P#part2#SP#part2sp1.MYI 12847t1#P#part2#SP#part2sp2.MYD 12848t1#P#part2#SP#part2sp2.MYI 12849t1#P#part3#SP#part3sp0.MYD 12850t1#P#part3#SP#part3sp0.MYI 12851t1#P#part3#SP#part3sp1.MYD 12852t1#P#part3#SP#part3sp1.MYI 12853t1#P#part3#SP#part3sp2.MYD 12854t1#P#part3#SP#part3sp2.MYI 12855t1.frm 12856t1.par 12857 12858# check prerequisites-1 success: 1 12859# check COUNT(*) success: 1 12860# check MIN/MAX(f_int1) success: 1 12861# check MIN/MAX(f_int2) success: 1 12862INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12863SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12864CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12865WHERE f_int1 IN (2,3); 12866ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12867# check prerequisites-3 success: 1 12868# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12869INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12870SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12871CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12872WHERE f_int1 IN (2,3); 12873DELETE FROM t1 WHERE f_charbig = 'delete me'; 12874INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12875SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12876CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12877WHERE f_int1 IN (2,3); 12878DELETE FROM t1 WHERE f_charbig = 'delete me'; 12879# check read via f_int1 success: 1 12880# check read via f_int2 success: 1 12881 12882# check multiple-1 success: 1 12883DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12884 12885# check multiple-2 success: 1 12886INSERT INTO t1 SELECT * FROM t0_template 12887WHERE MOD(f_int1,3) = 0; 12888 12889# check multiple-3 success: 1 12890UPDATE t1 SET f_int1 = f_int1 + @max_row 12891WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12892AND @max_row_div2 + @max_row_div4; 12893 12894# check multiple-4 success: 1 12895DELETE FROM t1 12896WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12897AND @max_row_div2 + @max_row_div4 + @max_row; 12898 12899# check multiple-5 success: 1 12900SELECT COUNT(*) INTO @try_count FROM t0_template 12901WHERE MOD(f_int1,3) = 0 12902AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12903SELECT COUNT(*) INTO @clash_count 12904FROM t1 INNER JOIN t0_template USING(f_int1) 12905WHERE MOD(f_int1,3) = 0 12906AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12907SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12908INSERT INTO t1 12909SET f_int1 = @cur_value , f_int2 = @cur_value, 12910f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12911f_charbig = '#SINGLE#'; 12912 12913# check single-1 success: 1 12914SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12915INSERT INTO t1 12916SET f_int1 = @cur_value , f_int2 = @cur_value, 12917f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12918f_charbig = '#SINGLE#'; 12919 12920# check single-2 success: 1 12921SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12922SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12923UPDATE t1 SET f_int1 = @cur_value2 12924WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12925 12926# check single-3 success: 1 12927SET @cur_value1= -1; 12928SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12929UPDATE t1 SET f_int1 = @cur_value1 12930WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12931 12932# check single-4 success: 1 12933SELECT MAX(f_int1) INTO @cur_value FROM t1; 12934DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12935 12936# check single-5 success: 1 12937DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12938 12939# check single-6 success: 1 12940INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12941Warnings: 12942Warning 1264 Out of range value for column 'f_int2' at row 1 12943 12944# check single-7 success: 1 12945DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12946DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12947INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12948f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12949f_charbig = '#NULL#'; 12950INSERT INTO t1 12951SET f_int1 = NULL , f_int2 = -@max_row, 12952f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12953f_charbig = '#NULL#'; 12954# check null success: 1 12955 12956# check null-1 success: 1 12957UPDATE t1 SET f_int1 = -@max_row 12958WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12959AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12960 12961# check null-2 success: 1 12962UPDATE t1 SET f_int1 = NULL 12963WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12964AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12965 12966# check null-3 success: 1 12967DELETE FROM t1 12968WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12969AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12970 12971# check null-4 success: 1 12972DELETE FROM t1 12973WHERE f_int1 = 0 AND f_int2 = 0 12974AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12975AND f_charbig = '#NULL#'; 12976INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12977SELECT f_int1, f_int1, '', '', 'was inserted' 12978 FROM t0_template source_tab 12979WHERE MOD(f_int1,3) = 0 12980AND f_int1 BETWEEN @max_row_div2 AND @max_row 12981ON DUPLICATE KEY 12982UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12983f_int2 = 2 * @max_row + source_tab.f_int1, 12984f_charbig = 'was updated'; 12985 12986# check unique-1-a success: 1 12987 12988# check unique-1-b success: 1 12989DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12991f_int2 = CAST(f_char1 AS SIGNED INT), 12992f_charbig = CONCAT('===',f_char1,'===') 12993WHERE f_charbig = 'was updated'; 12994REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12995SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12996 FROM t0_template source_tab 12997WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12998 12999# check replace success: 1 13000DELETE FROM t1 13001WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13002DELETE FROM t1 13003WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13004f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13005UPDATE t1 SET f_int2 = f_int1, 13006f_char1 = CAST(f_int1 AS CHAR), 13007f_char2 = CAST(f_int1 AS CHAR), 13008f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13009WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13010SET AUTOCOMMIT= 0; 13011INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13012SELECT f_int1, f_int1, '', '', 'was inserted' 13013FROM t0_template source_tab 13014WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13015 13016# check transactions-1 success: 1 13017COMMIT WORK; 13018 13019# check transactions-2 success: 1 13020ROLLBACK WORK; 13021 13022# check transactions-3 success: 1 13023DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13024COMMIT WORK; 13025ROLLBACK WORK; 13026 13027# check transactions-4 success: 1 13028INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13029SELECT f_int1, f_int1, '', '', 'was inserted' 13030FROM t0_template source_tab 13031WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13032 13033# check transactions-5 success: 1 13034ROLLBACK WORK; 13035Warnings: 13036Warning 1196 Some non-transactional changed tables couldn't be rolled back 13037 13038# check transactions-6 success: 1 13039# INFO: Storage engine used for t1 seems to be not transactional. 13040COMMIT; 13041 13042# check transactions-7 success: 1 13043DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13044COMMIT WORK; 13045SET @@session.sql_mode = 'traditional'; 13046Warnings: 13047Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13048SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13049INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13050SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13051'', '', 'was inserted' FROM t0_template 13052WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13053ERROR 22012: Division by 0 13054COMMIT; 13055 13056# check transactions-8 success: 1 13057# INFO: Storage engine used for t1 seems to be unable to revert 13058# changes made by the failing statement. 13059SET @@session.sql_mode = ''; 13060Warnings: 13061Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13062SET AUTOCOMMIT= 1; 13063DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13064COMMIT WORK; 13065UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13066 13067# check special-1 success: 1 13068UPDATE t1 SET f_charbig = ''; 13069 13070# check special-2 success: 1 13071UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13073SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13077'just inserted' FROM t0_template 13078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13079CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13080BEGIN 13081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13082f_charbig = 'updated by trigger' 13083 WHERE f_int1 = new.f_int1; 13084END| 13085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13088 13089# check trigger-1 success: 1 13090DROP TRIGGER trg_1; 13091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13092f_int2 = CAST(f_char1 AS SIGNED INT), 13093f_charbig = 'just inserted' 13094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13095DELETE FROM t0_aux 13096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13099'just inserted' FROM t0_template 13100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13101CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13102BEGIN 13103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13104f_charbig = 'updated by trigger' 13105 WHERE f_int1 = new.f_int1; 13106END| 13107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13108SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13110 13111# check trigger-2 success: 1 13112DROP TRIGGER trg_1; 13113UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13114f_int2 = CAST(f_char1 AS SIGNED INT), 13115f_charbig = 'just inserted' 13116 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13117DELETE FROM t0_aux 13118WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13119INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13120SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13121'just inserted' FROM t0_template 13122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13123CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13124BEGIN 13125UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13126f_charbig = 'updated by trigger' 13127 WHERE f_int1 = new.f_int1; 13128END| 13129UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13130WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13131 13132# check trigger-3 success: 1 13133DROP TRIGGER trg_1; 13134UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13135f_int2 = CAST(f_char1 AS SIGNED INT), 13136f_charbig = 'just inserted' 13137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13138DELETE FROM t0_aux 13139WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13142'just inserted' FROM t0_template 13143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13144CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13145BEGIN 13146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13147f_charbig = 'updated by trigger' 13148 WHERE f_int1 = - old.f_int1; 13149END| 13150UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13151WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13152 13153# check trigger-4 success: 1 13154DROP TRIGGER trg_1; 13155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13156f_int2 = CAST(f_char1 AS SIGNED INT), 13157f_charbig = 'just inserted' 13158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13159DELETE FROM t0_aux 13160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13163'just inserted' FROM t0_template 13164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13165CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13166BEGIN 13167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13168f_charbig = 'updated by trigger' 13169 WHERE f_int1 = new.f_int1; 13170END| 13171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13173 13174# check trigger-5 success: 1 13175DROP TRIGGER trg_1; 13176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13177f_int2 = CAST(f_char1 AS SIGNED INT), 13178f_charbig = 'just inserted' 13179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13180DELETE FROM t0_aux 13181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13184'just inserted' FROM t0_template 13185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13186CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13187BEGIN 13188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13189f_charbig = 'updated by trigger' 13190 WHERE f_int1 = - old.f_int1; 13191END| 13192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13194 13195# check trigger-6 success: 1 13196DROP TRIGGER trg_1; 13197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13198f_int2 = CAST(f_char1 AS SIGNED INT), 13199f_charbig = 'just inserted' 13200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13201DELETE FROM t0_aux 13202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13205'just inserted' FROM t0_template 13206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13207CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13208BEGIN 13209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13210f_charbig = 'updated by trigger' 13211 WHERE f_int1 = - old.f_int1; 13212END| 13213DELETE FROM t0_aux 13214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13215 13216# check trigger-7 success: 1 13217DROP TRIGGER trg_1; 13218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13219f_int2 = CAST(f_char1 AS SIGNED INT), 13220f_charbig = 'just inserted' 13221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13222DELETE FROM t0_aux 13223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13226'just inserted' FROM t0_template 13227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13228CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13229BEGIN 13230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13231f_charbig = 'updated by trigger' 13232 WHERE f_int1 = - old.f_int1; 13233END| 13234DELETE FROM t0_aux 13235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13236 13237# check trigger-8 success: 1 13238DROP TRIGGER trg_1; 13239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13240f_int2 = CAST(f_char1 AS SIGNED INT), 13241f_charbig = 'just inserted' 13242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13243DELETE FROM t0_aux 13244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13245DELETE FROM t1 13246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13247CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13248BEGIN 13249SET new.f_int1 = old.f_int1 + @max_row, 13250new.f_int2 = old.f_int2 - @max_row, 13251new.f_charbig = '####updated per update trigger####'; 13252END| 13253UPDATE t1 13254SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13255f_charbig = '####updated per update statement itself####'; 13256Warnings: 13257Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13258 13259# check trigger-9 success: 1 13260DROP TRIGGER trg_2; 13261UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13262f_int2 = CAST(f_char1 AS SIGNED INT), 13263f_charbig = CONCAT('===',f_char1,'==='); 13264Warnings: 13265Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13266CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13267BEGIN 13268SET new.f_int1 = new.f_int1 + @max_row, 13269new.f_int2 = new.f_int2 - @max_row, 13270new.f_charbig = '####updated per update trigger####'; 13271END| 13272UPDATE t1 13273SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13274f_charbig = '####updated per update statement itself####'; 13275Warnings: 13276Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13277 13278# check trigger-10 success: 1 13279DROP TRIGGER trg_2; 13280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13281f_int2 = CAST(f_char1 AS SIGNED INT), 13282f_charbig = CONCAT('===',f_char1,'==='); 13283Warnings: 13284Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13285CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13286BEGIN 13287SET new.f_int1 = @my_max1 + @counter, 13288new.f_int2 = @my_min2 - @counter, 13289new.f_charbig = '####updated per insert trigger####'; 13290SET @counter = @counter + 1; 13291END| 13292SET @counter = 1; 13293SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13294Warnings: 13295Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13296INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13297SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13298CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13299WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13300ORDER BY f_int1; 13301DROP TRIGGER trg_3; 13302 13303# check trigger-11 success: 1 13304Warnings: 13305Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13306DELETE FROM t1 13307WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13308AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13309AND f_charbig = '####updated per insert trigger####'; 13310CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13311BEGIN 13312SET new.f_int1 = @my_max1 + @counter, 13313new.f_int2 = @my_min2 - @counter, 13314new.f_charbig = '####updated per insert trigger####'; 13315SET @counter = @counter + 1; 13316END| 13317SET @counter = 1; 13318SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13319Warnings: 13320Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13321INSERT INTO t1 (f_char1, f_char2, f_charbig) 13322SELECT CAST(f_int1 AS CHAR), 13323CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13325ORDER BY f_int1; 13326DROP TRIGGER trg_3; 13327 13328# check trigger-12 success: 1 13329Warnings: 13330Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13331DELETE FROM t1 13332WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13333AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13334AND f_charbig = '####updated per insert trigger####'; 13335ANALYZE TABLE t1; 13336Table Op Msg_type Msg_text 13337test.t1 analyze status OK 13338test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13339CHECK TABLE t1 EXTENDED; 13340Table Op Msg_type Msg_text 13341test.t1 check status OK 13342test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13343CHECKSUM TABLE t1 EXTENDED; 13344Table Checksum 13345test.t1 <some_value> 13346OPTIMIZE TABLE t1; 13347Table Op Msg_type Msg_text 13348test.t1 optimize status OK 13349test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13350# check layout success: 1 13351REPAIR TABLE t1 EXTENDED; 13352Table Op Msg_type Msg_text 13353test.t1 repair status OK 13354test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13355# check layout success: 1 13356TRUNCATE t1; 13357Warnings: 13358Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13359 13360# check TRUNCATE success: 1 13361# check layout success: 1 13362# End usability test (inc/partition_check.inc) 13363DROP TABLE t1; 13364#------------------------------------------------------------------------ 13365# 2.3 ALTER column f_int1 and f_int2 used in partitioning function 13366#------------------------------------------------------------------------ 13367# 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists 13368DROP TABLE IF EXISTS t1; 13369CREATE TABLE t1 ( 13370f_int1 INTEGER, 13371f_int2 INTEGER, 13372f_char1 CHAR(20), 13373f_char2 CHAR(20), 13374f_charbig VARCHAR(1000) 13375 13376) 13377PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 13378Warnings: 13379Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13380INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13381SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13382WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 13383Warnings: 13384Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13385ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 13386Warnings: 13387Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13388INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13389SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13390WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 13391Warnings: 13392Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13393# Start usability test (inc/partition_check.inc) 13394create_command 13395SHOW CREATE TABLE t1; 13396Table Create Table 13397t1 CREATE TABLE `t1` ( 13398 `f_int1` mediumint(9) DEFAULT NULL, 13399 `f_int2` mediumint(9) DEFAULT NULL, 13400 `f_char1` char(20) DEFAULT NULL, 13401 `f_char2` char(20) DEFAULT NULL, 13402 `f_charbig` varchar(1000) DEFAULT NULL 13403) ENGINE=MyISAM DEFAULT CHARSET=latin1 13404/*!50100 PARTITION BY HASH (f_int1 + f_int2) 13405PARTITIONS 2 */ 13406 13407unified filelist 13408t1#P#p0.MYD 13409t1#P#p0.MYI 13410t1#P#p1.MYD 13411t1#P#p1.MYI 13412t1.frm 13413t1.par 13414 13415# check prerequisites-1 success: 1 13416# check COUNT(*) success: 1 13417# check MIN/MAX(f_int1) success: 1 13418# check MIN/MAX(f_int2) success: 1 13419INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13420SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13421CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13422WHERE f_int1 IN (2,3); 13423# check prerequisites-3 success: 1 13424DELETE FROM t1 WHERE f_charbig = 'delete me'; 13425# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 13426# check read via f_int1 success: 1 13427# check read via f_int2 success: 1 13428 13429# check multiple-1 success: 1 13430DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13431 13432# check multiple-2 success: 1 13433INSERT INTO t1 SELECT * FROM t0_template 13434WHERE MOD(f_int1,3) = 0; 13435 13436# check multiple-3 success: 1 13437UPDATE t1 SET f_int1 = f_int1 + @max_row 13438WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13439AND @max_row_div2 + @max_row_div4; 13440 13441# check multiple-4 success: 1 13442DELETE FROM t1 13443WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13444AND @max_row_div2 + @max_row_div4 + @max_row; 13445 13446# check multiple-5 success: 1 13447SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13448INSERT INTO t1 13449SET f_int1 = @cur_value , f_int2 = @cur_value, 13450f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13451f_charbig = '#SINGLE#'; 13452 13453# check single-1 success: 1 13454SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13455INSERT INTO t1 13456SET f_int1 = @cur_value , f_int2 = @cur_value, 13457f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13458f_charbig = '#SINGLE#'; 13459 13460# check single-2 success: 1 13461SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13462SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13463UPDATE t1 SET f_int1 = @cur_value2 13464WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13465 13466# check single-3 success: 1 13467SET @cur_value1= -1; 13468SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13469UPDATE t1 SET f_int1 = @cur_value1 13470WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13471 13472# check single-4 success: 1 13473SELECT MAX(f_int1) INTO @cur_value FROM t1; 13474DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13475 13476# check single-5 success: 1 13477DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13478 13479# check single-6 success: 1 13480INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13481Warnings: 13482Warning 1264 Out of range value for column 'f_int1' at row 1 13483Warning 1264 Out of range value for column 'f_int2' at row 1 13484 13485# check single-7 success: 1 13486DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 13487DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13488INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13489f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13490f_charbig = '#NULL#'; 13491INSERT INTO t1 13492SET f_int1 = NULL , f_int2 = -@max_row, 13493f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13494f_charbig = '#NULL#'; 13495# check null success: 1 13496 13497# check null-1 success: 1 13498UPDATE t1 SET f_int1 = -@max_row 13499WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13500AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13501 13502# check null-2 success: 1 13503UPDATE t1 SET f_int1 = NULL 13504WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13505AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13506 13507# check null-3 success: 1 13508DELETE FROM t1 13509WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13510AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13511 13512# check null-4 success: 1 13513DELETE FROM t1 13514WHERE f_int1 = 0 AND f_int2 = 0 13515AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13516AND f_charbig = '#NULL#'; 13517SET AUTOCOMMIT= 0; 13518INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13519SELECT f_int1, f_int1, '', '', 'was inserted' 13520FROM t0_template source_tab 13521WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13522 13523# check transactions-1 success: 1 13524COMMIT WORK; 13525 13526# check transactions-2 success: 1 13527ROLLBACK WORK; 13528 13529# check transactions-3 success: 1 13530DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13531COMMIT WORK; 13532ROLLBACK WORK; 13533 13534# check transactions-4 success: 1 13535INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13536SELECT f_int1, f_int1, '', '', 'was inserted' 13537FROM t0_template source_tab 13538WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13539 13540# check transactions-5 success: 1 13541ROLLBACK WORK; 13542Warnings: 13543Warning 1196 Some non-transactional changed tables couldn't be rolled back 13544 13545# check transactions-6 success: 1 13546# INFO: Storage engine used for t1 seems to be not transactional. 13547COMMIT; 13548 13549# check transactions-7 success: 1 13550DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13551COMMIT WORK; 13552SET @@session.sql_mode = 'traditional'; 13553Warnings: 13554Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13555SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13556INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13557SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13558'', '', 'was inserted' FROM t0_template 13559WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13560ERROR 22012: Division by 0 13561COMMIT; 13562 13563# check transactions-8 success: 1 13564# INFO: Storage engine used for t1 seems to be unable to revert 13565# changes made by the failing statement. 13566SET @@session.sql_mode = ''; 13567Warnings: 13568Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13569SET AUTOCOMMIT= 1; 13570DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13571COMMIT WORK; 13572UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13573 13574# check special-1 success: 1 13575UPDATE t1 SET f_charbig = ''; 13576 13577# check special-2 success: 1 13578UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13579INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13580SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13581WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13582INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13583SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13584'just inserted' FROM t0_template 13585WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13586CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13587BEGIN 13588UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13589f_charbig = 'updated by trigger' 13590 WHERE f_int1 = new.f_int1; 13591END| 13592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13593SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13594WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13595 13596# check trigger-1 success: 1 13597DROP TRIGGER trg_1; 13598UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13599f_int2 = CAST(f_char1 AS SIGNED INT), 13600f_charbig = 'just inserted' 13601 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13602DELETE FROM t0_aux 13603WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13604INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13605SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13606'just inserted' FROM t0_template 13607WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13608CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13609BEGIN 13610UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13611f_charbig = 'updated by trigger' 13612 WHERE f_int1 = new.f_int1; 13613END| 13614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13615SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13617 13618# check trigger-2 success: 1 13619DROP TRIGGER trg_1; 13620UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13621f_int2 = CAST(f_char1 AS SIGNED INT), 13622f_charbig = 'just inserted' 13623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13624DELETE FROM t0_aux 13625WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13627SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13628'just inserted' FROM t0_template 13629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13630CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13631BEGIN 13632UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13633f_charbig = 'updated by trigger' 13634 WHERE f_int1 = new.f_int1; 13635END| 13636UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13637WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13638 13639# check trigger-3 success: 1 13640DROP TRIGGER trg_1; 13641UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13642f_int2 = CAST(f_char1 AS SIGNED INT), 13643f_charbig = 'just inserted' 13644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13645DELETE FROM t0_aux 13646WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13647INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13648SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13649'just inserted' FROM t0_template 13650WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13651CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13652BEGIN 13653UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13654f_charbig = 'updated by trigger' 13655 WHERE f_int1 = - old.f_int1; 13656END| 13657UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13658WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13659 13660# check trigger-4 success: 1 13661DROP TRIGGER trg_1; 13662UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13663f_int2 = CAST(f_char1 AS SIGNED INT), 13664f_charbig = 'just inserted' 13665 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13666DELETE FROM t0_aux 13667WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13668INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13669SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13670'just inserted' FROM t0_template 13671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13672CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13673BEGIN 13674UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13675f_charbig = 'updated by trigger' 13676 WHERE f_int1 = new.f_int1; 13677END| 13678UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13679WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13680 13681# check trigger-5 success: 1 13682DROP TRIGGER trg_1; 13683UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13684f_int2 = CAST(f_char1 AS SIGNED INT), 13685f_charbig = 'just inserted' 13686 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13687DELETE FROM t0_aux 13688WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13689INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13690SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13691'just inserted' FROM t0_template 13692WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13693CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13694BEGIN 13695UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13696f_charbig = 'updated by trigger' 13697 WHERE f_int1 = - old.f_int1; 13698END| 13699UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13700WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13701 13702# check trigger-6 success: 1 13703DROP TRIGGER trg_1; 13704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13705f_int2 = CAST(f_char1 AS SIGNED INT), 13706f_charbig = 'just inserted' 13707 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13708DELETE FROM t0_aux 13709WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13710INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13711SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13712'just inserted' FROM t0_template 13713WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13714CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13715BEGIN 13716UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13717f_charbig = 'updated by trigger' 13718 WHERE f_int1 = - old.f_int1; 13719END| 13720DELETE FROM t0_aux 13721WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13722 13723# check trigger-7 success: 1 13724DROP TRIGGER trg_1; 13725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13726f_int2 = CAST(f_char1 AS SIGNED INT), 13727f_charbig = 'just inserted' 13728 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13729DELETE FROM t0_aux 13730WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13733'just inserted' FROM t0_template 13734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13735CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13736BEGIN 13737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13738f_charbig = 'updated by trigger' 13739 WHERE f_int1 = - old.f_int1; 13740END| 13741DELETE FROM t0_aux 13742WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13743 13744# check trigger-8 success: 1 13745DROP TRIGGER trg_1; 13746UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13747f_int2 = CAST(f_char1 AS SIGNED INT), 13748f_charbig = 'just inserted' 13749 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13750DELETE FROM t0_aux 13751WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13752DELETE FROM t1 13753WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13754CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13755BEGIN 13756SET new.f_int1 = old.f_int1 + @max_row, 13757new.f_int2 = old.f_int2 - @max_row, 13758new.f_charbig = '####updated per update trigger####'; 13759END| 13760UPDATE t1 13761SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13762f_charbig = '####updated per update statement itself####'; 13763Warnings: 13764Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13765 13766# check trigger-9 success: 1 13767DROP TRIGGER trg_2; 13768UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13769f_int2 = CAST(f_char1 AS SIGNED INT), 13770f_charbig = CONCAT('===',f_char1,'==='); 13771Warnings: 13772Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13773CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13774BEGIN 13775SET new.f_int1 = new.f_int1 + @max_row, 13776new.f_int2 = new.f_int2 - @max_row, 13777new.f_charbig = '####updated per update trigger####'; 13778END| 13779UPDATE t1 13780SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13781f_charbig = '####updated per update statement itself####'; 13782Warnings: 13783Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13784 13785# check trigger-10 success: 1 13786DROP TRIGGER trg_2; 13787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13788f_int2 = CAST(f_char1 AS SIGNED INT), 13789f_charbig = CONCAT('===',f_char1,'==='); 13790Warnings: 13791Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13792CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13793BEGIN 13794SET new.f_int1 = @my_max1 + @counter, 13795new.f_int2 = @my_min2 - @counter, 13796new.f_charbig = '####updated per insert trigger####'; 13797SET @counter = @counter + 1; 13798END| 13799SET @counter = 1; 13800SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13801Warnings: 13802Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13805CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13807ORDER BY f_int1; 13808DROP TRIGGER trg_3; 13809 13810# check trigger-11 success: 1 13811Warnings: 13812Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13813DELETE FROM t1 13814WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13815AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13816AND f_charbig = '####updated per insert trigger####'; 13817CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13818BEGIN 13819SET new.f_int1 = @my_max1 + @counter, 13820new.f_int2 = @my_min2 - @counter, 13821new.f_charbig = '####updated per insert trigger####'; 13822SET @counter = @counter + 1; 13823END| 13824SET @counter = 1; 13825SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13826Warnings: 13827Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13828INSERT INTO t1 (f_char1, f_char2, f_charbig) 13829SELECT CAST(f_int1 AS CHAR), 13830CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13832ORDER BY f_int1; 13833DROP TRIGGER trg_3; 13834 13835# check trigger-12 success: 1 13836Warnings: 13837Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13838DELETE FROM t1 13839WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13840AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13841AND f_charbig = '####updated per insert trigger####'; 13842ANALYZE TABLE t1; 13843Table Op Msg_type Msg_text 13844test.t1 analyze status OK 13845test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13846CHECK TABLE t1 EXTENDED; 13847Table Op Msg_type Msg_text 13848test.t1 check status OK 13849test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13850CHECKSUM TABLE t1 EXTENDED; 13851Table Checksum 13852test.t1 <some_value> 13853OPTIMIZE TABLE t1; 13854Table Op Msg_type Msg_text 13855test.t1 optimize status OK 13856test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13857# check layout success: 1 13858REPAIR TABLE t1 EXTENDED; 13859Table Op Msg_type Msg_text 13860test.t1 repair status OK 13861test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13862# check layout success: 1 13863TRUNCATE t1; 13864Warnings: 13865Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13866 13867# check TRUNCATE success: 1 13868# check layout success: 1 13869# End usability test (inc/partition_check.inc) 13870DROP TABLE t1; 13871CREATE TABLE t1 ( 13872f_int1 INTEGER, 13873f_int2 INTEGER, 13874f_char1 CHAR(20), 13875f_char2 CHAR(20), 13876f_charbig VARCHAR(1000) 13877 13878) 13879PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 13880Warnings: 13881Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13882INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13883SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13884WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 13885Warnings: 13886Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13887ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 13888Warnings: 13889Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13890INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13891SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13892WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 13893Warnings: 13894Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13895# Start usability test (inc/partition_check.inc) 13896create_command 13897SHOW CREATE TABLE t1; 13898Table Create Table 13899t1 CREATE TABLE `t1` ( 13900 `f_int1` mediumint(9) DEFAULT NULL, 13901 `f_int2` mediumint(9) DEFAULT NULL, 13902 `f_char1` char(20) DEFAULT NULL, 13903 `f_char2` char(20) DEFAULT NULL, 13904 `f_charbig` varchar(1000) DEFAULT NULL 13905) ENGINE=MyISAM DEFAULT CHARSET=latin1 13906/*!50100 PARTITION BY KEY (f_int1,f_int2) 13907PARTITIONS 5 */ 13908 13909unified filelist 13910t1#P#p0.MYD 13911t1#P#p0.MYI 13912t1#P#p1.MYD 13913t1#P#p1.MYI 13914t1#P#p2.MYD 13915t1#P#p2.MYI 13916t1#P#p3.MYD 13917t1#P#p3.MYI 13918t1#P#p4.MYD 13919t1#P#p4.MYI 13920t1.frm 13921t1.par 13922 13923# check prerequisites-1 success: 1 13924# check COUNT(*) success: 1 13925# check MIN/MAX(f_int1) success: 1 13926# check MIN/MAX(f_int2) success: 1 13927INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13928SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13929CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13930WHERE f_int1 IN (2,3); 13931# check prerequisites-3 success: 1 13932DELETE FROM t1 WHERE f_charbig = 'delete me'; 13933# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 13934# check read via f_int1 success: 1 13935# check read via f_int2 success: 1 13936 13937# check multiple-1 success: 1 13938DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13939 13940# check multiple-2 success: 1 13941INSERT INTO t1 SELECT * FROM t0_template 13942WHERE MOD(f_int1,3) = 0; 13943 13944# check multiple-3 success: 1 13945UPDATE t1 SET f_int1 = f_int1 + @max_row 13946WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13947AND @max_row_div2 + @max_row_div4; 13948 13949# check multiple-4 success: 1 13950DELETE FROM t1 13951WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13952AND @max_row_div2 + @max_row_div4 + @max_row; 13953 13954# check multiple-5 success: 1 13955SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13956INSERT INTO t1 13957SET f_int1 = @cur_value , f_int2 = @cur_value, 13958f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13959f_charbig = '#SINGLE#'; 13960 13961# check single-1 success: 1 13962SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13963INSERT INTO t1 13964SET f_int1 = @cur_value , f_int2 = @cur_value, 13965f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13966f_charbig = '#SINGLE#'; 13967 13968# check single-2 success: 1 13969SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13970SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13971UPDATE t1 SET f_int1 = @cur_value2 13972WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13973 13974# check single-3 success: 1 13975SET @cur_value1= -1; 13976SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13977UPDATE t1 SET f_int1 = @cur_value1 13978WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13979 13980# check single-4 success: 1 13981SELECT MAX(f_int1) INTO @cur_value FROM t1; 13982DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13983 13984# check single-5 success: 1 13985DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13986 13987# check single-6 success: 1 13988INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13989Warnings: 13990Warning 1264 Out of range value for column 'f_int1' at row 1 13991Warning 1264 Out of range value for column 'f_int2' at row 1 13992 13993# check single-7 success: 1 13994DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 13995DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13996INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13997f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13998f_charbig = '#NULL#'; 13999INSERT INTO t1 14000SET f_int1 = NULL , f_int2 = -@max_row, 14001f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14002f_charbig = '#NULL#'; 14003# check null success: 1 14004 14005# check null-1 success: 1 14006UPDATE t1 SET f_int1 = -@max_row 14007WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14008AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14009 14010# check null-2 success: 1 14011UPDATE t1 SET f_int1 = NULL 14012WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14013AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14014 14015# check null-3 success: 1 14016DELETE FROM t1 14017WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14018AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14019 14020# check null-4 success: 1 14021DELETE FROM t1 14022WHERE f_int1 = 0 AND f_int2 = 0 14023AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14024AND f_charbig = '#NULL#'; 14025SET AUTOCOMMIT= 0; 14026INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14027SELECT f_int1, f_int1, '', '', 'was inserted' 14028FROM t0_template source_tab 14029WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14030 14031# check transactions-1 success: 1 14032COMMIT WORK; 14033 14034# check transactions-2 success: 1 14035ROLLBACK WORK; 14036 14037# check transactions-3 success: 1 14038DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14039COMMIT WORK; 14040ROLLBACK WORK; 14041 14042# check transactions-4 success: 1 14043INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14044SELECT f_int1, f_int1, '', '', 'was inserted' 14045FROM t0_template source_tab 14046WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14047 14048# check transactions-5 success: 1 14049ROLLBACK WORK; 14050Warnings: 14051Warning 1196 Some non-transactional changed tables couldn't be rolled back 14052 14053# check transactions-6 success: 1 14054# INFO: Storage engine used for t1 seems to be not transactional. 14055COMMIT; 14056 14057# check transactions-7 success: 1 14058DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14059COMMIT WORK; 14060SET @@session.sql_mode = 'traditional'; 14061Warnings: 14062Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14063SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14064INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14065SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14066'', '', 'was inserted' FROM t0_template 14067WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14068ERROR 22012: Division by 0 14069COMMIT; 14070 14071# check transactions-8 success: 1 14072# INFO: Storage engine used for t1 seems to be unable to revert 14073# changes made by the failing statement. 14074SET @@session.sql_mode = ''; 14075Warnings: 14076Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14077SET AUTOCOMMIT= 1; 14078DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14079COMMIT WORK; 14080UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14081 14082# check special-1 success: 1 14083UPDATE t1 SET f_charbig = ''; 14084 14085# check special-2 success: 1 14086UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14088SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14089WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14090INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14091SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14092'just inserted' FROM t0_template 14093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14094CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14095BEGIN 14096UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14097f_charbig = 'updated by trigger' 14098 WHERE f_int1 = new.f_int1; 14099END| 14100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14101SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14102WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14103 14104# check trigger-1 success: 1 14105DROP TRIGGER trg_1; 14106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14107f_int2 = CAST(f_char1 AS SIGNED INT), 14108f_charbig = 'just inserted' 14109 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14110DELETE FROM t0_aux 14111WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14112INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14113SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14114'just inserted' FROM t0_template 14115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14116CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14117BEGIN 14118UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14119f_charbig = 'updated by trigger' 14120 WHERE f_int1 = new.f_int1; 14121END| 14122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14123SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14125 14126# check trigger-2 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 BEFORE 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 = new.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-3 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 UPDATE 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| 14165UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14166WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14167 14168# check trigger-4 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 UPDATE 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 = new.f_int1; 14185END| 14186UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14187WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14188 14189# check trigger-5 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; 14197INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14198SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14199'just inserted' FROM t0_template 14200WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14201CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14202BEGIN 14203UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14204f_charbig = 'updated by trigger' 14205 WHERE f_int1 = - old.f_int1; 14206END| 14207UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14208WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14209 14210# check trigger-6 success: 1 14211DROP TRIGGER trg_1; 14212UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14213f_int2 = CAST(f_char1 AS SIGNED INT), 14214f_charbig = 'just inserted' 14215 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14216DELETE FROM t0_aux 14217WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14218INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14219SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14220'just inserted' FROM t0_template 14221WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14222CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14223BEGIN 14224UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14225f_charbig = 'updated by trigger' 14226 WHERE f_int1 = - old.f_int1; 14227END| 14228DELETE FROM t0_aux 14229WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14230 14231# check trigger-7 success: 1 14232DROP TRIGGER trg_1; 14233UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14234f_int2 = CAST(f_char1 AS SIGNED INT), 14235f_charbig = 'just inserted' 14236 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14237DELETE FROM t0_aux 14238WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14239INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14240SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14241'just inserted' FROM t0_template 14242WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14243CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14244BEGIN 14245UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14246f_charbig = 'updated by trigger' 14247 WHERE f_int1 = - old.f_int1; 14248END| 14249DELETE FROM t0_aux 14250WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14251 14252# check trigger-8 success: 1 14253DROP TRIGGER trg_1; 14254UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14255f_int2 = CAST(f_char1 AS SIGNED INT), 14256f_charbig = 'just inserted' 14257 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14258DELETE FROM t0_aux 14259WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14260DELETE FROM t1 14261WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14262CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14263BEGIN 14264SET new.f_int1 = old.f_int1 + @max_row, 14265new.f_int2 = old.f_int2 - @max_row, 14266new.f_charbig = '####updated per update trigger####'; 14267END| 14268UPDATE t1 14269SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14270f_charbig = '####updated per update statement itself####'; 14271Warnings: 14272Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14273 14274# check trigger-9 success: 1 14275DROP TRIGGER trg_2; 14276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14277f_int2 = CAST(f_char1 AS SIGNED INT), 14278f_charbig = CONCAT('===',f_char1,'==='); 14279Warnings: 14280Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14281CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14282BEGIN 14283SET new.f_int1 = new.f_int1 + @max_row, 14284new.f_int2 = new.f_int2 - @max_row, 14285new.f_charbig = '####updated per update trigger####'; 14286END| 14287UPDATE t1 14288SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14289f_charbig = '####updated per update statement itself####'; 14290Warnings: 14291Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14292 14293# check trigger-10 success: 1 14294DROP TRIGGER trg_2; 14295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14296f_int2 = CAST(f_char1 AS SIGNED INT), 14297f_charbig = CONCAT('===',f_char1,'==='); 14298Warnings: 14299Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14300CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14301BEGIN 14302SET new.f_int1 = @my_max1 + @counter, 14303new.f_int2 = @my_min2 - @counter, 14304new.f_charbig = '####updated per insert trigger####'; 14305SET @counter = @counter + 1; 14306END| 14307SET @counter = 1; 14308SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14309Warnings: 14310Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14312SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14313CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14314WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14315ORDER BY f_int1; 14316DROP TRIGGER trg_3; 14317 14318# check trigger-11 success: 1 14319Warnings: 14320Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14321DELETE FROM t1 14322WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14323AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14324AND f_charbig = '####updated per insert trigger####'; 14325CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14326BEGIN 14327SET new.f_int1 = @my_max1 + @counter, 14328new.f_int2 = @my_min2 - @counter, 14329new.f_charbig = '####updated per insert trigger####'; 14330SET @counter = @counter + 1; 14331END| 14332SET @counter = 1; 14333SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14334Warnings: 14335Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14336INSERT INTO t1 (f_char1, f_char2, f_charbig) 14337SELECT CAST(f_int1 AS CHAR), 14338CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14339WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14340ORDER BY f_int1; 14341DROP TRIGGER trg_3; 14342 14343# check trigger-12 success: 1 14344Warnings: 14345Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14346DELETE FROM t1 14347WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14348AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14349AND f_charbig = '####updated per insert trigger####'; 14350ANALYZE TABLE t1; 14351Table Op Msg_type Msg_text 14352test.t1 analyze status OK 14353test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14354CHECK TABLE t1 EXTENDED; 14355Table Op Msg_type Msg_text 14356test.t1 check status OK 14357test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14358CHECKSUM TABLE t1 EXTENDED; 14359Table Checksum 14360test.t1 <some_value> 14361OPTIMIZE TABLE t1; 14362Table Op Msg_type Msg_text 14363test.t1 optimize status OK 14364test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14365# check layout success: 1 14366REPAIR TABLE t1 EXTENDED; 14367Table Op Msg_type Msg_text 14368test.t1 repair status OK 14369test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14370# check layout success: 1 14371TRUNCATE t1; 14372Warnings: 14373Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14374 14375# check TRUNCATE success: 1 14376# check layout success: 1 14377# End usability test (inc/partition_check.inc) 14378DROP TABLE t1; 14379CREATE TABLE t1 ( 14380f_int1 INTEGER, 14381f_int2 INTEGER, 14382f_char1 CHAR(20), 14383f_char2 CHAR(20), 14384f_charbig VARCHAR(1000) 14385 14386) 14387PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 14388(PARTITION part_3 VALUES IN (-3), 14389PARTITION part_2 VALUES IN (-2), 14390PARTITION part_1 VALUES IN (-1), 14391PARTITION part_N VALUES IN (NULL), 14392PARTITION part0 VALUES IN (0), 14393PARTITION part1 VALUES IN (1), 14394PARTITION part2 VALUES IN (2), 14395PARTITION part3 VALUES IN (3)); 14396Warnings: 14397Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14398INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14399SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14400WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 14401Warnings: 14402Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14403ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 14404Warnings: 14405Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14406INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14407SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14408WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 14409Warnings: 14410Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14411# Start usability test (inc/partition_check.inc) 14412create_command 14413SHOW CREATE TABLE t1; 14414Table Create Table 14415t1 CREATE TABLE `t1` ( 14416 `f_int1` mediumint(9) DEFAULT NULL, 14417 `f_int2` mediumint(9) DEFAULT NULL, 14418 `f_char1` char(20) DEFAULT NULL, 14419 `f_char2` char(20) DEFAULT NULL, 14420 `f_charbig` varchar(1000) DEFAULT NULL 14421) ENGINE=MyISAM DEFAULT CHARSET=latin1 14422/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 14423(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 14424 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 14425 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 14426 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 14427 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 14428 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 14429 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 14430 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 14431 14432unified filelist 14433t1#P#part0.MYD 14434t1#P#part0.MYI 14435t1#P#part1.MYD 14436t1#P#part1.MYI 14437t1#P#part2.MYD 14438t1#P#part2.MYI 14439t1#P#part3.MYD 14440t1#P#part3.MYI 14441t1#P#part_1.MYD 14442t1#P#part_1.MYI 14443t1#P#part_2.MYD 14444t1#P#part_2.MYI 14445t1#P#part_3.MYD 14446t1#P#part_3.MYI 14447t1#P#part_N.MYD 14448t1#P#part_N.MYI 14449t1.frm 14450t1.par 14451 14452# check prerequisites-1 success: 1 14453# check COUNT(*) success: 1 14454# check MIN/MAX(f_int1) success: 1 14455# check MIN/MAX(f_int2) success: 1 14456INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14457SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14458CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14459WHERE f_int1 IN (2,3); 14460# check prerequisites-3 success: 1 14461DELETE FROM t1 WHERE f_charbig = 'delete me'; 14462# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 14463# check read via f_int1 success: 1 14464# check read via f_int2 success: 1 14465 14466# check multiple-1 success: 1 14467DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14468 14469# check multiple-2 success: 1 14470INSERT INTO t1 SELECT * FROM t0_template 14471WHERE MOD(f_int1,3) = 0; 14472 14473# check multiple-3 success: 1 14474UPDATE t1 SET f_int1 = f_int1 + @max_row 14475WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14476AND @max_row_div2 + @max_row_div4; 14477 14478# check multiple-4 success: 1 14479DELETE FROM t1 14480WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14481AND @max_row_div2 + @max_row_div4 + @max_row; 14482 14483# check multiple-5 success: 1 14484SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14485INSERT INTO t1 14486SET f_int1 = @cur_value , f_int2 = @cur_value, 14487f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14488f_charbig = '#SINGLE#'; 14489 14490# check single-1 success: 1 14491SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14492INSERT INTO t1 14493SET f_int1 = @cur_value , f_int2 = @cur_value, 14494f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14495f_charbig = '#SINGLE#'; 14496 14497# check single-2 success: 1 14498SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14499SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14500UPDATE t1 SET f_int1 = @cur_value2 14501WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14502 14503# check single-3 success: 1 14504SET @cur_value1= -1; 14505SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14506UPDATE t1 SET f_int1 = @cur_value1 14507WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14508 14509# check single-4 success: 1 14510SELECT MAX(f_int1) INTO @cur_value FROM t1; 14511DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14512 14513# check single-5 success: 1 14514DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14515 14516# check single-6 success: 1 14517INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14518Warnings: 14519Warning 1264 Out of range value for column 'f_int1' at row 1 14520Warning 1264 Out of range value for column 'f_int2' at row 1 14521 14522# check single-7 success: 1 14523DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 14524DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14525INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14526f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14527f_charbig = '#NULL#'; 14528INSERT INTO t1 14529SET f_int1 = NULL , f_int2 = -@max_row, 14530f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14531f_charbig = '#NULL#'; 14532# check null success: 1 14533 14534# check null-1 success: 1 14535UPDATE t1 SET f_int1 = -@max_row 14536WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14537AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14538 14539# check null-2 success: 1 14540UPDATE t1 SET f_int1 = NULL 14541WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14542AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14543 14544# check null-3 success: 1 14545DELETE FROM t1 14546WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14547AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14548 14549# check null-4 success: 1 14550DELETE FROM t1 14551WHERE f_int1 = 0 AND f_int2 = 0 14552AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14553AND f_charbig = '#NULL#'; 14554SET AUTOCOMMIT= 0; 14555INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14556SELECT f_int1, f_int1, '', '', 'was inserted' 14557FROM t0_template source_tab 14558WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14559 14560# check transactions-1 success: 1 14561COMMIT WORK; 14562 14563# check transactions-2 success: 1 14564ROLLBACK WORK; 14565 14566# check transactions-3 success: 1 14567DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14568COMMIT WORK; 14569ROLLBACK WORK; 14570 14571# check transactions-4 success: 1 14572INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14573SELECT f_int1, f_int1, '', '', 'was inserted' 14574FROM t0_template source_tab 14575WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14576 14577# check transactions-5 success: 1 14578ROLLBACK WORK; 14579Warnings: 14580Warning 1196 Some non-transactional changed tables couldn't be rolled back 14581 14582# check transactions-6 success: 1 14583# INFO: Storage engine used for t1 seems to be not transactional. 14584COMMIT; 14585 14586# check transactions-7 success: 1 14587DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14588COMMIT WORK; 14589SET @@session.sql_mode = 'traditional'; 14590Warnings: 14591Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14592SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14593INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14594SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14595'', '', 'was inserted' FROM t0_template 14596WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14597ERROR 22012: Division by 0 14598COMMIT; 14599 14600# check transactions-8 success: 1 14601# INFO: Storage engine used for t1 seems to be unable to revert 14602# changes made by the failing statement. 14603SET @@session.sql_mode = ''; 14604Warnings: 14605Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14606SET AUTOCOMMIT= 1; 14607DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14608COMMIT WORK; 14609UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14610 14611# check special-1 success: 1 14612UPDATE t1 SET f_charbig = ''; 14613 14614# check special-2 success: 1 14615UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14616INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14617SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14618WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14619INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14620SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14621'just inserted' FROM t0_template 14622WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14623CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14624BEGIN 14625UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14626f_charbig = 'updated by trigger' 14627 WHERE f_int1 = new.f_int1; 14628END| 14629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14630SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14631WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14632 14633# check trigger-1 success: 1 14634DROP TRIGGER trg_1; 14635UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14636f_int2 = CAST(f_char1 AS SIGNED INT), 14637f_charbig = 'just inserted' 14638 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14639DELETE FROM t0_aux 14640WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14641INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14642SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14643'just inserted' FROM t0_template 14644WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14645CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14646BEGIN 14647UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14648f_charbig = 'updated by trigger' 14649 WHERE f_int1 = new.f_int1; 14650END| 14651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14652SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14654 14655# check trigger-2 success: 1 14656DROP TRIGGER trg_1; 14657UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14658f_int2 = CAST(f_char1 AS SIGNED INT), 14659f_charbig = 'just inserted' 14660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14661DELETE FROM t0_aux 14662WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14663INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14664SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14665'just inserted' FROM t0_template 14666WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14667CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14668BEGIN 14669UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14670f_charbig = 'updated by trigger' 14671 WHERE f_int1 = new.f_int1; 14672END| 14673UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14674WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14675 14676# check trigger-3 success: 1 14677DROP TRIGGER trg_1; 14678UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14679f_int2 = CAST(f_char1 AS SIGNED INT), 14680f_charbig = 'just inserted' 14681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14682DELETE FROM t0_aux 14683WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14684INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14685SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14686'just inserted' FROM t0_template 14687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14688CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14689BEGIN 14690UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14691f_charbig = 'updated by trigger' 14692 WHERE f_int1 = - old.f_int1; 14693END| 14694UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14695WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14696 14697# check trigger-4 success: 1 14698DROP TRIGGER trg_1; 14699UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14700f_int2 = CAST(f_char1 AS SIGNED INT), 14701f_charbig = 'just inserted' 14702 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14703DELETE FROM t0_aux 14704WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14705INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14706SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14707'just inserted' FROM t0_template 14708WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14709CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14710BEGIN 14711UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14712f_charbig = 'updated by trigger' 14713 WHERE f_int1 = new.f_int1; 14714END| 14715UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14716WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14717 14718# check trigger-5 success: 1 14719DROP TRIGGER trg_1; 14720UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14721f_int2 = CAST(f_char1 AS SIGNED INT), 14722f_charbig = 'just inserted' 14723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14724DELETE FROM t0_aux 14725WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14726INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14727SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14728'just inserted' FROM t0_template 14729WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14730CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14731BEGIN 14732UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14733f_charbig = 'updated by trigger' 14734 WHERE f_int1 = - old.f_int1; 14735END| 14736UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14737WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14738 14739# check trigger-6 success: 1 14740DROP TRIGGER trg_1; 14741UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14742f_int2 = CAST(f_char1 AS SIGNED INT), 14743f_charbig = 'just inserted' 14744 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14745DELETE FROM t0_aux 14746WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14747INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14748SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14749'just inserted' FROM t0_template 14750WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14751CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14752BEGIN 14753UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14754f_charbig = 'updated by trigger' 14755 WHERE f_int1 = - old.f_int1; 14756END| 14757DELETE FROM t0_aux 14758WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14759 14760# check trigger-7 success: 1 14761DROP TRIGGER trg_1; 14762UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14763f_int2 = CAST(f_char1 AS SIGNED INT), 14764f_charbig = 'just inserted' 14765 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14766DELETE FROM t0_aux 14767WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14768INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14769SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14770'just inserted' FROM t0_template 14771WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14772CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14773BEGIN 14774UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14775f_charbig = 'updated by trigger' 14776 WHERE f_int1 = - old.f_int1; 14777END| 14778DELETE FROM t0_aux 14779WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14780 14781# check trigger-8 success: 1 14782DROP TRIGGER trg_1; 14783UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14784f_int2 = CAST(f_char1 AS SIGNED INT), 14785f_charbig = 'just inserted' 14786 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14787DELETE FROM t0_aux 14788WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14789DELETE FROM t1 14790WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14791CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14792BEGIN 14793SET new.f_int1 = old.f_int1 + @max_row, 14794new.f_int2 = old.f_int2 - @max_row, 14795new.f_charbig = '####updated per update trigger####'; 14796END| 14797UPDATE t1 14798SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14799f_charbig = '####updated per update statement itself####'; 14800Warnings: 14801Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14802 14803# check trigger-9 success: 1 14804DROP TRIGGER trg_2; 14805UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14806f_int2 = CAST(f_char1 AS SIGNED INT), 14807f_charbig = CONCAT('===',f_char1,'==='); 14808Warnings: 14809Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14810CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14811BEGIN 14812SET new.f_int1 = new.f_int1 + @max_row, 14813new.f_int2 = new.f_int2 - @max_row, 14814new.f_charbig = '####updated per update trigger####'; 14815END| 14816UPDATE t1 14817SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14818f_charbig = '####updated per update statement itself####'; 14819Warnings: 14820Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14821 14822# check trigger-10 success: 1 14823DROP TRIGGER trg_2; 14824UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14825f_int2 = CAST(f_char1 AS SIGNED INT), 14826f_charbig = CONCAT('===',f_char1,'==='); 14827Warnings: 14828Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14829CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14830BEGIN 14831SET new.f_int1 = @my_max1 + @counter, 14832new.f_int2 = @my_min2 - @counter, 14833new.f_charbig = '####updated per insert trigger####'; 14834SET @counter = @counter + 1; 14835END| 14836SET @counter = 1; 14837SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14838Warnings: 14839Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14841SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14842CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14843WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14844ORDER BY f_int1; 14845DROP TRIGGER trg_3; 14846 14847# check trigger-11 success: 1 14848Warnings: 14849Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14850DELETE FROM t1 14851WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14852AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14853AND f_charbig = '####updated per insert trigger####'; 14854CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14855BEGIN 14856SET new.f_int1 = @my_max1 + @counter, 14857new.f_int2 = @my_min2 - @counter, 14858new.f_charbig = '####updated per insert trigger####'; 14859SET @counter = @counter + 1; 14860END| 14861SET @counter = 1; 14862SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14863Warnings: 14864Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14865INSERT INTO t1 (f_char1, f_char2, f_charbig) 14866SELECT CAST(f_int1 AS CHAR), 14867CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14869ORDER BY f_int1; 14870DROP TRIGGER trg_3; 14871 14872# check trigger-12 success: 1 14873Warnings: 14874Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14875DELETE FROM t1 14876WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14877AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14878AND f_charbig = '####updated per insert trigger####'; 14879ANALYZE TABLE t1; 14880Table Op Msg_type Msg_text 14881test.t1 analyze status OK 14882test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14883CHECK TABLE t1 EXTENDED; 14884Table Op Msg_type Msg_text 14885test.t1 check status OK 14886test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14887CHECKSUM TABLE t1 EXTENDED; 14888Table Checksum 14889test.t1 <some_value> 14890OPTIMIZE TABLE t1; 14891Table Op Msg_type Msg_text 14892test.t1 optimize status OK 14893test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14894# check layout success: 1 14895REPAIR TABLE t1 EXTENDED; 14896Table Op Msg_type Msg_text 14897test.t1 repair status OK 14898test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14899# check layout success: 1 14900TRUNCATE t1; 14901Warnings: 14902Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14903 14904# check TRUNCATE success: 1 14905# check layout success: 1 14906# End usability test (inc/partition_check.inc) 14907DROP TABLE t1; 14908CREATE TABLE t1 ( 14909f_int1 INTEGER, 14910f_int2 INTEGER, 14911f_char1 CHAR(20), 14912f_char2 CHAR(20), 14913f_charbig VARCHAR(1000) 14914 14915) 14916PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 14917(PARTITION parta VALUES LESS THAN (0), 14918PARTITION partb VALUES LESS THAN (5), 14919PARTITION partc VALUES LESS THAN (10), 14920PARTITION partd VALUES LESS THAN (10 + 5), 14921PARTITION parte VALUES LESS THAN (20), 14922PARTITION partf VALUES LESS THAN (2147483646)); 14923Warnings: 14924Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14925INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14926SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14927WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 14928Warnings: 14929Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14930ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 14931Warnings: 14932Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14933INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14934SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14935WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 14936Warnings: 14937Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14938# Start usability test (inc/partition_check.inc) 14939create_command 14940SHOW CREATE TABLE t1; 14941Table Create Table 14942t1 CREATE TABLE `t1` ( 14943 `f_int1` mediumint(9) DEFAULT NULL, 14944 `f_int2` mediumint(9) DEFAULT NULL, 14945 `f_char1` char(20) DEFAULT NULL, 14946 `f_char2` char(20) DEFAULT NULL, 14947 `f_charbig` varchar(1000) DEFAULT NULL 14948) ENGINE=MyISAM DEFAULT CHARSET=latin1 14949/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 14950(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 14951 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 14952 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 14953 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 14954 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 14955 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 14956 14957unified filelist 14958t1#P#parta.MYD 14959t1#P#parta.MYI 14960t1#P#partb.MYD 14961t1#P#partb.MYI 14962t1#P#partc.MYD 14963t1#P#partc.MYI 14964t1#P#partd.MYD 14965t1#P#partd.MYI 14966t1#P#parte.MYD 14967t1#P#parte.MYI 14968t1#P#partf.MYD 14969t1#P#partf.MYI 14970t1.frm 14971t1.par 14972 14973# check prerequisites-1 success: 1 14974# check COUNT(*) success: 1 14975# check MIN/MAX(f_int1) success: 1 14976# check MIN/MAX(f_int2) success: 1 14977INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14978SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14979CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14980WHERE f_int1 IN (2,3); 14981# check prerequisites-3 success: 1 14982DELETE FROM t1 WHERE f_charbig = 'delete me'; 14983# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 14984# check read via f_int1 success: 1 14985# check read via f_int2 success: 1 14986 14987# check multiple-1 success: 1 14988DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14989 14990# check multiple-2 success: 1 14991INSERT INTO t1 SELECT * FROM t0_template 14992WHERE MOD(f_int1,3) = 0; 14993 14994# check multiple-3 success: 1 14995UPDATE t1 SET f_int1 = f_int1 + @max_row 14996WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14997AND @max_row_div2 + @max_row_div4; 14998 14999# check multiple-4 success: 1 15000DELETE FROM t1 15001WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15002AND @max_row_div2 + @max_row_div4 + @max_row; 15003 15004# check multiple-5 success: 1 15005SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15006INSERT INTO t1 15007SET f_int1 = @cur_value , f_int2 = @cur_value, 15008f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15009f_charbig = '#SINGLE#'; 15010 15011# check single-1 success: 1 15012SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15013INSERT INTO t1 15014SET f_int1 = @cur_value , f_int2 = @cur_value, 15015f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15016f_charbig = '#SINGLE#'; 15017 15018# check single-2 success: 1 15019SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15020SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15021UPDATE t1 SET f_int1 = @cur_value2 15022WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15023 15024# check single-3 success: 1 15025SET @cur_value1= -1; 15026SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15027UPDATE t1 SET f_int1 = @cur_value1 15028WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15029 15030# check single-4 success: 1 15031SELECT MAX(f_int1) INTO @cur_value FROM t1; 15032DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15033 15034# check single-5 success: 1 15035DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15036 15037# check single-6 success: 1 15038INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15039Warnings: 15040Warning 1264 Out of range value for column 'f_int1' at row 1 15041Warning 1264 Out of range value for column 'f_int2' at row 1 15042 15043# check single-7 success: 1 15044DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15045DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15046INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15047f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15048f_charbig = '#NULL#'; 15049INSERT INTO t1 15050SET f_int1 = NULL , f_int2 = -@max_row, 15051f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15052f_charbig = '#NULL#'; 15053# check null success: 1 15054 15055# check null-1 success: 1 15056UPDATE t1 SET f_int1 = -@max_row 15057WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15058AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15059 15060# check null-2 success: 1 15061UPDATE t1 SET f_int1 = NULL 15062WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15063AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15064 15065# check null-3 success: 1 15066DELETE FROM t1 15067WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15068AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15069 15070# check null-4 success: 1 15071DELETE FROM t1 15072WHERE f_int1 = 0 AND f_int2 = 0 15073AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15074AND f_charbig = '#NULL#'; 15075SET AUTOCOMMIT= 0; 15076INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15077SELECT f_int1, f_int1, '', '', 'was inserted' 15078FROM t0_template source_tab 15079WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15080 15081# check transactions-1 success: 1 15082COMMIT WORK; 15083 15084# check transactions-2 success: 1 15085ROLLBACK WORK; 15086 15087# check transactions-3 success: 1 15088DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15089COMMIT WORK; 15090ROLLBACK WORK; 15091 15092# check transactions-4 success: 1 15093INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15094SELECT f_int1, f_int1, '', '', 'was inserted' 15095FROM t0_template source_tab 15096WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15097 15098# check transactions-5 success: 1 15099ROLLBACK WORK; 15100Warnings: 15101Warning 1196 Some non-transactional changed tables couldn't be rolled back 15102 15103# check transactions-6 success: 1 15104# INFO: Storage engine used for t1 seems to be not transactional. 15105COMMIT; 15106 15107# check transactions-7 success: 1 15108DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15109COMMIT WORK; 15110SET @@session.sql_mode = 'traditional'; 15111Warnings: 15112Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15113SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15114INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15115SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15116'', '', 'was inserted' FROM t0_template 15117WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15118ERROR 22012: Division by 0 15119COMMIT; 15120 15121# check transactions-8 success: 1 15122# INFO: Storage engine used for t1 seems to be unable to revert 15123# changes made by the failing statement. 15124SET @@session.sql_mode = ''; 15125Warnings: 15126Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15127SET AUTOCOMMIT= 1; 15128DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15129COMMIT WORK; 15130UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15131 15132# check special-1 success: 1 15133UPDATE t1 SET f_charbig = ''; 15134 15135# check special-2 success: 1 15136UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15137INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15138SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15139WHERE 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 INSERT 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 = new.f_int1; 15149END| 15150INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15151SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15152WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15153 15154# check trigger-1 success: 1 15155DROP TRIGGER trg_1; 15156UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15157f_int2 = CAST(f_char1 AS SIGNED INT), 15158f_charbig = 'just inserted' 15159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15160DELETE FROM t0_aux 15161WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15162INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15163SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15164'just inserted' FROM t0_template 15165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15166CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15167BEGIN 15168UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15169f_charbig = 'updated by trigger' 15170 WHERE f_int1 = new.f_int1; 15171END| 15172INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15173SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15174WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15175 15176# check trigger-2 success: 1 15177DROP TRIGGER trg_1; 15178UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15179f_int2 = CAST(f_char1 AS SIGNED INT), 15180f_charbig = 'just inserted' 15181 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15182DELETE FROM t0_aux 15183WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15185SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15186'just inserted' FROM t0_template 15187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15188CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15189BEGIN 15190UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15191f_charbig = 'updated by trigger' 15192 WHERE f_int1 = new.f_int1; 15193END| 15194UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15195WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15196 15197# check trigger-3 success: 1 15198DROP TRIGGER trg_1; 15199UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15200f_int2 = CAST(f_char1 AS SIGNED INT), 15201f_charbig = 'just inserted' 15202 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15203DELETE FROM t0_aux 15204WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15205INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15206SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15207'just inserted' FROM t0_template 15208WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15209CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15210BEGIN 15211UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15212f_charbig = 'updated by trigger' 15213 WHERE f_int1 = - old.f_int1; 15214END| 15215UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15216WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15217 15218# check trigger-4 success: 1 15219DROP TRIGGER trg_1; 15220UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15221f_int2 = CAST(f_char1 AS SIGNED INT), 15222f_charbig = 'just inserted' 15223 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15224DELETE FROM t0_aux 15225WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15226INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15227SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15228'just inserted' FROM t0_template 15229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15230CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15231BEGIN 15232UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15233f_charbig = 'updated by trigger' 15234 WHERE f_int1 = new.f_int1; 15235END| 15236UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15237WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15238 15239# check trigger-5 success: 1 15240DROP TRIGGER trg_1; 15241UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15242f_int2 = CAST(f_char1 AS SIGNED INT), 15243f_charbig = 'just inserted' 15244 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15245DELETE FROM t0_aux 15246WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15247INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15248SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15249'just inserted' FROM t0_template 15250WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15251CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15252BEGIN 15253UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15254f_charbig = 'updated by trigger' 15255 WHERE f_int1 = - old.f_int1; 15256END| 15257UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15258WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15259 15260# check trigger-6 success: 1 15261DROP TRIGGER trg_1; 15262UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15263f_int2 = CAST(f_char1 AS SIGNED INT), 15264f_charbig = 'just inserted' 15265 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15266DELETE FROM t0_aux 15267WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15268INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15269SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15270'just inserted' FROM t0_template 15271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15272CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15273BEGIN 15274UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15275f_charbig = 'updated by trigger' 15276 WHERE f_int1 = - old.f_int1; 15277END| 15278DELETE FROM t0_aux 15279WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15280 15281# check trigger-7 success: 1 15282DROP TRIGGER trg_1; 15283UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15284f_int2 = CAST(f_char1 AS SIGNED INT), 15285f_charbig = 'just inserted' 15286 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15287DELETE FROM t0_aux 15288WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15289INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15290SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15291'just inserted' FROM t0_template 15292WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15293CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15294BEGIN 15295UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15296f_charbig = 'updated by trigger' 15297 WHERE f_int1 = - old.f_int1; 15298END| 15299DELETE FROM t0_aux 15300WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15301 15302# check trigger-8 success: 1 15303DROP TRIGGER trg_1; 15304UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15305f_int2 = CAST(f_char1 AS SIGNED INT), 15306f_charbig = 'just inserted' 15307 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15308DELETE FROM t0_aux 15309WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15310DELETE FROM t1 15311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15312CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15313BEGIN 15314SET new.f_int1 = old.f_int1 + @max_row, 15315new.f_int2 = old.f_int2 - @max_row, 15316new.f_charbig = '####updated per update trigger####'; 15317END| 15318UPDATE t1 15319SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15320f_charbig = '####updated per update statement itself####'; 15321Warnings: 15322Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15323 15324# check trigger-9 success: 1 15325DROP TRIGGER trg_2; 15326UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15327f_int2 = CAST(f_char1 AS SIGNED INT), 15328f_charbig = CONCAT('===',f_char1,'==='); 15329Warnings: 15330Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15331CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15332BEGIN 15333SET new.f_int1 = new.f_int1 + @max_row, 15334new.f_int2 = new.f_int2 - @max_row, 15335new.f_charbig = '####updated per update trigger####'; 15336END| 15337UPDATE t1 15338SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15339f_charbig = '####updated per update statement itself####'; 15340Warnings: 15341Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15342 15343# check trigger-10 success: 1 15344DROP TRIGGER trg_2; 15345UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15346f_int2 = CAST(f_char1 AS SIGNED INT), 15347f_charbig = CONCAT('===',f_char1,'==='); 15348Warnings: 15349Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15350CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15351BEGIN 15352SET new.f_int1 = @my_max1 + @counter, 15353new.f_int2 = @my_min2 - @counter, 15354new.f_charbig = '####updated per insert trigger####'; 15355SET @counter = @counter + 1; 15356END| 15357SET @counter = 1; 15358SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15359Warnings: 15360Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15361INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15362SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15363CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15365ORDER BY f_int1; 15366DROP TRIGGER trg_3; 15367 15368# check trigger-11 success: 1 15369Warnings: 15370Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15371DELETE FROM t1 15372WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15373AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15374AND f_charbig = '####updated per insert trigger####'; 15375CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15376BEGIN 15377SET new.f_int1 = @my_max1 + @counter, 15378new.f_int2 = @my_min2 - @counter, 15379new.f_charbig = '####updated per insert trigger####'; 15380SET @counter = @counter + 1; 15381END| 15382SET @counter = 1; 15383SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15384Warnings: 15385Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15386INSERT INTO t1 (f_char1, f_char2, f_charbig) 15387SELECT CAST(f_int1 AS CHAR), 15388CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15389WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15390ORDER BY f_int1; 15391DROP TRIGGER trg_3; 15392 15393# check trigger-12 success: 1 15394Warnings: 15395Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15396DELETE FROM t1 15397WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15398AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15399AND f_charbig = '####updated per insert trigger####'; 15400ANALYZE TABLE t1; 15401Table Op Msg_type Msg_text 15402test.t1 analyze status OK 15403test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15404CHECK TABLE t1 EXTENDED; 15405Table Op Msg_type Msg_text 15406test.t1 check status OK 15407test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15408CHECKSUM TABLE t1 EXTENDED; 15409Table Checksum 15410test.t1 <some_value> 15411OPTIMIZE TABLE t1; 15412Table Op Msg_type Msg_text 15413test.t1 optimize status OK 15414test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15415# check layout success: 1 15416REPAIR TABLE t1 EXTENDED; 15417Table Op Msg_type Msg_text 15418test.t1 repair status OK 15419test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15420# check layout success: 1 15421TRUNCATE t1; 15422Warnings: 15423Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15424 15425# check TRUNCATE success: 1 15426# check layout success: 1 15427# End usability test (inc/partition_check.inc) 15428DROP TABLE t1; 15429CREATE TABLE t1 ( 15430f_int1 INTEGER, 15431f_int2 INTEGER, 15432f_char1 CHAR(20), 15433f_char2 CHAR(20), 15434f_charbig VARCHAR(1000) 15435 15436) 15437PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 15438(PARTITION parta VALUES LESS THAN (0), 15439PARTITION partb VALUES LESS THAN (5), 15440PARTITION partc VALUES LESS THAN (10), 15441PARTITION partd VALUES LESS THAN (2147483646)); 15442Warnings: 15443Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15444INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15445SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15446WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 15447Warnings: 15448Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15449ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 15450Warnings: 15451Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15452INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15453SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15454WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 15455Warnings: 15456Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15457# Start usability test (inc/partition_check.inc) 15458create_command 15459SHOW CREATE TABLE t1; 15460Table Create Table 15461t1 CREATE TABLE `t1` ( 15462 `f_int1` mediumint(9) DEFAULT NULL, 15463 `f_int2` mediumint(9) DEFAULT NULL, 15464 `f_char1` char(20) DEFAULT NULL, 15465 `f_char2` char(20) DEFAULT NULL, 15466 `f_charbig` varchar(1000) DEFAULT NULL 15467) ENGINE=MyISAM DEFAULT CHARSET=latin1 15468/*!50100 PARTITION BY RANGE (f_int1) 15469SUBPARTITION BY HASH (f_int2) 15470SUBPARTITIONS 2 15471(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 15472 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 15473 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 15474 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 15475 15476unified filelist 15477t1#P#parta#SP#partasp0.MYD 15478t1#P#parta#SP#partasp0.MYI 15479t1#P#parta#SP#partasp1.MYD 15480t1#P#parta#SP#partasp1.MYI 15481t1#P#partb#SP#partbsp0.MYD 15482t1#P#partb#SP#partbsp0.MYI 15483t1#P#partb#SP#partbsp1.MYD 15484t1#P#partb#SP#partbsp1.MYI 15485t1#P#partc#SP#partcsp0.MYD 15486t1#P#partc#SP#partcsp0.MYI 15487t1#P#partc#SP#partcsp1.MYD 15488t1#P#partc#SP#partcsp1.MYI 15489t1#P#partd#SP#partdsp0.MYD 15490t1#P#partd#SP#partdsp0.MYI 15491t1#P#partd#SP#partdsp1.MYD 15492t1#P#partd#SP#partdsp1.MYI 15493t1.frm 15494t1.par 15495 15496# check prerequisites-1 success: 1 15497# check COUNT(*) success: 1 15498# check MIN/MAX(f_int1) success: 1 15499# check MIN/MAX(f_int2) success: 1 15500INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15501SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15502CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15503WHERE f_int1 IN (2,3); 15504# check prerequisites-3 success: 1 15505DELETE FROM t1 WHERE f_charbig = 'delete me'; 15506# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 15507# check read via f_int1 success: 1 15508# check read via f_int2 success: 1 15509 15510# check multiple-1 success: 1 15511DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15512 15513# check multiple-2 success: 1 15514INSERT INTO t1 SELECT * FROM t0_template 15515WHERE MOD(f_int1,3) = 0; 15516 15517# check multiple-3 success: 1 15518UPDATE t1 SET f_int1 = f_int1 + @max_row 15519WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15520AND @max_row_div2 + @max_row_div4; 15521 15522# check multiple-4 success: 1 15523DELETE FROM t1 15524WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15525AND @max_row_div2 + @max_row_div4 + @max_row; 15526 15527# check multiple-5 success: 1 15528SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15529INSERT INTO t1 15530SET f_int1 = @cur_value , f_int2 = @cur_value, 15531f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15532f_charbig = '#SINGLE#'; 15533 15534# check single-1 success: 1 15535SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15536INSERT INTO t1 15537SET f_int1 = @cur_value , f_int2 = @cur_value, 15538f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15539f_charbig = '#SINGLE#'; 15540 15541# check single-2 success: 1 15542SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15543SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15544UPDATE t1 SET f_int1 = @cur_value2 15545WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15546 15547# check single-3 success: 1 15548SET @cur_value1= -1; 15549SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15550UPDATE t1 SET f_int1 = @cur_value1 15551WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15552 15553# check single-4 success: 1 15554SELECT MAX(f_int1) INTO @cur_value FROM t1; 15555DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15556 15557# check single-5 success: 1 15558DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15559 15560# check single-6 success: 1 15561INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15562Warnings: 15563Warning 1264 Out of range value for column 'f_int1' at row 1 15564Warning 1264 Out of range value for column 'f_int2' at row 1 15565 15566# check single-7 success: 1 15567DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15568DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15569INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15570f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15571f_charbig = '#NULL#'; 15572INSERT INTO t1 15573SET f_int1 = NULL , f_int2 = -@max_row, 15574f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15575f_charbig = '#NULL#'; 15576# check null success: 1 15577 15578# check null-1 success: 1 15579UPDATE t1 SET f_int1 = -@max_row 15580WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15581AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15582 15583# check null-2 success: 1 15584UPDATE t1 SET f_int1 = NULL 15585WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15586AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15587 15588# check null-3 success: 1 15589DELETE FROM t1 15590WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15591AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15592 15593# check null-4 success: 1 15594DELETE FROM t1 15595WHERE f_int1 = 0 AND f_int2 = 0 15596AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15597AND f_charbig = '#NULL#'; 15598SET AUTOCOMMIT= 0; 15599INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15600SELECT f_int1, f_int1, '', '', 'was inserted' 15601FROM t0_template source_tab 15602WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15603 15604# check transactions-1 success: 1 15605COMMIT WORK; 15606 15607# check transactions-2 success: 1 15608ROLLBACK WORK; 15609 15610# check transactions-3 success: 1 15611DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15612COMMIT WORK; 15613ROLLBACK WORK; 15614 15615# check transactions-4 success: 1 15616INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15617SELECT f_int1, f_int1, '', '', 'was inserted' 15618FROM t0_template source_tab 15619WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15620 15621# check transactions-5 success: 1 15622ROLLBACK WORK; 15623Warnings: 15624Warning 1196 Some non-transactional changed tables couldn't be rolled back 15625 15626# check transactions-6 success: 1 15627# INFO: Storage engine used for t1 seems to be not transactional. 15628COMMIT; 15629 15630# check transactions-7 success: 1 15631DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15632COMMIT WORK; 15633SET @@session.sql_mode = 'traditional'; 15634Warnings: 15635Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15636SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15637INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15638SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15639'', '', 'was inserted' FROM t0_template 15640WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15641ERROR 22012: Division by 0 15642COMMIT; 15643 15644# check transactions-8 success: 1 15645# INFO: Storage engine used for t1 seems to be unable to revert 15646# changes made by the failing statement. 15647SET @@session.sql_mode = ''; 15648Warnings: 15649Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15650SET AUTOCOMMIT= 1; 15651DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15652COMMIT WORK; 15653UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15654 15655# check special-1 success: 1 15656UPDATE t1 SET f_charbig = ''; 15657 15658# check special-2 success: 1 15659UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15660INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15661SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15662WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15663INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15664SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15665'just inserted' FROM t0_template 15666WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15667CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15668BEGIN 15669UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15670f_charbig = 'updated by trigger' 15671 WHERE f_int1 = new.f_int1; 15672END| 15673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15674SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15676 15677# check trigger-1 success: 1 15678DROP TRIGGER trg_1; 15679UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15680f_int2 = CAST(f_char1 AS SIGNED INT), 15681f_charbig = 'just inserted' 15682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15683DELETE FROM t0_aux 15684WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15685INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15686SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15687'just inserted' FROM t0_template 15688WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15689CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15690BEGIN 15691UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15692f_charbig = 'updated by trigger' 15693 WHERE f_int1 = new.f_int1; 15694END| 15695INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15696SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15698 15699# check trigger-2 success: 1 15700DROP TRIGGER trg_1; 15701UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15702f_int2 = CAST(f_char1 AS SIGNED INT), 15703f_charbig = 'just inserted' 15704 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15705DELETE FROM t0_aux 15706WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15707INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15708SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15709'just inserted' FROM t0_template 15710WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15711CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15712BEGIN 15713UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15714f_charbig = 'updated by trigger' 15715 WHERE f_int1 = new.f_int1; 15716END| 15717UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15718WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15719 15720# check trigger-3 success: 1 15721DROP TRIGGER trg_1; 15722UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15723f_int2 = CAST(f_char1 AS SIGNED INT), 15724f_charbig = 'just inserted' 15725 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15726DELETE FROM t0_aux 15727WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15728INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15729SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15730'just inserted' FROM t0_template 15731WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15732CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15733BEGIN 15734UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15735f_charbig = 'updated by trigger' 15736 WHERE f_int1 = - old.f_int1; 15737END| 15738UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15739WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15740 15741# check trigger-4 success: 1 15742DROP TRIGGER trg_1; 15743UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15744f_int2 = CAST(f_char1 AS SIGNED INT), 15745f_charbig = 'just inserted' 15746 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15747DELETE FROM t0_aux 15748WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15749INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15750SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15751'just inserted' FROM t0_template 15752WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15753CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15754BEGIN 15755UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15756f_charbig = 'updated by trigger' 15757 WHERE f_int1 = new.f_int1; 15758END| 15759UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15760WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15761 15762# check trigger-5 success: 1 15763DROP TRIGGER trg_1; 15764UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15765f_int2 = CAST(f_char1 AS SIGNED INT), 15766f_charbig = 'just inserted' 15767 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15768DELETE FROM t0_aux 15769WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15770INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15771SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15772'just inserted' FROM t0_template 15773WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15774CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15775BEGIN 15776UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15777f_charbig = 'updated by trigger' 15778 WHERE f_int1 = - old.f_int1; 15779END| 15780UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15781WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15782 15783# check trigger-6 success: 1 15784DROP TRIGGER trg_1; 15785UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15786f_int2 = CAST(f_char1 AS SIGNED INT), 15787f_charbig = 'just inserted' 15788 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15789DELETE FROM t0_aux 15790WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15791INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15792SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15793'just inserted' FROM t0_template 15794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15795CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15796BEGIN 15797UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15798f_charbig = 'updated by trigger' 15799 WHERE f_int1 = - old.f_int1; 15800END| 15801DELETE FROM t0_aux 15802WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15803 15804# check trigger-7 success: 1 15805DROP TRIGGER trg_1; 15806UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15807f_int2 = CAST(f_char1 AS SIGNED INT), 15808f_charbig = 'just inserted' 15809 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15810DELETE FROM t0_aux 15811WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15812INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15813SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15814'just inserted' FROM t0_template 15815WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15816CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15817BEGIN 15818UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15819f_charbig = 'updated by trigger' 15820 WHERE f_int1 = - old.f_int1; 15821END| 15822DELETE FROM t0_aux 15823WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15824 15825# check trigger-8 success: 1 15826DROP TRIGGER trg_1; 15827UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15828f_int2 = CAST(f_char1 AS SIGNED INT), 15829f_charbig = 'just inserted' 15830 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15831DELETE FROM t0_aux 15832WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15833DELETE FROM t1 15834WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15835CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15836BEGIN 15837SET new.f_int1 = old.f_int1 + @max_row, 15838new.f_int2 = old.f_int2 - @max_row, 15839new.f_charbig = '####updated per update trigger####'; 15840END| 15841UPDATE t1 15842SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15843f_charbig = '####updated per update statement itself####'; 15844Warnings: 15845Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15846 15847# check trigger-9 success: 1 15848DROP TRIGGER trg_2; 15849UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15850f_int2 = CAST(f_char1 AS SIGNED INT), 15851f_charbig = CONCAT('===',f_char1,'==='); 15852Warnings: 15853Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15854CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15855BEGIN 15856SET new.f_int1 = new.f_int1 + @max_row, 15857new.f_int2 = new.f_int2 - @max_row, 15858new.f_charbig = '####updated per update trigger####'; 15859END| 15860UPDATE t1 15861SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15862f_charbig = '####updated per update statement itself####'; 15863Warnings: 15864Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15865 15866# check trigger-10 success: 1 15867DROP TRIGGER trg_2; 15868UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15869f_int2 = CAST(f_char1 AS SIGNED INT), 15870f_charbig = CONCAT('===',f_char1,'==='); 15871Warnings: 15872Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15873CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15874BEGIN 15875SET new.f_int1 = @my_max1 + @counter, 15876new.f_int2 = @my_min2 - @counter, 15877new.f_charbig = '####updated per insert trigger####'; 15878SET @counter = @counter + 1; 15879END| 15880SET @counter = 1; 15881SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15882Warnings: 15883Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15884INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15885SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15886CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15887WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15888ORDER BY f_int1; 15889DROP TRIGGER trg_3; 15890 15891# check trigger-11 success: 1 15892Warnings: 15893Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15894DELETE FROM t1 15895WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15896AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15897AND f_charbig = '####updated per insert trigger####'; 15898CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15899BEGIN 15900SET new.f_int1 = @my_max1 + @counter, 15901new.f_int2 = @my_min2 - @counter, 15902new.f_charbig = '####updated per insert trigger####'; 15903SET @counter = @counter + 1; 15904END| 15905SET @counter = 1; 15906SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15907Warnings: 15908Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15909INSERT INTO t1 (f_char1, f_char2, f_charbig) 15910SELECT CAST(f_int1 AS CHAR), 15911CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15913ORDER BY f_int1; 15914DROP TRIGGER trg_3; 15915 15916# check trigger-12 success: 1 15917Warnings: 15918Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15919DELETE FROM t1 15920WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15921AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15922AND f_charbig = '####updated per insert trigger####'; 15923ANALYZE TABLE t1; 15924Table Op Msg_type Msg_text 15925test.t1 analyze status OK 15926test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15927CHECK TABLE t1 EXTENDED; 15928Table Op Msg_type Msg_text 15929test.t1 check status OK 15930test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15931CHECKSUM TABLE t1 EXTENDED; 15932Table Checksum 15933test.t1 <some_value> 15934OPTIMIZE TABLE t1; 15935Table Op Msg_type Msg_text 15936test.t1 optimize status OK 15937test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15938# check layout success: 1 15939REPAIR TABLE t1 EXTENDED; 15940Table Op Msg_type Msg_text 15941test.t1 repair status OK 15942test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15943# check layout success: 1 15944TRUNCATE t1; 15945Warnings: 15946Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15947 15948# check TRUNCATE success: 1 15949# check layout success: 1 15950# End usability test (inc/partition_check.inc) 15951DROP TABLE t1; 15952CREATE TABLE t1 ( 15953f_int1 INTEGER, 15954f_int2 INTEGER, 15955f_char1 CHAR(20), 15956f_char2 CHAR(20), 15957f_charbig VARCHAR(1000) 15958 15959) 15960PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 15961(PARTITION part1 VALUES LESS THAN (0) 15962(SUBPARTITION subpart11, SUBPARTITION subpart12), 15963PARTITION part2 VALUES LESS THAN (5) 15964(SUBPARTITION subpart21, SUBPARTITION subpart22), 15965PARTITION part3 VALUES LESS THAN (10) 15966(SUBPARTITION subpart31, SUBPARTITION subpart32), 15967PARTITION part4 VALUES LESS THAN (2147483646) 15968(SUBPARTITION subpart41, SUBPARTITION subpart42)); 15969Warnings: 15970Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15971INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15972SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15973WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 15974Warnings: 15975Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15976ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 15977Warnings: 15978Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15979INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15980SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15981WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 15982Warnings: 15983Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15984# Start usability test (inc/partition_check.inc) 15985create_command 15986SHOW CREATE TABLE t1; 15987Table Create Table 15988t1 CREATE TABLE `t1` ( 15989 `f_int1` mediumint(9) DEFAULT NULL, 15990 `f_int2` mediumint(9) DEFAULT NULL, 15991 `f_char1` char(20) DEFAULT NULL, 15992 `f_char2` char(20) DEFAULT NULL, 15993 `f_charbig` varchar(1000) DEFAULT NULL 15994) ENGINE=MyISAM DEFAULT CHARSET=latin1 15995/*!50100 PARTITION BY RANGE (f_int1) 15996SUBPARTITION BY KEY (f_int2) 15997(PARTITION part1 VALUES LESS THAN (0) 15998 (SUBPARTITION subpart11 ENGINE = MyISAM, 15999 SUBPARTITION subpart12 ENGINE = MyISAM), 16000 PARTITION part2 VALUES LESS THAN (5) 16001 (SUBPARTITION subpart21 ENGINE = MyISAM, 16002 SUBPARTITION subpart22 ENGINE = MyISAM), 16003 PARTITION part3 VALUES LESS THAN (10) 16004 (SUBPARTITION subpart31 ENGINE = MyISAM, 16005 SUBPARTITION subpart32 ENGINE = MyISAM), 16006 PARTITION part4 VALUES LESS THAN (2147483646) 16007 (SUBPARTITION subpart41 ENGINE = MyISAM, 16008 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 16009 16010unified filelist 16011t1#P#part1#SP#subpart11.MYD 16012t1#P#part1#SP#subpart11.MYI 16013t1#P#part1#SP#subpart12.MYD 16014t1#P#part1#SP#subpart12.MYI 16015t1#P#part2#SP#subpart21.MYD 16016t1#P#part2#SP#subpart21.MYI 16017t1#P#part2#SP#subpart22.MYD 16018t1#P#part2#SP#subpart22.MYI 16019t1#P#part3#SP#subpart31.MYD 16020t1#P#part3#SP#subpart31.MYI 16021t1#P#part3#SP#subpart32.MYD 16022t1#P#part3#SP#subpart32.MYI 16023t1#P#part4#SP#subpart41.MYD 16024t1#P#part4#SP#subpart41.MYI 16025t1#P#part4#SP#subpart42.MYD 16026t1#P#part4#SP#subpart42.MYI 16027t1.frm 16028t1.par 16029 16030# check prerequisites-1 success: 1 16031# check COUNT(*) success: 1 16032# check MIN/MAX(f_int1) success: 1 16033# check MIN/MAX(f_int2) success: 1 16034INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16035SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16036CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16037WHERE f_int1 IN (2,3); 16038# check prerequisites-3 success: 1 16039DELETE FROM t1 WHERE f_charbig = 'delete me'; 16040# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 16041# check read via f_int1 success: 1 16042# check read via f_int2 success: 1 16043 16044# check multiple-1 success: 1 16045DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16046 16047# check multiple-2 success: 1 16048INSERT INTO t1 SELECT * FROM t0_template 16049WHERE MOD(f_int1,3) = 0; 16050 16051# check multiple-3 success: 1 16052UPDATE t1 SET f_int1 = f_int1 + @max_row 16053WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16054AND @max_row_div2 + @max_row_div4; 16055 16056# check multiple-4 success: 1 16057DELETE FROM t1 16058WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16059AND @max_row_div2 + @max_row_div4 + @max_row; 16060 16061# check multiple-5 success: 1 16062SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16063INSERT INTO t1 16064SET f_int1 = @cur_value , f_int2 = @cur_value, 16065f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16066f_charbig = '#SINGLE#'; 16067 16068# check single-1 success: 1 16069SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16070INSERT INTO t1 16071SET f_int1 = @cur_value , f_int2 = @cur_value, 16072f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16073f_charbig = '#SINGLE#'; 16074 16075# check single-2 success: 1 16076SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16077SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16078UPDATE t1 SET f_int1 = @cur_value2 16079WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16080 16081# check single-3 success: 1 16082SET @cur_value1= -1; 16083SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16084UPDATE t1 SET f_int1 = @cur_value1 16085WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16086 16087# check single-4 success: 1 16088SELECT MAX(f_int1) INTO @cur_value FROM t1; 16089DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16090 16091# check single-5 success: 1 16092DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16093 16094# check single-6 success: 1 16095INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16096Warnings: 16097Warning 1264 Out of range value for column 'f_int1' at row 1 16098Warning 1264 Out of range value for column 'f_int2' at row 1 16099 16100# check single-7 success: 1 16101DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16102DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16103INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16104f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16105f_charbig = '#NULL#'; 16106INSERT INTO t1 16107SET f_int1 = NULL , f_int2 = -@max_row, 16108f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16109f_charbig = '#NULL#'; 16110# check null success: 1 16111 16112# check null-1 success: 1 16113UPDATE t1 SET f_int1 = -@max_row 16114WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16115AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16116 16117# check null-2 success: 1 16118UPDATE t1 SET f_int1 = NULL 16119WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16120AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16121 16122# check null-3 success: 1 16123DELETE FROM t1 16124WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16125AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16126 16127# check null-4 success: 1 16128DELETE FROM t1 16129WHERE f_int1 = 0 AND f_int2 = 0 16130AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16131AND f_charbig = '#NULL#'; 16132SET AUTOCOMMIT= 0; 16133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16134SELECT f_int1, f_int1, '', '', 'was inserted' 16135FROM t0_template source_tab 16136WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16137 16138# check transactions-1 success: 1 16139COMMIT WORK; 16140 16141# check transactions-2 success: 1 16142ROLLBACK WORK; 16143 16144# check transactions-3 success: 1 16145DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16146COMMIT WORK; 16147ROLLBACK WORK; 16148 16149# check transactions-4 success: 1 16150INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16151SELECT f_int1, f_int1, '', '', 'was inserted' 16152FROM t0_template source_tab 16153WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16154 16155# check transactions-5 success: 1 16156ROLLBACK WORK; 16157Warnings: 16158Warning 1196 Some non-transactional changed tables couldn't be rolled back 16159 16160# check transactions-6 success: 1 16161# INFO: Storage engine used for t1 seems to be not transactional. 16162COMMIT; 16163 16164# check transactions-7 success: 1 16165DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16166COMMIT WORK; 16167SET @@session.sql_mode = 'traditional'; 16168Warnings: 16169Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16170SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16171INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16172SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16173'', '', 'was inserted' FROM t0_template 16174WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16175ERROR 22012: Division by 0 16176COMMIT; 16177 16178# check transactions-8 success: 1 16179# INFO: Storage engine used for t1 seems to be unable to revert 16180# changes made by the failing statement. 16181SET @@session.sql_mode = ''; 16182Warnings: 16183Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16184SET AUTOCOMMIT= 1; 16185DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16186COMMIT WORK; 16187UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16188 16189# check special-1 success: 1 16190UPDATE t1 SET f_charbig = ''; 16191 16192# check special-2 success: 1 16193UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16194INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16195SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16196WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16197INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16198SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16199'just inserted' FROM t0_template 16200WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16201CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16202BEGIN 16203UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16204f_charbig = 'updated by trigger' 16205 WHERE f_int1 = new.f_int1; 16206END| 16207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16208SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16209WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16210 16211# check trigger-1 success: 1 16212DROP TRIGGER trg_1; 16213UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16214f_int2 = CAST(f_char1 AS SIGNED INT), 16215f_charbig = 'just inserted' 16216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16217DELETE FROM t0_aux 16218WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16219INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16220SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16221'just inserted' FROM t0_template 16222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16223CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16224BEGIN 16225UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16226f_charbig = 'updated by trigger' 16227 WHERE f_int1 = new.f_int1; 16228END| 16229INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16230SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16232 16233# check trigger-2 success: 1 16234DROP TRIGGER trg_1; 16235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16236f_int2 = CAST(f_char1 AS SIGNED INT), 16237f_charbig = 'just inserted' 16238 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16239DELETE FROM t0_aux 16240WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16241INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16242SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16243'just inserted' FROM t0_template 16244WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16245CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16246BEGIN 16247UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16248f_charbig = 'updated by trigger' 16249 WHERE f_int1 = new.f_int1; 16250END| 16251UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16252WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16253 16254# check trigger-3 success: 1 16255DROP TRIGGER trg_1; 16256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16257f_int2 = CAST(f_char1 AS SIGNED INT), 16258f_charbig = 'just inserted' 16259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16260DELETE FROM t0_aux 16261WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16262INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16263SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16264'just inserted' FROM t0_template 16265WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16266CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16267BEGIN 16268UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16269f_charbig = 'updated by trigger' 16270 WHERE f_int1 = - old.f_int1; 16271END| 16272UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16273WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16274 16275# check trigger-4 success: 1 16276DROP TRIGGER trg_1; 16277UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16278f_int2 = CAST(f_char1 AS SIGNED INT), 16279f_charbig = 'just inserted' 16280 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16281DELETE FROM t0_aux 16282WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16283INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16284SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16285'just inserted' FROM t0_template 16286WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16287CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16288BEGIN 16289UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16290f_charbig = 'updated by trigger' 16291 WHERE f_int1 = new.f_int1; 16292END| 16293UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16294WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16295 16296# check trigger-5 success: 1 16297DROP TRIGGER trg_1; 16298UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16299f_int2 = CAST(f_char1 AS SIGNED INT), 16300f_charbig = 'just inserted' 16301 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16302DELETE FROM t0_aux 16303WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16305SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16306'just inserted' FROM t0_template 16307WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16308CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16309BEGIN 16310UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16311f_charbig = 'updated by trigger' 16312 WHERE f_int1 = - old.f_int1; 16313END| 16314UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16315WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16316 16317# check trigger-6 success: 1 16318DROP TRIGGER trg_1; 16319UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16320f_int2 = CAST(f_char1 AS SIGNED INT), 16321f_charbig = 'just inserted' 16322 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16323DELETE FROM t0_aux 16324WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16325INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16326SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16327'just inserted' FROM t0_template 16328WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16329CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16330BEGIN 16331UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16332f_charbig = 'updated by trigger' 16333 WHERE f_int1 = - old.f_int1; 16334END| 16335DELETE FROM t0_aux 16336WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16337 16338# check trigger-7 success: 1 16339DROP TRIGGER trg_1; 16340UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16341f_int2 = CAST(f_char1 AS SIGNED INT), 16342f_charbig = 'just inserted' 16343 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16344DELETE FROM t0_aux 16345WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16346INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16347SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16348'just inserted' FROM t0_template 16349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16350CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16351BEGIN 16352UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16353f_charbig = 'updated by trigger' 16354 WHERE f_int1 = - old.f_int1; 16355END| 16356DELETE FROM t0_aux 16357WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16358 16359# check trigger-8 success: 1 16360DROP TRIGGER trg_1; 16361UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16362f_int2 = CAST(f_char1 AS SIGNED INT), 16363f_charbig = 'just inserted' 16364 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16365DELETE FROM t0_aux 16366WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16367DELETE FROM t1 16368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16369CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16370BEGIN 16371SET new.f_int1 = old.f_int1 + @max_row, 16372new.f_int2 = old.f_int2 - @max_row, 16373new.f_charbig = '####updated per update trigger####'; 16374END| 16375UPDATE t1 16376SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16377f_charbig = '####updated per update statement itself####'; 16378Warnings: 16379Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16380 16381# check trigger-9 success: 1 16382DROP TRIGGER trg_2; 16383UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16384f_int2 = CAST(f_char1 AS SIGNED INT), 16385f_charbig = CONCAT('===',f_char1,'==='); 16386Warnings: 16387Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16388CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16389BEGIN 16390SET new.f_int1 = new.f_int1 + @max_row, 16391new.f_int2 = new.f_int2 - @max_row, 16392new.f_charbig = '####updated per update trigger####'; 16393END| 16394UPDATE t1 16395SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16396f_charbig = '####updated per update statement itself####'; 16397Warnings: 16398Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16399 16400# check trigger-10 success: 1 16401DROP TRIGGER trg_2; 16402UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16403f_int2 = CAST(f_char1 AS SIGNED INT), 16404f_charbig = CONCAT('===',f_char1,'==='); 16405Warnings: 16406Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16407CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16408BEGIN 16409SET new.f_int1 = @my_max1 + @counter, 16410new.f_int2 = @my_min2 - @counter, 16411new.f_charbig = '####updated per insert trigger####'; 16412SET @counter = @counter + 1; 16413END| 16414SET @counter = 1; 16415SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16416Warnings: 16417Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16418INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16419SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16420CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16421WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16422ORDER BY f_int1; 16423DROP TRIGGER trg_3; 16424 16425# check trigger-11 success: 1 16426Warnings: 16427Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16428DELETE FROM t1 16429WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16430AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16431AND f_charbig = '####updated per insert trigger####'; 16432CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16433BEGIN 16434SET new.f_int1 = @my_max1 + @counter, 16435new.f_int2 = @my_min2 - @counter, 16436new.f_charbig = '####updated per insert trigger####'; 16437SET @counter = @counter + 1; 16438END| 16439SET @counter = 1; 16440SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16441Warnings: 16442Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16443INSERT INTO t1 (f_char1, f_char2, f_charbig) 16444SELECT CAST(f_int1 AS CHAR), 16445CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16446WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16447ORDER BY f_int1; 16448DROP TRIGGER trg_3; 16449 16450# check trigger-12 success: 1 16451Warnings: 16452Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16453DELETE FROM t1 16454WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16455AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16456AND f_charbig = '####updated per insert trigger####'; 16457ANALYZE TABLE t1; 16458Table Op Msg_type Msg_text 16459test.t1 analyze status OK 16460test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16461CHECK TABLE t1 EXTENDED; 16462Table Op Msg_type Msg_text 16463test.t1 check status OK 16464test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16465CHECKSUM TABLE t1 EXTENDED; 16466Table Checksum 16467test.t1 <some_value> 16468OPTIMIZE TABLE t1; 16469Table Op Msg_type Msg_text 16470test.t1 optimize status OK 16471test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16472# check layout success: 1 16473REPAIR TABLE t1 EXTENDED; 16474Table Op Msg_type Msg_text 16475test.t1 repair status OK 16476test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16477# check layout success: 1 16478TRUNCATE t1; 16479Warnings: 16480Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16481 16482# check TRUNCATE success: 1 16483# check layout success: 1 16484# End usability test (inc/partition_check.inc) 16485DROP TABLE t1; 16486CREATE TABLE t1 ( 16487f_int1 INTEGER, 16488f_int2 INTEGER, 16489f_char1 CHAR(20), 16490f_char2 CHAR(20), 16491f_charbig VARCHAR(1000) 16492 16493) 16494PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 16495(PARTITION part1 VALUES IN (0) 16496(SUBPARTITION sp11, SUBPARTITION sp12), 16497PARTITION part2 VALUES IN (1) 16498(SUBPARTITION sp21, SUBPARTITION sp22), 16499PARTITION part3 VALUES IN (2) 16500(SUBPARTITION sp31, SUBPARTITION sp32), 16501PARTITION part4 VALUES IN (NULL) 16502(SUBPARTITION sp41, SUBPARTITION sp42)); 16503Warnings: 16504Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16505INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16506SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16507WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 16508Warnings: 16509Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16510ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 16511Warnings: 16512Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16513INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16514SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16515WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 16516Warnings: 16517Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16518# Start usability test (inc/partition_check.inc) 16519create_command 16520SHOW CREATE TABLE t1; 16521Table Create Table 16522t1 CREATE TABLE `t1` ( 16523 `f_int1` mediumint(9) DEFAULT NULL, 16524 `f_int2` mediumint(9) DEFAULT NULL, 16525 `f_char1` char(20) DEFAULT NULL, 16526 `f_char2` char(20) DEFAULT NULL, 16527 `f_charbig` varchar(1000) DEFAULT NULL 16528) ENGINE=MyISAM DEFAULT CHARSET=latin1 16529/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 16530SUBPARTITION BY HASH (f_int2 + 1) 16531(PARTITION part1 VALUES IN (0) 16532 (SUBPARTITION sp11 ENGINE = MyISAM, 16533 SUBPARTITION sp12 ENGINE = MyISAM), 16534 PARTITION part2 VALUES IN (1) 16535 (SUBPARTITION sp21 ENGINE = MyISAM, 16536 SUBPARTITION sp22 ENGINE = MyISAM), 16537 PARTITION part3 VALUES IN (2) 16538 (SUBPARTITION sp31 ENGINE = MyISAM, 16539 SUBPARTITION sp32 ENGINE = MyISAM), 16540 PARTITION part4 VALUES IN (NULL) 16541 (SUBPARTITION sp41 ENGINE = MyISAM, 16542 SUBPARTITION sp42 ENGINE = MyISAM)) */ 16543 16544unified filelist 16545t1#P#part1#SP#sp11.MYD 16546t1#P#part1#SP#sp11.MYI 16547t1#P#part1#SP#sp12.MYD 16548t1#P#part1#SP#sp12.MYI 16549t1#P#part2#SP#sp21.MYD 16550t1#P#part2#SP#sp21.MYI 16551t1#P#part2#SP#sp22.MYD 16552t1#P#part2#SP#sp22.MYI 16553t1#P#part3#SP#sp31.MYD 16554t1#P#part3#SP#sp31.MYI 16555t1#P#part3#SP#sp32.MYD 16556t1#P#part3#SP#sp32.MYI 16557t1#P#part4#SP#sp41.MYD 16558t1#P#part4#SP#sp41.MYI 16559t1#P#part4#SP#sp42.MYD 16560t1#P#part4#SP#sp42.MYI 16561t1.frm 16562t1.par 16563 16564# check prerequisites-1 success: 1 16565# check COUNT(*) success: 1 16566# check MIN/MAX(f_int1) success: 1 16567# check MIN/MAX(f_int2) success: 1 16568INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16569SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16570CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16571WHERE f_int1 IN (2,3); 16572# check prerequisites-3 success: 1 16573DELETE FROM t1 WHERE f_charbig = 'delete me'; 16574# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 16575# check read via f_int1 success: 1 16576# check read via f_int2 success: 1 16577 16578# check multiple-1 success: 1 16579DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16580 16581# check multiple-2 success: 1 16582INSERT INTO t1 SELECT * FROM t0_template 16583WHERE MOD(f_int1,3) = 0; 16584 16585# check multiple-3 success: 1 16586UPDATE t1 SET f_int1 = f_int1 + @max_row 16587WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16588AND @max_row_div2 + @max_row_div4; 16589 16590# check multiple-4 success: 1 16591DELETE FROM t1 16592WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16593AND @max_row_div2 + @max_row_div4 + @max_row; 16594 16595# check multiple-5 success: 1 16596SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16597INSERT INTO t1 16598SET f_int1 = @cur_value , f_int2 = @cur_value, 16599f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16600f_charbig = '#SINGLE#'; 16601 16602# check single-1 success: 1 16603SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16604INSERT INTO t1 16605SET f_int1 = @cur_value , f_int2 = @cur_value, 16606f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16607f_charbig = '#SINGLE#'; 16608 16609# check single-2 success: 1 16610SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16611SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16612UPDATE t1 SET f_int1 = @cur_value2 16613WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16614 16615# check single-3 success: 1 16616SET @cur_value1= -1; 16617SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16618UPDATE t1 SET f_int1 = @cur_value1 16619WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16620 16621# check single-4 success: 1 16622SELECT MAX(f_int1) INTO @cur_value FROM t1; 16623DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16624 16625# check single-5 success: 1 16626DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16627 16628# check single-6 success: 1 16629INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16630Warnings: 16631Warning 1264 Out of range value for column 'f_int1' at row 1 16632Warning 1264 Out of range value for column 'f_int2' at row 1 16633 16634# check single-7 success: 1 16635DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16636DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16637INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16638f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16639f_charbig = '#NULL#'; 16640INSERT INTO t1 16641SET f_int1 = NULL , f_int2 = -@max_row, 16642f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16643f_charbig = '#NULL#'; 16644# check null success: 1 16645 16646# check null-1 success: 1 16647UPDATE t1 SET f_int1 = -@max_row 16648WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16649AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16650 16651# check null-2 success: 1 16652UPDATE t1 SET f_int1 = NULL 16653WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16654AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16655 16656# check null-3 success: 1 16657DELETE FROM t1 16658WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16659AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16660 16661# check null-4 success: 1 16662DELETE FROM t1 16663WHERE f_int1 = 0 AND f_int2 = 0 16664AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16665AND f_charbig = '#NULL#'; 16666SET AUTOCOMMIT= 0; 16667INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16668SELECT f_int1, f_int1, '', '', 'was inserted' 16669FROM t0_template source_tab 16670WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16671 16672# check transactions-1 success: 1 16673COMMIT WORK; 16674 16675# check transactions-2 success: 1 16676ROLLBACK WORK; 16677 16678# check transactions-3 success: 1 16679DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16680COMMIT WORK; 16681ROLLBACK WORK; 16682 16683# check transactions-4 success: 1 16684INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16685SELECT f_int1, f_int1, '', '', 'was inserted' 16686FROM t0_template source_tab 16687WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16688 16689# check transactions-5 success: 1 16690ROLLBACK WORK; 16691Warnings: 16692Warning 1196 Some non-transactional changed tables couldn't be rolled back 16693 16694# check transactions-6 success: 1 16695# INFO: Storage engine used for t1 seems to be not transactional. 16696COMMIT; 16697 16698# check transactions-7 success: 1 16699DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16700COMMIT WORK; 16701SET @@session.sql_mode = 'traditional'; 16702Warnings: 16703Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16704SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16705INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16706SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16707'', '', 'was inserted' FROM t0_template 16708WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16709ERROR 22012: Division by 0 16710COMMIT; 16711 16712# check transactions-8 success: 1 16713# INFO: Storage engine used for t1 seems to be unable to revert 16714# changes made by the failing statement. 16715SET @@session.sql_mode = ''; 16716Warnings: 16717Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16718SET AUTOCOMMIT= 1; 16719DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16720COMMIT WORK; 16721UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16722 16723# check special-1 success: 1 16724UPDATE t1 SET f_charbig = ''; 16725 16726# check special-2 success: 1 16727UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16728INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16729SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16733'just inserted' FROM t0_template 16734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16735CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16736BEGIN 16737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16738f_charbig = 'updated by trigger' 16739 WHERE f_int1 = new.f_int1; 16740END| 16741INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16742SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16744 16745# check trigger-1 success: 1 16746DROP TRIGGER trg_1; 16747UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16748f_int2 = CAST(f_char1 AS SIGNED INT), 16749f_charbig = 'just inserted' 16750 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16751DELETE FROM t0_aux 16752WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16753INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16754SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16755'just inserted' FROM t0_template 16756WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16757CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16758BEGIN 16759UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16760f_charbig = 'updated by trigger' 16761 WHERE f_int1 = new.f_int1; 16762END| 16763INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16764SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16765WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16766 16767# check trigger-2 success: 1 16768DROP TRIGGER trg_1; 16769UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16770f_int2 = CAST(f_char1 AS SIGNED INT), 16771f_charbig = 'just inserted' 16772 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16773DELETE FROM t0_aux 16774WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16775INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16776SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16777'just inserted' FROM t0_template 16778WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16779CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16780BEGIN 16781UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16782f_charbig = 'updated by trigger' 16783 WHERE f_int1 = new.f_int1; 16784END| 16785UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16786WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16787 16788# check trigger-3 success: 1 16789DROP TRIGGER trg_1; 16790UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16791f_int2 = CAST(f_char1 AS SIGNED INT), 16792f_charbig = 'just inserted' 16793 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16794DELETE FROM t0_aux 16795WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16796INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16797SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16798'just inserted' FROM t0_template 16799WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16800CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16801BEGIN 16802UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16803f_charbig = 'updated by trigger' 16804 WHERE f_int1 = - old.f_int1; 16805END| 16806UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16807WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16808 16809# check trigger-4 success: 1 16810DROP TRIGGER trg_1; 16811UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16812f_int2 = CAST(f_char1 AS SIGNED INT), 16813f_charbig = 'just inserted' 16814 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16815DELETE FROM t0_aux 16816WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16817INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16818SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16819'just inserted' FROM t0_template 16820WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16821CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16822BEGIN 16823UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16824f_charbig = 'updated by trigger' 16825 WHERE f_int1 = new.f_int1; 16826END| 16827UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16828WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16829 16830# check trigger-5 success: 1 16831DROP TRIGGER trg_1; 16832UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16833f_int2 = CAST(f_char1 AS SIGNED INT), 16834f_charbig = 'just inserted' 16835 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16836DELETE FROM t0_aux 16837WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16838INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16839SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16840'just inserted' FROM t0_template 16841WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16842CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16843BEGIN 16844UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16845f_charbig = 'updated by trigger' 16846 WHERE f_int1 = - old.f_int1; 16847END| 16848UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16849WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16850 16851# check trigger-6 success: 1 16852DROP TRIGGER trg_1; 16853UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16854f_int2 = CAST(f_char1 AS SIGNED INT), 16855f_charbig = 'just inserted' 16856 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16857DELETE FROM t0_aux 16858WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16859INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16860SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16861'just inserted' FROM t0_template 16862WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16863CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16864BEGIN 16865UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16866f_charbig = 'updated by trigger' 16867 WHERE f_int1 = - old.f_int1; 16868END| 16869DELETE FROM t0_aux 16870WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16871 16872# check trigger-7 success: 1 16873DROP TRIGGER trg_1; 16874UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16875f_int2 = CAST(f_char1 AS SIGNED INT), 16876f_charbig = 'just inserted' 16877 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16878DELETE FROM t0_aux 16879WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16881SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16882'just inserted' FROM t0_template 16883WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16884CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16885BEGIN 16886UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16887f_charbig = 'updated by trigger' 16888 WHERE f_int1 = - old.f_int1; 16889END| 16890DELETE FROM t0_aux 16891WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16892 16893# check trigger-8 success: 1 16894DROP TRIGGER trg_1; 16895UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16896f_int2 = CAST(f_char1 AS SIGNED INT), 16897f_charbig = 'just inserted' 16898 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16899DELETE FROM t0_aux 16900WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16901DELETE FROM t1 16902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16903CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16904BEGIN 16905SET new.f_int1 = old.f_int1 + @max_row, 16906new.f_int2 = old.f_int2 - @max_row, 16907new.f_charbig = '####updated per update trigger####'; 16908END| 16909UPDATE t1 16910SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16911f_charbig = '####updated per update statement itself####'; 16912Warnings: 16913Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16914 16915# check trigger-9 success: 1 16916DROP TRIGGER trg_2; 16917UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16918f_int2 = CAST(f_char1 AS SIGNED INT), 16919f_charbig = CONCAT('===',f_char1,'==='); 16920Warnings: 16921Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16922CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16923BEGIN 16924SET new.f_int1 = new.f_int1 + @max_row, 16925new.f_int2 = new.f_int2 - @max_row, 16926new.f_charbig = '####updated per update trigger####'; 16927END| 16928UPDATE t1 16929SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16930f_charbig = '####updated per update statement itself####'; 16931Warnings: 16932Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16933 16934# check trigger-10 success: 1 16935DROP TRIGGER trg_2; 16936UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16937f_int2 = CAST(f_char1 AS SIGNED INT), 16938f_charbig = CONCAT('===',f_char1,'==='); 16939Warnings: 16940Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16941CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16942BEGIN 16943SET new.f_int1 = @my_max1 + @counter, 16944new.f_int2 = @my_min2 - @counter, 16945new.f_charbig = '####updated per insert trigger####'; 16946SET @counter = @counter + 1; 16947END| 16948SET @counter = 1; 16949SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16950Warnings: 16951Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16952INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16953SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16954CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16956ORDER BY f_int1; 16957DROP TRIGGER trg_3; 16958 16959# check trigger-11 success: 1 16960Warnings: 16961Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16962DELETE FROM t1 16963WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16964AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16965AND f_charbig = '####updated per insert trigger####'; 16966CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16967BEGIN 16968SET new.f_int1 = @my_max1 + @counter, 16969new.f_int2 = @my_min2 - @counter, 16970new.f_charbig = '####updated per insert trigger####'; 16971SET @counter = @counter + 1; 16972END| 16973SET @counter = 1; 16974SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16975Warnings: 16976Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16977INSERT INTO t1 (f_char1, f_char2, f_charbig) 16978SELECT CAST(f_int1 AS CHAR), 16979CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16980WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16981ORDER BY f_int1; 16982DROP TRIGGER trg_3; 16983 16984# check trigger-12 success: 1 16985Warnings: 16986Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16987DELETE FROM t1 16988WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16989AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16990AND f_charbig = '####updated per insert trigger####'; 16991ANALYZE TABLE t1; 16992Table Op Msg_type Msg_text 16993test.t1 analyze status OK 16994test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16995CHECK TABLE t1 EXTENDED; 16996Table Op Msg_type Msg_text 16997test.t1 check status OK 16998test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16999CHECKSUM TABLE t1 EXTENDED; 17000Table Checksum 17001test.t1 <some_value> 17002OPTIMIZE TABLE t1; 17003Table Op Msg_type Msg_text 17004test.t1 optimize status OK 17005test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17006# check layout success: 1 17007REPAIR TABLE t1 EXTENDED; 17008Table Op Msg_type Msg_text 17009test.t1 repair status OK 17010test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17011# check layout success: 1 17012TRUNCATE t1; 17013Warnings: 17014Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17015 17016# check TRUNCATE success: 1 17017# check layout success: 1 17018# End usability test (inc/partition_check.inc) 17019DROP TABLE t1; 17020CREATE TABLE t1 ( 17021f_int1 INTEGER, 17022f_int2 INTEGER, 17023f_char1 CHAR(20), 17024f_char2 CHAR(20), 17025f_charbig VARCHAR(1000) 17026 17027) 17028PARTITION BY LIST(ABS(MOD(f_int1,2))) 17029SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 17030(PARTITION part1 VALUES IN (0), 17031PARTITION part2 VALUES IN (1), 17032PARTITION part3 VALUES IN (NULL)); 17033Warnings: 17034Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17035INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17036SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17037WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 17038Warnings: 17039Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17040ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 17041Warnings: 17042Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17043INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17044SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17045WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 17046Warnings: 17047Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17048# Start usability test (inc/partition_check.inc) 17049create_command 17050SHOW CREATE TABLE t1; 17051Table Create Table 17052t1 CREATE TABLE `t1` ( 17053 `f_int1` mediumint(9) DEFAULT NULL, 17054 `f_int2` mediumint(9) DEFAULT NULL, 17055 `f_char1` char(20) DEFAULT NULL, 17056 `f_char2` char(20) DEFAULT NULL, 17057 `f_charbig` varchar(1000) DEFAULT NULL 17058) ENGINE=MyISAM DEFAULT CHARSET=latin1 17059/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 17060SUBPARTITION BY KEY (f_int2) 17061SUBPARTITIONS 3 17062(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 17063 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 17064 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 17065 17066unified filelist 17067t1#P#part1#SP#part1sp0.MYD 17068t1#P#part1#SP#part1sp0.MYI 17069t1#P#part1#SP#part1sp1.MYD 17070t1#P#part1#SP#part1sp1.MYI 17071t1#P#part1#SP#part1sp2.MYD 17072t1#P#part1#SP#part1sp2.MYI 17073t1#P#part2#SP#part2sp0.MYD 17074t1#P#part2#SP#part2sp0.MYI 17075t1#P#part2#SP#part2sp1.MYD 17076t1#P#part2#SP#part2sp1.MYI 17077t1#P#part2#SP#part2sp2.MYD 17078t1#P#part2#SP#part2sp2.MYI 17079t1#P#part3#SP#part3sp0.MYD 17080t1#P#part3#SP#part3sp0.MYI 17081t1#P#part3#SP#part3sp1.MYD 17082t1#P#part3#SP#part3sp1.MYI 17083t1#P#part3#SP#part3sp2.MYD 17084t1#P#part3#SP#part3sp2.MYI 17085t1.frm 17086t1.par 17087 17088# check prerequisites-1 success: 1 17089# check COUNT(*) success: 1 17090# check MIN/MAX(f_int1) success: 1 17091# check MIN/MAX(f_int2) success: 1 17092INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17093SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17094CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17095WHERE f_int1 IN (2,3); 17096# check prerequisites-3 success: 1 17097DELETE FROM t1 WHERE f_charbig = 'delete me'; 17098# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 17099# check read via f_int1 success: 1 17100# check read via f_int2 success: 1 17101 17102# check multiple-1 success: 1 17103DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17104 17105# check multiple-2 success: 1 17106INSERT INTO t1 SELECT * FROM t0_template 17107WHERE MOD(f_int1,3) = 0; 17108 17109# check multiple-3 success: 1 17110UPDATE t1 SET f_int1 = f_int1 + @max_row 17111WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17112AND @max_row_div2 + @max_row_div4; 17113 17114# check multiple-4 success: 1 17115DELETE FROM t1 17116WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17117AND @max_row_div2 + @max_row_div4 + @max_row; 17118 17119# check multiple-5 success: 1 17120SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17121INSERT INTO t1 17122SET f_int1 = @cur_value , f_int2 = @cur_value, 17123f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17124f_charbig = '#SINGLE#'; 17125 17126# check single-1 success: 1 17127SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17128INSERT INTO t1 17129SET f_int1 = @cur_value , f_int2 = @cur_value, 17130f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17131f_charbig = '#SINGLE#'; 17132 17133# check single-2 success: 1 17134SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17135SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17136UPDATE t1 SET f_int1 = @cur_value2 17137WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17138 17139# check single-3 success: 1 17140SET @cur_value1= -1; 17141SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17142UPDATE t1 SET f_int1 = @cur_value1 17143WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17144 17145# check single-4 success: 1 17146SELECT MAX(f_int1) INTO @cur_value FROM t1; 17147DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17148 17149# check single-5 success: 1 17150DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17151 17152# check single-6 success: 1 17153INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17154Warnings: 17155Warning 1264 Out of range value for column 'f_int1' at row 1 17156Warning 1264 Out of range value for column 'f_int2' at row 1 17157 17158# check single-7 success: 1 17159DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 17160DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17161INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17162f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17163f_charbig = '#NULL#'; 17164INSERT INTO t1 17165SET f_int1 = NULL , f_int2 = -@max_row, 17166f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17167f_charbig = '#NULL#'; 17168# check null success: 1 17169 17170# check null-1 success: 1 17171UPDATE t1 SET f_int1 = -@max_row 17172WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17173AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17174 17175# check null-2 success: 1 17176UPDATE t1 SET f_int1 = NULL 17177WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17178AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17179 17180# check null-3 success: 1 17181DELETE FROM t1 17182WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17183AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17184 17185# check null-4 success: 1 17186DELETE FROM t1 17187WHERE f_int1 = 0 AND f_int2 = 0 17188AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17189AND f_charbig = '#NULL#'; 17190SET AUTOCOMMIT= 0; 17191INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17192SELECT f_int1, f_int1, '', '', 'was inserted' 17193FROM t0_template source_tab 17194WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17195 17196# check transactions-1 success: 1 17197COMMIT WORK; 17198 17199# check transactions-2 success: 1 17200ROLLBACK WORK; 17201 17202# check transactions-3 success: 1 17203DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17204COMMIT WORK; 17205ROLLBACK WORK; 17206 17207# check transactions-4 success: 1 17208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17209SELECT f_int1, f_int1, '', '', 'was inserted' 17210FROM t0_template source_tab 17211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17212 17213# check transactions-5 success: 1 17214ROLLBACK WORK; 17215Warnings: 17216Warning 1196 Some non-transactional changed tables couldn't be rolled back 17217 17218# check transactions-6 success: 1 17219# INFO: Storage engine used for t1 seems to be not transactional. 17220COMMIT; 17221 17222# check transactions-7 success: 1 17223DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17224COMMIT WORK; 17225SET @@session.sql_mode = 'traditional'; 17226Warnings: 17227Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17228SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17229INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17230SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17231'', '', 'was inserted' FROM t0_template 17232WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17233ERROR 22012: Division by 0 17234COMMIT; 17235 17236# check transactions-8 success: 1 17237# INFO: Storage engine used for t1 seems to be unable to revert 17238# changes made by the failing statement. 17239SET @@session.sql_mode = ''; 17240Warnings: 17241Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17242SET AUTOCOMMIT= 1; 17243DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17244COMMIT WORK; 17245UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17246 17247# check special-1 success: 1 17248UPDATE t1 SET f_charbig = ''; 17249 17250# check special-2 success: 1 17251UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17252INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17253SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17254WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17255INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17256SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17257'just inserted' FROM t0_template 17258WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17259CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17260BEGIN 17261UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17262f_charbig = 'updated by trigger' 17263 WHERE f_int1 = new.f_int1; 17264END| 17265INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17266SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17268 17269# check trigger-1 success: 1 17270DROP TRIGGER trg_1; 17271UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17272f_int2 = CAST(f_char1 AS SIGNED INT), 17273f_charbig = 'just inserted' 17274 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17275DELETE FROM t0_aux 17276WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17277INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17278SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17279'just inserted' FROM t0_template 17280WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17281CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17282BEGIN 17283UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17284f_charbig = 'updated by trigger' 17285 WHERE f_int1 = new.f_int1; 17286END| 17287INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17288SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17290 17291# check trigger-2 success: 1 17292DROP TRIGGER trg_1; 17293UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17294f_int2 = CAST(f_char1 AS SIGNED INT), 17295f_charbig = 'just inserted' 17296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17297DELETE FROM t0_aux 17298WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17301'just inserted' FROM t0_template 17302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17303CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17304BEGIN 17305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17306f_charbig = 'updated by trigger' 17307 WHERE f_int1 = new.f_int1; 17308END| 17309UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17310WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17311 17312# check trigger-3 success: 1 17313DROP TRIGGER trg_1; 17314UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17315f_int2 = CAST(f_char1 AS SIGNED INT), 17316f_charbig = 'just inserted' 17317 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17318DELETE FROM t0_aux 17319WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17320INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17321SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17322'just inserted' FROM t0_template 17323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17324CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17325BEGIN 17326UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17327f_charbig = 'updated by trigger' 17328 WHERE f_int1 = - old.f_int1; 17329END| 17330UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17331WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17332 17333# check trigger-4 success: 1 17334DROP TRIGGER trg_1; 17335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17336f_int2 = CAST(f_char1 AS SIGNED INT), 17337f_charbig = 'just inserted' 17338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17339DELETE FROM t0_aux 17340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17343'just inserted' FROM t0_template 17344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17345CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17346BEGIN 17347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17348f_charbig = 'updated by trigger' 17349 WHERE f_int1 = new.f_int1; 17350END| 17351UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17353 17354# check trigger-5 success: 1 17355DROP TRIGGER trg_1; 17356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17357f_int2 = CAST(f_char1 AS SIGNED INT), 17358f_charbig = 'just inserted' 17359 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17360DELETE FROM t0_aux 17361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17363SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17364'just inserted' FROM t0_template 17365WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17366CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17367BEGIN 17368UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17369f_charbig = 'updated by trigger' 17370 WHERE f_int1 = - old.f_int1; 17371END| 17372UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17373WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17374 17375# check trigger-6 success: 1 17376DROP TRIGGER trg_1; 17377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17378f_int2 = CAST(f_char1 AS SIGNED INT), 17379f_charbig = 'just inserted' 17380 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17381DELETE FROM t0_aux 17382WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17383INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17384SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17385'just inserted' FROM t0_template 17386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17387CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17388BEGIN 17389UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17390f_charbig = 'updated by trigger' 17391 WHERE f_int1 = - old.f_int1; 17392END| 17393DELETE FROM t0_aux 17394WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17395 17396# check trigger-7 success: 1 17397DROP TRIGGER trg_1; 17398UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17399f_int2 = CAST(f_char1 AS SIGNED INT), 17400f_charbig = 'just inserted' 17401 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17402DELETE FROM t0_aux 17403WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17406'just inserted' FROM t0_template 17407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17408CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17409BEGIN 17410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17411f_charbig = 'updated by trigger' 17412 WHERE f_int1 = - old.f_int1; 17413END| 17414DELETE FROM t0_aux 17415WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17416 17417# check trigger-8 success: 1 17418DROP TRIGGER trg_1; 17419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17420f_int2 = CAST(f_char1 AS SIGNED INT), 17421f_charbig = 'just inserted' 17422 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17423DELETE FROM t0_aux 17424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17425DELETE FROM t1 17426WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17427CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17428BEGIN 17429SET new.f_int1 = old.f_int1 + @max_row, 17430new.f_int2 = old.f_int2 - @max_row, 17431new.f_charbig = '####updated per update trigger####'; 17432END| 17433UPDATE t1 17434SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17435f_charbig = '####updated per update statement itself####'; 17436Warnings: 17437Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17438 17439# check trigger-9 success: 1 17440DROP TRIGGER trg_2; 17441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17442f_int2 = CAST(f_char1 AS SIGNED INT), 17443f_charbig = CONCAT('===',f_char1,'==='); 17444Warnings: 17445Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17446CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17447BEGIN 17448SET new.f_int1 = new.f_int1 + @max_row, 17449new.f_int2 = new.f_int2 - @max_row, 17450new.f_charbig = '####updated per update trigger####'; 17451END| 17452UPDATE t1 17453SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17454f_charbig = '####updated per update statement itself####'; 17455Warnings: 17456Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17457 17458# check trigger-10 success: 1 17459DROP TRIGGER trg_2; 17460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17461f_int2 = CAST(f_char1 AS SIGNED INT), 17462f_charbig = CONCAT('===',f_char1,'==='); 17463Warnings: 17464Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17465CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17466BEGIN 17467SET new.f_int1 = @my_max1 + @counter, 17468new.f_int2 = @my_min2 - @counter, 17469new.f_charbig = '####updated per insert trigger####'; 17470SET @counter = @counter + 1; 17471END| 17472SET @counter = 1; 17473SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17474Warnings: 17475Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17476INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17477SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17478CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17479WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17480ORDER BY f_int1; 17481DROP TRIGGER trg_3; 17482 17483# check trigger-11 success: 1 17484Warnings: 17485Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17486DELETE FROM t1 17487WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17488AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17489AND f_charbig = '####updated per insert trigger####'; 17490CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17491BEGIN 17492SET new.f_int1 = @my_max1 + @counter, 17493new.f_int2 = @my_min2 - @counter, 17494new.f_charbig = '####updated per insert trigger####'; 17495SET @counter = @counter + 1; 17496END| 17497SET @counter = 1; 17498SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17499Warnings: 17500Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17501INSERT INTO t1 (f_char1, f_char2, f_charbig) 17502SELECT CAST(f_int1 AS CHAR), 17503CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17504WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17505ORDER BY f_int1; 17506DROP TRIGGER trg_3; 17507 17508# check trigger-12 success: 1 17509Warnings: 17510Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17511DELETE FROM t1 17512WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17513AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17514AND f_charbig = '####updated per insert trigger####'; 17515ANALYZE TABLE t1; 17516Table Op Msg_type Msg_text 17517test.t1 analyze status OK 17518test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17519CHECK TABLE t1 EXTENDED; 17520Table Op Msg_type Msg_text 17521test.t1 check status OK 17522test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17523CHECKSUM TABLE t1 EXTENDED; 17524Table Checksum 17525test.t1 <some_value> 17526OPTIMIZE TABLE t1; 17527Table Op Msg_type Msg_text 17528test.t1 optimize status OK 17529test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17530# check layout success: 1 17531REPAIR TABLE t1 EXTENDED; 17532Table Op Msg_type Msg_text 17533test.t1 repair status OK 17534test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17535# check layout success: 1 17536TRUNCATE t1; 17537Warnings: 17538Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17539 17540# check TRUNCATE success: 1 17541# check layout success: 1 17542# End usability test (inc/partition_check.inc) 17543DROP TABLE t1; 17544# 2.3.3 UNIQUE INDEX exists 17545DROP TABLE IF EXISTS t1; 17546CREATE TABLE t1 ( 17547f_int1 INTEGER, 17548f_int2 INTEGER, 17549f_char1 CHAR(20), 17550f_char2 CHAR(20), 17551f_charbig VARCHAR(1000) 17552, UNIQUE INDEX uidx (f_int1,f_int2) 17553) 17554PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 17555Warnings: 17556Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17557INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17558SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17559WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 17560Warnings: 17561Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17562ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 17563Warnings: 17564Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17565INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17566SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17567WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 17568Warnings: 17569Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17570# Start usability test (inc/partition_check.inc) 17571create_command 17572SHOW CREATE TABLE t1; 17573Table Create Table 17574t1 CREATE TABLE `t1` ( 17575 `f_int1` mediumint(9) DEFAULT NULL, 17576 `f_int2` mediumint(9) DEFAULT NULL, 17577 `f_char1` char(20) DEFAULT NULL, 17578 `f_char2` char(20) DEFAULT NULL, 17579 `f_charbig` varchar(1000) DEFAULT NULL, 17580 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 17581) ENGINE=MyISAM DEFAULT CHARSET=latin1 17582/*!50100 PARTITION BY HASH (f_int1 + f_int2) 17583PARTITIONS 2 */ 17584 17585unified filelist 17586t1#P#p0.MYD 17587t1#P#p0.MYI 17588t1#P#p1.MYD 17589t1#P#p1.MYI 17590t1.frm 17591t1.par 17592 17593# check prerequisites-1 success: 1 17594# check COUNT(*) success: 1 17595# check MIN/MAX(f_int1) success: 1 17596# check MIN/MAX(f_int2) success: 1 17597INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17598SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17599CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17600WHERE f_int1 IN (2,3); 17601ERROR 23000: Duplicate entry '2-2' for key 'uidx' 17602# check prerequisites-3 success: 1 17603# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 17604INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17605SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17606CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17607WHERE f_int1 IN (2,3); 17608DELETE FROM t1 WHERE f_charbig = 'delete me'; 17609INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17610SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17611CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17612WHERE f_int1 IN (2,3); 17613DELETE FROM t1 WHERE f_charbig = 'delete me'; 17614# check read via f_int1 success: 1 17615# check read via f_int2 success: 1 17616 17617# check multiple-1 success: 1 17618DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17619 17620# check multiple-2 success: 1 17621INSERT INTO t1 SELECT * FROM t0_template 17622WHERE MOD(f_int1,3) = 0; 17623 17624# check multiple-3 success: 1 17625UPDATE t1 SET f_int1 = f_int1 + @max_row 17626WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17627AND @max_row_div2 + @max_row_div4; 17628 17629# check multiple-4 success: 1 17630DELETE FROM t1 17631WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17632AND @max_row_div2 + @max_row_div4 + @max_row; 17633 17634# check multiple-5 success: 1 17635SELECT COUNT(*) INTO @try_count FROM t0_template 17636WHERE MOD(f_int1,3) = 0 17637AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17638SELECT COUNT(*) INTO @clash_count 17639FROM t1 INNER JOIN t0_template USING(f_int1) 17640WHERE MOD(f_int1,3) = 0 17641AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17642SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17643INSERT INTO t1 17644SET f_int1 = @cur_value , f_int2 = @cur_value, 17645f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17646f_charbig = '#SINGLE#'; 17647 17648# check single-1 success: 1 17649SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17650INSERT INTO t1 17651SET f_int1 = @cur_value , f_int2 = @cur_value, 17652f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17653f_charbig = '#SINGLE#'; 17654 17655# check single-2 success: 1 17656SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17657SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17658UPDATE t1 SET f_int1 = @cur_value2 17659WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17660 17661# check single-3 success: 1 17662SET @cur_value1= -1; 17663SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17664UPDATE t1 SET f_int1 = @cur_value1 17665WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17666 17667# check single-4 success: 1 17668SELECT MAX(f_int1) INTO @cur_value FROM t1; 17669DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17670 17671# check single-5 success: 1 17672DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17673 17674# check single-6 success: 1 17675INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17676Warnings: 17677Warning 1264 Out of range value for column 'f_int1' at row 1 17678Warning 1264 Out of range value for column 'f_int2' at row 1 17679 17680# check single-7 success: 1 17681DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 17682DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17683INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17684f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17685f_charbig = '#NULL#'; 17686INSERT INTO t1 17687SET f_int1 = NULL , f_int2 = -@max_row, 17688f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17689f_charbig = '#NULL#'; 17690# check null success: 1 17691 17692# check null-1 success: 1 17693UPDATE t1 SET f_int1 = -@max_row 17694WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17695AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17696 17697# check null-2 success: 1 17698UPDATE t1 SET f_int1 = NULL 17699WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17700AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17701 17702# check null-3 success: 1 17703DELETE FROM t1 17704WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17705AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17706 17707# check null-4 success: 1 17708DELETE FROM t1 17709WHERE f_int1 = 0 AND f_int2 = 0 17710AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17711AND f_charbig = '#NULL#'; 17712INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17713SELECT f_int1, f_int1, '', '', 'was inserted' 17714 FROM t0_template source_tab 17715WHERE MOD(f_int1,3) = 0 17716AND f_int1 BETWEEN @max_row_div2 AND @max_row 17717ON DUPLICATE KEY 17718UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17719f_int2 = 2 * @max_row + source_tab.f_int1, 17720f_charbig = 'was updated'; 17721 17722# check unique-1-a success: 1 17723 17724# check unique-1-b success: 1 17725DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17726UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17727f_int2 = CAST(f_char1 AS SIGNED INT), 17728f_charbig = CONCAT('===',f_char1,'===') 17729WHERE f_charbig = 'was updated'; 17730REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17731SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17732 FROM t0_template source_tab 17733WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17734 17735# check replace success: 1 17736DELETE FROM t1 17737WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17738DELETE FROM t1 17739WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17740f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17741UPDATE t1 SET f_int2 = f_int1, 17742f_char1 = CAST(f_int1 AS CHAR), 17743f_char2 = CAST(f_int1 AS CHAR), 17744f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17745WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17746SET AUTOCOMMIT= 0; 17747INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17748SELECT f_int1, f_int1, '', '', 'was inserted' 17749FROM t0_template source_tab 17750WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17751 17752# check transactions-1 success: 1 17753COMMIT WORK; 17754 17755# check transactions-2 success: 1 17756ROLLBACK WORK; 17757 17758# check transactions-3 success: 1 17759DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17760COMMIT WORK; 17761ROLLBACK WORK; 17762 17763# check transactions-4 success: 1 17764INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17765SELECT f_int1, f_int1, '', '', 'was inserted' 17766FROM t0_template source_tab 17767WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17768 17769# check transactions-5 success: 1 17770ROLLBACK WORK; 17771Warnings: 17772Warning 1196 Some non-transactional changed tables couldn't be rolled back 17773 17774# check transactions-6 success: 1 17775# INFO: Storage engine used for t1 seems to be not transactional. 17776COMMIT; 17777 17778# check transactions-7 success: 1 17779DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17780COMMIT WORK; 17781SET @@session.sql_mode = 'traditional'; 17782Warnings: 17783Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17784SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17785INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17786SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17787'', '', 'was inserted' FROM t0_template 17788WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17789ERROR 22012: Division by 0 17790COMMIT; 17791 17792# check transactions-8 success: 1 17793# INFO: Storage engine used for t1 seems to be unable to revert 17794# changes made by the failing statement. 17795SET @@session.sql_mode = ''; 17796Warnings: 17797Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17798SET AUTOCOMMIT= 1; 17799DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17800COMMIT WORK; 17801UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17802 17803# check special-1 success: 1 17804UPDATE t1 SET f_charbig = ''; 17805 17806# check special-2 success: 1 17807UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17808INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17809SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17810WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17811INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17812SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17813'just inserted' FROM t0_template 17814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17815CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17816BEGIN 17817UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17818f_charbig = 'updated by trigger' 17819 WHERE f_int1 = new.f_int1; 17820END| 17821INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17822SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17824 17825# check trigger-1 success: 1 17826DROP TRIGGER trg_1; 17827UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17828f_int2 = CAST(f_char1 AS SIGNED INT), 17829f_charbig = 'just inserted' 17830 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17831DELETE FROM t0_aux 17832WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17833INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17834SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17835'just inserted' FROM t0_template 17836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17837CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17838BEGIN 17839UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17840f_charbig = 'updated by trigger' 17841 WHERE f_int1 = new.f_int1; 17842END| 17843INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17844SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17846 17847# check trigger-2 success: 1 17848DROP TRIGGER trg_1; 17849UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17850f_int2 = CAST(f_char1 AS SIGNED INT), 17851f_charbig = 'just inserted' 17852 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17853DELETE FROM t0_aux 17854WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17855INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17856SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17857'just inserted' FROM t0_template 17858WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17859CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17860BEGIN 17861UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17862f_charbig = 'updated by trigger' 17863 WHERE f_int1 = new.f_int1; 17864END| 17865UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17866WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17867 17868# check trigger-3 success: 1 17869DROP TRIGGER trg_1; 17870UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17871f_int2 = CAST(f_char1 AS SIGNED INT), 17872f_charbig = 'just inserted' 17873 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17874DELETE FROM t0_aux 17875WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17876INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17877SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17878'just inserted' FROM t0_template 17879WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17880CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17881BEGIN 17882UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17883f_charbig = 'updated by trigger' 17884 WHERE f_int1 = - old.f_int1; 17885END| 17886UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17887WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17888 17889# check trigger-4 success: 1 17890DROP TRIGGER trg_1; 17891UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17892f_int2 = CAST(f_char1 AS SIGNED INT), 17893f_charbig = 'just inserted' 17894 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17895DELETE FROM t0_aux 17896WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17897INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17898SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17899'just inserted' FROM t0_template 17900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17901CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17902BEGIN 17903UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17904f_charbig = 'updated by trigger' 17905 WHERE f_int1 = new.f_int1; 17906END| 17907UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17908WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17909 17910# check trigger-5 success: 1 17911DROP TRIGGER trg_1; 17912UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17913f_int2 = CAST(f_char1 AS SIGNED INT), 17914f_charbig = 'just inserted' 17915 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17916DELETE FROM t0_aux 17917WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17918INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17919SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17920'just inserted' FROM t0_template 17921WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17922CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17923BEGIN 17924UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17925f_charbig = 'updated by trigger' 17926 WHERE f_int1 = - old.f_int1; 17927END| 17928UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17929WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17930 17931# check trigger-6 success: 1 17932DROP TRIGGER trg_1; 17933UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17934f_int2 = CAST(f_char1 AS SIGNED INT), 17935f_charbig = 'just inserted' 17936 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17937DELETE FROM t0_aux 17938WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17939INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17940SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17941'just inserted' FROM t0_template 17942WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17943CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17944BEGIN 17945UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17946f_charbig = 'updated by trigger' 17947 WHERE f_int1 = - old.f_int1; 17948END| 17949DELETE FROM t0_aux 17950WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17951 17952# check trigger-7 success: 1 17953DROP TRIGGER trg_1; 17954UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17955f_int2 = CAST(f_char1 AS SIGNED INT), 17956f_charbig = 'just inserted' 17957 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17958DELETE FROM t0_aux 17959WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17960INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17961SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17962'just inserted' FROM t0_template 17963WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17964CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17965BEGIN 17966UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17967f_charbig = 'updated by trigger' 17968 WHERE f_int1 = - old.f_int1; 17969END| 17970DELETE FROM t0_aux 17971WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17972 17973# check trigger-8 success: 1 17974DROP TRIGGER trg_1; 17975UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17976f_int2 = CAST(f_char1 AS SIGNED INT), 17977f_charbig = 'just inserted' 17978 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17979DELETE FROM t0_aux 17980WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17981DELETE FROM t1 17982WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17983CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17984BEGIN 17985SET new.f_int1 = old.f_int1 + @max_row, 17986new.f_int2 = old.f_int2 - @max_row, 17987new.f_charbig = '####updated per update trigger####'; 17988END| 17989UPDATE t1 17990SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17991f_charbig = '####updated per update statement itself####'; 17992Warnings: 17993Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17994 17995# check trigger-9 success: 1 17996DROP TRIGGER trg_2; 17997UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17998f_int2 = CAST(f_char1 AS SIGNED INT), 17999f_charbig = CONCAT('===',f_char1,'==='); 18000Warnings: 18001Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18002CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18003BEGIN 18004SET new.f_int1 = new.f_int1 + @max_row, 18005new.f_int2 = new.f_int2 - @max_row, 18006new.f_charbig = '####updated per update trigger####'; 18007END| 18008UPDATE t1 18009SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18010f_charbig = '####updated per update statement itself####'; 18011Warnings: 18012Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18013 18014# check trigger-10 success: 1 18015DROP TRIGGER trg_2; 18016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18017f_int2 = CAST(f_char1 AS SIGNED INT), 18018f_charbig = CONCAT('===',f_char1,'==='); 18019Warnings: 18020Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18021CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18022BEGIN 18023SET new.f_int1 = @my_max1 + @counter, 18024new.f_int2 = @my_min2 - @counter, 18025new.f_charbig = '####updated per insert trigger####'; 18026SET @counter = @counter + 1; 18027END| 18028SET @counter = 1; 18029SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18030Warnings: 18031Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18032INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18033SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18034CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18036ORDER BY f_int1; 18037DROP TRIGGER trg_3; 18038 18039# check trigger-11 success: 1 18040Warnings: 18041Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18042DELETE FROM t1 18043WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18044AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18045AND f_charbig = '####updated per insert trigger####'; 18046CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18047BEGIN 18048SET new.f_int1 = @my_max1 + @counter, 18049new.f_int2 = @my_min2 - @counter, 18050new.f_charbig = '####updated per insert trigger####'; 18051SET @counter = @counter + 1; 18052END| 18053SET @counter = 1; 18054SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18055Warnings: 18056Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18057INSERT INTO t1 (f_char1, f_char2, f_charbig) 18058SELECT CAST(f_int1 AS CHAR), 18059CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18061ORDER BY f_int1; 18062DROP TRIGGER trg_3; 18063 18064# check trigger-12 success: 1 18065Warnings: 18066Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18067DELETE FROM t1 18068WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18069AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18070AND f_charbig = '####updated per insert trigger####'; 18071ANALYZE TABLE t1; 18072Table Op Msg_type Msg_text 18073test.t1 analyze status OK 18074test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18075CHECK TABLE t1 EXTENDED; 18076Table Op Msg_type Msg_text 18077test.t1 check status OK 18078test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18079CHECKSUM TABLE t1 EXTENDED; 18080Table Checksum 18081test.t1 <some_value> 18082OPTIMIZE TABLE t1; 18083Table Op Msg_type Msg_text 18084test.t1 optimize status OK 18085test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18086# check layout success: 1 18087REPAIR TABLE t1 EXTENDED; 18088Table Op Msg_type Msg_text 18089test.t1 repair status OK 18090test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18091# check layout success: 1 18092TRUNCATE t1; 18093Warnings: 18094Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18095 18096# check TRUNCATE success: 1 18097# check layout success: 1 18098# End usability test (inc/partition_check.inc) 18099DROP TABLE t1; 18100CREATE TABLE t1 ( 18101f_int1 INTEGER, 18102f_int2 INTEGER, 18103f_char1 CHAR(20), 18104f_char2 CHAR(20), 18105f_charbig VARCHAR(1000) 18106, UNIQUE INDEX uidx (f_int1,f_int2) 18107) 18108PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 18109Warnings: 18110Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18111INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18112SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18113WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 18114Warnings: 18115Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18116ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 18117Warnings: 18118Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18119INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18120SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18121WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 18122Warnings: 18123Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18124# Start usability test (inc/partition_check.inc) 18125create_command 18126SHOW CREATE TABLE t1; 18127Table Create Table 18128t1 CREATE TABLE `t1` ( 18129 `f_int1` mediumint(9) DEFAULT NULL, 18130 `f_int2` mediumint(9) DEFAULT NULL, 18131 `f_char1` char(20) DEFAULT NULL, 18132 `f_char2` char(20) DEFAULT NULL, 18133 `f_charbig` varchar(1000) DEFAULT NULL, 18134 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 18135) ENGINE=MyISAM DEFAULT CHARSET=latin1 18136/*!50100 PARTITION BY KEY (f_int1,f_int2) 18137PARTITIONS 5 */ 18138 18139unified filelist 18140t1#P#p0.MYD 18141t1#P#p0.MYI 18142t1#P#p1.MYD 18143t1#P#p1.MYI 18144t1#P#p2.MYD 18145t1#P#p2.MYI 18146t1#P#p3.MYD 18147t1#P#p3.MYI 18148t1#P#p4.MYD 18149t1#P#p4.MYI 18150t1.frm 18151t1.par 18152 18153# check prerequisites-1 success: 1 18154# check COUNT(*) success: 1 18155# check MIN/MAX(f_int1) success: 1 18156# check MIN/MAX(f_int2) success: 1 18157INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18158SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18159CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18160WHERE f_int1 IN (2,3); 18161ERROR 23000: Duplicate entry '2-2' for key 'uidx' 18162# check prerequisites-3 success: 1 18163# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18164INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18165SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18166CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18167WHERE f_int1 IN (2,3); 18168DELETE FROM t1 WHERE f_charbig = 'delete me'; 18169INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18170SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18171CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18172WHERE f_int1 IN (2,3); 18173DELETE FROM t1 WHERE f_charbig = 'delete me'; 18174# check read via f_int1 success: 1 18175# check read via f_int2 success: 1 18176 18177# check multiple-1 success: 1 18178DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18179 18180# check multiple-2 success: 1 18181INSERT INTO t1 SELECT * FROM t0_template 18182WHERE MOD(f_int1,3) = 0; 18183 18184# check multiple-3 success: 1 18185UPDATE t1 SET f_int1 = f_int1 + @max_row 18186WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18187AND @max_row_div2 + @max_row_div4; 18188 18189# check multiple-4 success: 1 18190DELETE FROM t1 18191WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18192AND @max_row_div2 + @max_row_div4 + @max_row; 18193 18194# check multiple-5 success: 1 18195SELECT COUNT(*) INTO @try_count FROM t0_template 18196WHERE MOD(f_int1,3) = 0 18197AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18198SELECT COUNT(*) INTO @clash_count 18199FROM t1 INNER JOIN t0_template USING(f_int1) 18200WHERE MOD(f_int1,3) = 0 18201AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18202SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18203INSERT INTO t1 18204SET f_int1 = @cur_value , f_int2 = @cur_value, 18205f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18206f_charbig = '#SINGLE#'; 18207 18208# check single-1 success: 1 18209SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18210INSERT INTO t1 18211SET f_int1 = @cur_value , f_int2 = @cur_value, 18212f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18213f_charbig = '#SINGLE#'; 18214 18215# check single-2 success: 1 18216SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18217SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18218UPDATE t1 SET f_int1 = @cur_value2 18219WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18220 18221# check single-3 success: 1 18222SET @cur_value1= -1; 18223SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18224UPDATE t1 SET f_int1 = @cur_value1 18225WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18226 18227# check single-4 success: 1 18228SELECT MAX(f_int1) INTO @cur_value FROM t1; 18229DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18230 18231# check single-5 success: 1 18232DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18233 18234# check single-6 success: 1 18235INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18236Warnings: 18237Warning 1264 Out of range value for column 'f_int1' at row 1 18238Warning 1264 Out of range value for column 'f_int2' at row 1 18239 18240# check single-7 success: 1 18241DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18242DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18243INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18244f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18245f_charbig = '#NULL#'; 18246INSERT INTO t1 18247SET f_int1 = NULL , f_int2 = -@max_row, 18248f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18249f_charbig = '#NULL#'; 18250# check null success: 1 18251 18252# check null-1 success: 1 18253UPDATE t1 SET f_int1 = -@max_row 18254WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18255AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18256 18257# check null-2 success: 1 18258UPDATE t1 SET f_int1 = NULL 18259WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18260AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18261 18262# check null-3 success: 1 18263DELETE FROM t1 18264WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18265AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18266 18267# check null-4 success: 1 18268DELETE FROM t1 18269WHERE f_int1 = 0 AND f_int2 = 0 18270AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18271AND f_charbig = '#NULL#'; 18272INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18273SELECT f_int1, f_int1, '', '', 'was inserted' 18274 FROM t0_template source_tab 18275WHERE MOD(f_int1,3) = 0 18276AND f_int1 BETWEEN @max_row_div2 AND @max_row 18277ON DUPLICATE KEY 18278UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18279f_int2 = 2 * @max_row + source_tab.f_int1, 18280f_charbig = 'was updated'; 18281 18282# check unique-1-a success: 1 18283 18284# check unique-1-b success: 1 18285DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18287f_int2 = CAST(f_char1 AS SIGNED INT), 18288f_charbig = CONCAT('===',f_char1,'===') 18289WHERE f_charbig = 'was updated'; 18290REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18291SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18292 FROM t0_template source_tab 18293WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18294 18295# check replace success: 1 18296DELETE FROM t1 18297WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18298DELETE FROM t1 18299WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18300f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18301UPDATE t1 SET f_int2 = f_int1, 18302f_char1 = CAST(f_int1 AS CHAR), 18303f_char2 = CAST(f_int1 AS CHAR), 18304f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18305WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18306SET AUTOCOMMIT= 0; 18307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18308SELECT f_int1, f_int1, '', '', 'was inserted' 18309FROM t0_template source_tab 18310WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18311 18312# check transactions-1 success: 1 18313COMMIT WORK; 18314 18315# check transactions-2 success: 1 18316ROLLBACK WORK; 18317 18318# check transactions-3 success: 1 18319DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18320COMMIT WORK; 18321ROLLBACK WORK; 18322 18323# check transactions-4 success: 1 18324INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18325SELECT f_int1, f_int1, '', '', 'was inserted' 18326FROM t0_template source_tab 18327WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18328 18329# check transactions-5 success: 1 18330ROLLBACK WORK; 18331Warnings: 18332Warning 1196 Some non-transactional changed tables couldn't be rolled back 18333 18334# check transactions-6 success: 1 18335# INFO: Storage engine used for t1 seems to be not transactional. 18336COMMIT; 18337 18338# check transactions-7 success: 1 18339DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18340COMMIT WORK; 18341SET @@session.sql_mode = 'traditional'; 18342Warnings: 18343Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18344SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18345INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18346SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18347'', '', 'was inserted' FROM t0_template 18348WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18349ERROR 22012: Division by 0 18350COMMIT; 18351 18352# check transactions-8 success: 1 18353# INFO: Storage engine used for t1 seems to be unable to revert 18354# changes made by the failing statement. 18355SET @@session.sql_mode = ''; 18356Warnings: 18357Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18358SET AUTOCOMMIT= 1; 18359DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18360COMMIT WORK; 18361UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18362 18363# check special-1 success: 1 18364UPDATE t1 SET f_charbig = ''; 18365 18366# check special-2 success: 1 18367UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18368INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18369SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18370WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18373'just inserted' FROM t0_template 18374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18375CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18376BEGIN 18377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18378f_charbig = 'updated by trigger' 18379 WHERE f_int1 = new.f_int1; 18380END| 18381INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18382SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18383WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18384 18385# check trigger-1 success: 1 18386DROP TRIGGER trg_1; 18387UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18388f_int2 = CAST(f_char1 AS SIGNED INT), 18389f_charbig = 'just inserted' 18390 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18391DELETE FROM t0_aux 18392WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18393INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18394SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18395'just inserted' FROM t0_template 18396WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18397CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18398BEGIN 18399UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18400f_charbig = 'updated by trigger' 18401 WHERE f_int1 = new.f_int1; 18402END| 18403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18404SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18406 18407# check trigger-2 success: 1 18408DROP TRIGGER trg_1; 18409UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18410f_int2 = CAST(f_char1 AS SIGNED INT), 18411f_charbig = 'just inserted' 18412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18413DELETE FROM t0_aux 18414WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18415INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18416SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18417'just inserted' FROM t0_template 18418WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18419CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18420BEGIN 18421UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18422f_charbig = 'updated by trigger' 18423 WHERE f_int1 = new.f_int1; 18424END| 18425UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18426WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18427 18428# check trigger-3 success: 1 18429DROP TRIGGER trg_1; 18430UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18431f_int2 = CAST(f_char1 AS SIGNED INT), 18432f_charbig = 'just inserted' 18433 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18434DELETE FROM t0_aux 18435WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18436INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18437SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18438'just inserted' FROM t0_template 18439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18440CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18441BEGIN 18442UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18443f_charbig = 'updated by trigger' 18444 WHERE f_int1 = - old.f_int1; 18445END| 18446UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18447WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18448 18449# check trigger-4 success: 1 18450DROP TRIGGER trg_1; 18451UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18452f_int2 = CAST(f_char1 AS SIGNED INT), 18453f_charbig = 'just inserted' 18454 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18455DELETE FROM t0_aux 18456WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18457INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18458SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18459'just inserted' FROM t0_template 18460WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18461CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18462BEGIN 18463UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18464f_charbig = 'updated by trigger' 18465 WHERE f_int1 = new.f_int1; 18466END| 18467UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18468WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18469 18470# check trigger-5 success: 1 18471DROP TRIGGER trg_1; 18472UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18473f_int2 = CAST(f_char1 AS SIGNED INT), 18474f_charbig = 'just inserted' 18475 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18476DELETE FROM t0_aux 18477WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18478INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18479SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18480'just inserted' FROM t0_template 18481WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18482CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18483BEGIN 18484UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18485f_charbig = 'updated by trigger' 18486 WHERE f_int1 = - old.f_int1; 18487END| 18488UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18489WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18490 18491# check trigger-6 success: 1 18492DROP TRIGGER trg_1; 18493UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18494f_int2 = CAST(f_char1 AS SIGNED INT), 18495f_charbig = 'just inserted' 18496 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18497DELETE FROM t0_aux 18498WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18501'just inserted' FROM t0_template 18502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18503CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18504BEGIN 18505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18506f_charbig = 'updated by trigger' 18507 WHERE f_int1 = - old.f_int1; 18508END| 18509DELETE FROM t0_aux 18510WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18511 18512# check trigger-7 success: 1 18513DROP TRIGGER trg_1; 18514UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18515f_int2 = CAST(f_char1 AS SIGNED INT), 18516f_charbig = 'just inserted' 18517 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18518DELETE FROM t0_aux 18519WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18520INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18521SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18522'just inserted' FROM t0_template 18523WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18524CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18525BEGIN 18526UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18527f_charbig = 'updated by trigger' 18528 WHERE f_int1 = - old.f_int1; 18529END| 18530DELETE FROM t0_aux 18531WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18532 18533# check trigger-8 success: 1 18534DROP TRIGGER trg_1; 18535UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18536f_int2 = CAST(f_char1 AS SIGNED INT), 18537f_charbig = 'just inserted' 18538 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18539DELETE FROM t0_aux 18540WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18541DELETE FROM t1 18542WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18543CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18544BEGIN 18545SET new.f_int1 = old.f_int1 + @max_row, 18546new.f_int2 = old.f_int2 - @max_row, 18547new.f_charbig = '####updated per update trigger####'; 18548END| 18549UPDATE t1 18550SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18551f_charbig = '####updated per update statement itself####'; 18552Warnings: 18553Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18554 18555# check trigger-9 success: 1 18556DROP TRIGGER trg_2; 18557UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18558f_int2 = CAST(f_char1 AS SIGNED INT), 18559f_charbig = CONCAT('===',f_char1,'==='); 18560Warnings: 18561Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18562CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18563BEGIN 18564SET new.f_int1 = new.f_int1 + @max_row, 18565new.f_int2 = new.f_int2 - @max_row, 18566new.f_charbig = '####updated per update trigger####'; 18567END| 18568UPDATE t1 18569SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18570f_charbig = '####updated per update statement itself####'; 18571Warnings: 18572Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18573 18574# check trigger-10 success: 1 18575DROP TRIGGER trg_2; 18576UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18577f_int2 = CAST(f_char1 AS SIGNED INT), 18578f_charbig = CONCAT('===',f_char1,'==='); 18579Warnings: 18580Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18581CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18582BEGIN 18583SET new.f_int1 = @my_max1 + @counter, 18584new.f_int2 = @my_min2 - @counter, 18585new.f_charbig = '####updated per insert trigger####'; 18586SET @counter = @counter + 1; 18587END| 18588SET @counter = 1; 18589SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18590Warnings: 18591Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18592INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18593SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18594CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18596ORDER BY f_int1; 18597DROP TRIGGER trg_3; 18598 18599# check trigger-11 success: 1 18600Warnings: 18601Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18602DELETE FROM t1 18603WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18604AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18605AND f_charbig = '####updated per insert trigger####'; 18606CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18607BEGIN 18608SET new.f_int1 = @my_max1 + @counter, 18609new.f_int2 = @my_min2 - @counter, 18610new.f_charbig = '####updated per insert trigger####'; 18611SET @counter = @counter + 1; 18612END| 18613SET @counter = 1; 18614SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18615Warnings: 18616Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18617INSERT INTO t1 (f_char1, f_char2, f_charbig) 18618SELECT CAST(f_int1 AS CHAR), 18619CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18621ORDER BY f_int1; 18622DROP TRIGGER trg_3; 18623 18624# check trigger-12 success: 1 18625Warnings: 18626Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18627DELETE FROM t1 18628WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18629AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18630AND f_charbig = '####updated per insert trigger####'; 18631ANALYZE TABLE t1; 18632Table Op Msg_type Msg_text 18633test.t1 analyze status OK 18634test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18635CHECK TABLE t1 EXTENDED; 18636Table Op Msg_type Msg_text 18637test.t1 check status OK 18638test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18639CHECKSUM TABLE t1 EXTENDED; 18640Table Checksum 18641test.t1 <some_value> 18642OPTIMIZE TABLE t1; 18643Table Op Msg_type Msg_text 18644test.t1 optimize status OK 18645test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18646# check layout success: 1 18647REPAIR TABLE t1 EXTENDED; 18648Table Op Msg_type Msg_text 18649test.t1 repair status OK 18650test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18651# check layout success: 1 18652TRUNCATE t1; 18653Warnings: 18654Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18655 18656# check TRUNCATE success: 1 18657# check layout success: 1 18658# End usability test (inc/partition_check.inc) 18659DROP TABLE t1; 18660CREATE TABLE t1 ( 18661f_int1 INTEGER, 18662f_int2 INTEGER, 18663f_char1 CHAR(20), 18664f_char2 CHAR(20), 18665f_charbig VARCHAR(1000) 18666, UNIQUE INDEX uidx (f_int1,f_int2) 18667) 18668PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 18669(PARTITION part_3 VALUES IN (-3), 18670PARTITION part_2 VALUES IN (-2), 18671PARTITION part_1 VALUES IN (-1), 18672PARTITION part_N VALUES IN (NULL), 18673PARTITION part0 VALUES IN (0), 18674PARTITION part1 VALUES IN (1), 18675PARTITION part2 VALUES IN (2), 18676PARTITION part3 VALUES IN (3)); 18677Warnings: 18678Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18679INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18680SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18681WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 18682Warnings: 18683Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18684ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 18685Warnings: 18686Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18687INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18688SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18689WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 18690Warnings: 18691Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18692# Start usability test (inc/partition_check.inc) 18693create_command 18694SHOW CREATE TABLE t1; 18695Table Create Table 18696t1 CREATE TABLE `t1` ( 18697 `f_int1` mediumint(9) DEFAULT NULL, 18698 `f_int2` mediumint(9) DEFAULT NULL, 18699 `f_char1` char(20) DEFAULT NULL, 18700 `f_char2` char(20) DEFAULT NULL, 18701 `f_charbig` varchar(1000) DEFAULT NULL, 18702 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 18703) ENGINE=MyISAM DEFAULT CHARSET=latin1 18704/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 18705(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 18706 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 18707 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 18708 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 18709 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 18710 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 18711 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 18712 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 18713 18714unified filelist 18715t1#P#part0.MYD 18716t1#P#part0.MYI 18717t1#P#part1.MYD 18718t1#P#part1.MYI 18719t1#P#part2.MYD 18720t1#P#part2.MYI 18721t1#P#part3.MYD 18722t1#P#part3.MYI 18723t1#P#part_1.MYD 18724t1#P#part_1.MYI 18725t1#P#part_2.MYD 18726t1#P#part_2.MYI 18727t1#P#part_3.MYD 18728t1#P#part_3.MYI 18729t1#P#part_N.MYD 18730t1#P#part_N.MYI 18731t1.frm 18732t1.par 18733 18734# check prerequisites-1 success: 1 18735# check COUNT(*) success: 1 18736# check MIN/MAX(f_int1) success: 1 18737# check MIN/MAX(f_int2) success: 1 18738INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18739SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18740CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18741WHERE f_int1 IN (2,3); 18742ERROR 23000: Duplicate entry '2-2' for key 'uidx' 18743# check prerequisites-3 success: 1 18744# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18746SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18747CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18748WHERE f_int1 IN (2,3); 18749DELETE FROM t1 WHERE f_charbig = 'delete me'; 18750INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18751SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18752CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18753WHERE f_int1 IN (2,3); 18754DELETE FROM t1 WHERE f_charbig = 'delete me'; 18755# check read via f_int1 success: 1 18756# check read via f_int2 success: 1 18757 18758# check multiple-1 success: 1 18759DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18760 18761# check multiple-2 success: 1 18762INSERT INTO t1 SELECT * FROM t0_template 18763WHERE MOD(f_int1,3) = 0; 18764 18765# check multiple-3 success: 1 18766UPDATE t1 SET f_int1 = f_int1 + @max_row 18767WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18768AND @max_row_div2 + @max_row_div4; 18769 18770# check multiple-4 success: 1 18771DELETE FROM t1 18772WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18773AND @max_row_div2 + @max_row_div4 + @max_row; 18774 18775# check multiple-5 success: 1 18776SELECT COUNT(*) INTO @try_count FROM t0_template 18777WHERE MOD(f_int1,3) = 0 18778AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18779SELECT COUNT(*) INTO @clash_count 18780FROM t1 INNER JOIN t0_template USING(f_int1) 18781WHERE MOD(f_int1,3) = 0 18782AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18783SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18784INSERT INTO t1 18785SET f_int1 = @cur_value , f_int2 = @cur_value, 18786f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18787f_charbig = '#SINGLE#'; 18788 18789# check single-1 success: 1 18790SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18791INSERT INTO t1 18792SET f_int1 = @cur_value , f_int2 = @cur_value, 18793f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18794f_charbig = '#SINGLE#'; 18795 18796# check single-2 success: 1 18797SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18798SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18799UPDATE t1 SET f_int1 = @cur_value2 18800WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18801 18802# check single-3 success: 1 18803SET @cur_value1= -1; 18804SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18805UPDATE t1 SET f_int1 = @cur_value1 18806WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18807 18808# check single-4 success: 1 18809SELECT MAX(f_int1) INTO @cur_value FROM t1; 18810DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18811 18812# check single-5 success: 1 18813DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18814 18815# check single-6 success: 1 18816INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18817Warnings: 18818Warning 1264 Out of range value for column 'f_int1' at row 1 18819Warning 1264 Out of range value for column 'f_int2' at row 1 18820 18821# check single-7 success: 1 18822DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18823DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18824INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18825f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18826f_charbig = '#NULL#'; 18827INSERT INTO t1 18828SET f_int1 = NULL , f_int2 = -@max_row, 18829f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18830f_charbig = '#NULL#'; 18831# check null success: 1 18832 18833# check null-1 success: 1 18834UPDATE t1 SET f_int1 = -@max_row 18835WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18836AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18837 18838# check null-2 success: 1 18839UPDATE t1 SET f_int1 = NULL 18840WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18841AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18842 18843# check null-3 success: 1 18844DELETE FROM t1 18845WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18846AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18847 18848# check null-4 success: 1 18849DELETE FROM t1 18850WHERE f_int1 = 0 AND f_int2 = 0 18851AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18852AND f_charbig = '#NULL#'; 18853INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18854SELECT f_int1, f_int1, '', '', 'was inserted' 18855 FROM t0_template source_tab 18856WHERE MOD(f_int1,3) = 0 18857AND f_int1 BETWEEN @max_row_div2 AND @max_row 18858ON DUPLICATE KEY 18859UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18860f_int2 = 2 * @max_row + source_tab.f_int1, 18861f_charbig = 'was updated'; 18862 18863# check unique-1-a success: 1 18864 18865# check unique-1-b success: 1 18866DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18867UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18868f_int2 = CAST(f_char1 AS SIGNED INT), 18869f_charbig = CONCAT('===',f_char1,'===') 18870WHERE f_charbig = 'was updated'; 18871REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18872SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18873 FROM t0_template source_tab 18874WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18875 18876# check replace success: 1 18877DELETE FROM t1 18878WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18879DELETE FROM t1 18880WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18881f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18882UPDATE t1 SET f_int2 = f_int1, 18883f_char1 = CAST(f_int1 AS CHAR), 18884f_char2 = CAST(f_int1 AS CHAR), 18885f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18886WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18887SET AUTOCOMMIT= 0; 18888INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18889SELECT f_int1, f_int1, '', '', 'was inserted' 18890FROM t0_template source_tab 18891WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18892 18893# check transactions-1 success: 1 18894COMMIT WORK; 18895 18896# check transactions-2 success: 1 18897ROLLBACK WORK; 18898 18899# check transactions-3 success: 1 18900DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18901COMMIT WORK; 18902ROLLBACK WORK; 18903 18904# check transactions-4 success: 1 18905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18906SELECT f_int1, f_int1, '', '', 'was inserted' 18907FROM t0_template source_tab 18908WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18909 18910# check transactions-5 success: 1 18911ROLLBACK WORK; 18912Warnings: 18913Warning 1196 Some non-transactional changed tables couldn't be rolled back 18914 18915# check transactions-6 success: 1 18916# INFO: Storage engine used for t1 seems to be not transactional. 18917COMMIT; 18918 18919# check transactions-7 success: 1 18920DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18921COMMIT WORK; 18922SET @@session.sql_mode = 'traditional'; 18923Warnings: 18924Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18925SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18926INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18927SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18928'', '', 'was inserted' FROM t0_template 18929WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18930ERROR 22012: Division by 0 18931COMMIT; 18932 18933# check transactions-8 success: 1 18934# INFO: Storage engine used for t1 seems to be unable to revert 18935# changes made by the failing statement. 18936SET @@session.sql_mode = ''; 18937Warnings: 18938Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18939SET AUTOCOMMIT= 1; 18940DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18941COMMIT WORK; 18942UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18943 18944# check special-1 success: 1 18945UPDATE t1 SET f_charbig = ''; 18946 18947# check special-2 success: 1 18948UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18949INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18950SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18951WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18952INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18953SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18954'just inserted' FROM t0_template 18955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18956CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18957BEGIN 18958UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18959f_charbig = 'updated by trigger' 18960 WHERE f_int1 = new.f_int1; 18961END| 18962INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18963SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18964WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18965 18966# check trigger-1 success: 1 18967DROP TRIGGER trg_1; 18968UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18969f_int2 = CAST(f_char1 AS SIGNED INT), 18970f_charbig = 'just inserted' 18971 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18972DELETE FROM t0_aux 18973WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18974INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18975SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18976'just inserted' FROM t0_template 18977WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18978CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18979BEGIN 18980UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18981f_charbig = 'updated by trigger' 18982 WHERE f_int1 = new.f_int1; 18983END| 18984INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18985SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18987 18988# check trigger-2 success: 1 18989DROP TRIGGER trg_1; 18990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18991f_int2 = CAST(f_char1 AS SIGNED INT), 18992f_charbig = 'just inserted' 18993 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18994DELETE FROM t0_aux 18995WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18996INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18997SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18998'just inserted' FROM t0_template 18999WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19000CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19001BEGIN 19002UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19003f_charbig = 'updated by trigger' 19004 WHERE f_int1 = new.f_int1; 19005END| 19006UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19007WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19008 19009# check trigger-3 success: 1 19010DROP TRIGGER trg_1; 19011UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19012f_int2 = CAST(f_char1 AS SIGNED INT), 19013f_charbig = 'just inserted' 19014 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19015DELETE FROM t0_aux 19016WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19017INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19018SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19019'just inserted' FROM t0_template 19020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19021CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19022BEGIN 19023UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19024f_charbig = 'updated by trigger' 19025 WHERE f_int1 = - old.f_int1; 19026END| 19027UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19028WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19029 19030# check trigger-4 success: 1 19031DROP TRIGGER trg_1; 19032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19033f_int2 = CAST(f_char1 AS SIGNED INT), 19034f_charbig = 'just inserted' 19035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19036DELETE FROM t0_aux 19037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19040'just inserted' FROM t0_template 19041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19042CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19043BEGIN 19044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19045f_charbig = 'updated by trigger' 19046 WHERE f_int1 = new.f_int1; 19047END| 19048UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19050 19051# check trigger-5 success: 1 19052DROP TRIGGER trg_1; 19053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19054f_int2 = CAST(f_char1 AS SIGNED INT), 19055f_charbig = 'just inserted' 19056 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19057DELETE FROM t0_aux 19058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19060SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19061'just inserted' FROM t0_template 19062WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19063CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19064BEGIN 19065UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19066f_charbig = 'updated by trigger' 19067 WHERE f_int1 = - old.f_int1; 19068END| 19069UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19070WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19071 19072# check trigger-6 success: 1 19073DROP TRIGGER trg_1; 19074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19075f_int2 = CAST(f_char1 AS SIGNED INT), 19076f_charbig = 'just inserted' 19077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19078DELETE FROM t0_aux 19079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19082'just inserted' FROM t0_template 19083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19084CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19085BEGIN 19086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19087f_charbig = 'updated by trigger' 19088 WHERE f_int1 = - old.f_int1; 19089END| 19090DELETE FROM t0_aux 19091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19092 19093# check trigger-7 success: 1 19094DROP TRIGGER trg_1; 19095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19096f_int2 = CAST(f_char1 AS SIGNED INT), 19097f_charbig = 'just inserted' 19098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19099DELETE FROM t0_aux 19100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19103'just inserted' FROM t0_template 19104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19105CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19106BEGIN 19107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19108f_charbig = 'updated by trigger' 19109 WHERE f_int1 = - old.f_int1; 19110END| 19111DELETE FROM t0_aux 19112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19113 19114# check trigger-8 success: 1 19115DROP TRIGGER trg_1; 19116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19117f_int2 = CAST(f_char1 AS SIGNED INT), 19118f_charbig = 'just inserted' 19119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19120DELETE FROM t0_aux 19121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19122DELETE FROM t1 19123WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19124CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19125BEGIN 19126SET new.f_int1 = old.f_int1 + @max_row, 19127new.f_int2 = old.f_int2 - @max_row, 19128new.f_charbig = '####updated per update trigger####'; 19129END| 19130UPDATE t1 19131SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19132f_charbig = '####updated per update statement itself####'; 19133Warnings: 19134Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19135 19136# check trigger-9 success: 1 19137DROP TRIGGER trg_2; 19138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19139f_int2 = CAST(f_char1 AS SIGNED INT), 19140f_charbig = CONCAT('===',f_char1,'==='); 19141Warnings: 19142Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19143CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19144BEGIN 19145SET new.f_int1 = new.f_int1 + @max_row, 19146new.f_int2 = new.f_int2 - @max_row, 19147new.f_charbig = '####updated per update trigger####'; 19148END| 19149UPDATE t1 19150SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19151f_charbig = '####updated per update statement itself####'; 19152Warnings: 19153Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19154 19155# check trigger-10 success: 1 19156DROP TRIGGER trg_2; 19157UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19158f_int2 = CAST(f_char1 AS SIGNED INT), 19159f_charbig = CONCAT('===',f_char1,'==='); 19160Warnings: 19161Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19162CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19163BEGIN 19164SET new.f_int1 = @my_max1 + @counter, 19165new.f_int2 = @my_min2 - @counter, 19166new.f_charbig = '####updated per insert trigger####'; 19167SET @counter = @counter + 1; 19168END| 19169SET @counter = 1; 19170SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19171Warnings: 19172Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19173INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19174SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19175CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19177ORDER BY f_int1; 19178DROP TRIGGER trg_3; 19179 19180# check trigger-11 success: 1 19181Warnings: 19182Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19183DELETE FROM t1 19184WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19185AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19186AND f_charbig = '####updated per insert trigger####'; 19187CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19188BEGIN 19189SET new.f_int1 = @my_max1 + @counter, 19190new.f_int2 = @my_min2 - @counter, 19191new.f_charbig = '####updated per insert trigger####'; 19192SET @counter = @counter + 1; 19193END| 19194SET @counter = 1; 19195SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19196Warnings: 19197Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19198INSERT INTO t1 (f_char1, f_char2, f_charbig) 19199SELECT CAST(f_int1 AS CHAR), 19200CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19202ORDER BY f_int1; 19203DROP TRIGGER trg_3; 19204 19205# check trigger-12 success: 1 19206Warnings: 19207Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19208DELETE FROM t1 19209WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19210AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19211AND f_charbig = '####updated per insert trigger####'; 19212ANALYZE TABLE t1; 19213Table Op Msg_type Msg_text 19214test.t1 analyze status OK 19215test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19216CHECK TABLE t1 EXTENDED; 19217Table Op Msg_type Msg_text 19218test.t1 check status OK 19219test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19220CHECKSUM TABLE t1 EXTENDED; 19221Table Checksum 19222test.t1 <some_value> 19223OPTIMIZE TABLE t1; 19224Table Op Msg_type Msg_text 19225test.t1 optimize status OK 19226test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19227# check layout success: 1 19228REPAIR TABLE t1 EXTENDED; 19229Table Op Msg_type Msg_text 19230test.t1 repair status OK 19231test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19232# check layout success: 1 19233TRUNCATE t1; 19234Warnings: 19235Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19236 19237# check TRUNCATE success: 1 19238# check layout success: 1 19239# End usability test (inc/partition_check.inc) 19240DROP TABLE t1; 19241CREATE TABLE t1 ( 19242f_int1 INTEGER, 19243f_int2 INTEGER, 19244f_char1 CHAR(20), 19245f_char2 CHAR(20), 19246f_charbig VARCHAR(1000) 19247, UNIQUE INDEX uidx (f_int1,f_int2) 19248) 19249PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 19250(PARTITION parta VALUES LESS THAN (0), 19251PARTITION partb VALUES LESS THAN (5), 19252PARTITION partc VALUES LESS THAN (10), 19253PARTITION partd VALUES LESS THAN (10 + 5), 19254PARTITION parte VALUES LESS THAN (20), 19255PARTITION partf VALUES LESS THAN (2147483646)); 19256Warnings: 19257Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19258INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19259SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19260WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 19261Warnings: 19262Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19263ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 19264Warnings: 19265Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19266INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19267SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19268WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 19269Warnings: 19270Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19271# Start usability test (inc/partition_check.inc) 19272create_command 19273SHOW CREATE TABLE t1; 19274Table Create Table 19275t1 CREATE TABLE `t1` ( 19276 `f_int1` mediumint(9) DEFAULT NULL, 19277 `f_int2` mediumint(9) DEFAULT NULL, 19278 `f_char1` char(20) DEFAULT NULL, 19279 `f_char2` char(20) DEFAULT NULL, 19280 `f_charbig` varchar(1000) DEFAULT NULL, 19281 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 19282) ENGINE=MyISAM DEFAULT CHARSET=latin1 19283/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 19284(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 19285 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 19286 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 19287 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 19288 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 19289 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 19290 19291unified filelist 19292t1#P#parta.MYD 19293t1#P#parta.MYI 19294t1#P#partb.MYD 19295t1#P#partb.MYI 19296t1#P#partc.MYD 19297t1#P#partc.MYI 19298t1#P#partd.MYD 19299t1#P#partd.MYI 19300t1#P#parte.MYD 19301t1#P#parte.MYI 19302t1#P#partf.MYD 19303t1#P#partf.MYI 19304t1.frm 19305t1.par 19306 19307# check prerequisites-1 success: 1 19308# check COUNT(*) success: 1 19309# check MIN/MAX(f_int1) success: 1 19310# check MIN/MAX(f_int2) success: 1 19311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19312SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19313CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19314WHERE f_int1 IN (2,3); 19315ERROR 23000: Duplicate entry '2-2' for key 'uidx' 19316# check prerequisites-3 success: 1 19317# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19318INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19319SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19320CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19321WHERE f_int1 IN (2,3); 19322DELETE FROM t1 WHERE f_charbig = 'delete me'; 19323INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19324SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19325CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19326WHERE f_int1 IN (2,3); 19327DELETE FROM t1 WHERE f_charbig = 'delete me'; 19328# check read via f_int1 success: 1 19329# check read via f_int2 success: 1 19330 19331# check multiple-1 success: 1 19332DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19333 19334# check multiple-2 success: 1 19335INSERT INTO t1 SELECT * FROM t0_template 19336WHERE MOD(f_int1,3) = 0; 19337 19338# check multiple-3 success: 1 19339UPDATE t1 SET f_int1 = f_int1 + @max_row 19340WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19341AND @max_row_div2 + @max_row_div4; 19342 19343# check multiple-4 success: 1 19344DELETE FROM t1 19345WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19346AND @max_row_div2 + @max_row_div4 + @max_row; 19347 19348# check multiple-5 success: 1 19349SELECT COUNT(*) INTO @try_count FROM t0_template 19350WHERE MOD(f_int1,3) = 0 19351AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19352SELECT COUNT(*) INTO @clash_count 19353FROM t1 INNER JOIN t0_template USING(f_int1) 19354WHERE MOD(f_int1,3) = 0 19355AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19356SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19357INSERT INTO t1 19358SET f_int1 = @cur_value , f_int2 = @cur_value, 19359f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19360f_charbig = '#SINGLE#'; 19361 19362# check single-1 success: 1 19363SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19364INSERT INTO t1 19365SET f_int1 = @cur_value , f_int2 = @cur_value, 19366f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19367f_charbig = '#SINGLE#'; 19368 19369# check single-2 success: 1 19370SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19371SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19372UPDATE t1 SET f_int1 = @cur_value2 19373WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19374 19375# check single-3 success: 1 19376SET @cur_value1= -1; 19377SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19378UPDATE t1 SET f_int1 = @cur_value1 19379WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19380 19381# check single-4 success: 1 19382SELECT MAX(f_int1) INTO @cur_value FROM t1; 19383DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19384 19385# check single-5 success: 1 19386DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19387 19388# check single-6 success: 1 19389INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19390Warnings: 19391Warning 1264 Out of range value for column 'f_int1' at row 1 19392Warning 1264 Out of range value for column 'f_int2' at row 1 19393 19394# check single-7 success: 1 19395DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19396DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19397INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19398f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19399f_charbig = '#NULL#'; 19400INSERT INTO t1 19401SET f_int1 = NULL , f_int2 = -@max_row, 19402f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19403f_charbig = '#NULL#'; 19404# check null success: 1 19405 19406# check null-1 success: 1 19407UPDATE t1 SET f_int1 = -@max_row 19408WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19409AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19410 19411# check null-2 success: 1 19412UPDATE t1 SET f_int1 = NULL 19413WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19414AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19415 19416# check null-3 success: 1 19417DELETE FROM t1 19418WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19419AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19420 19421# check null-4 success: 1 19422DELETE FROM t1 19423WHERE f_int1 = 0 AND f_int2 = 0 19424AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19425AND f_charbig = '#NULL#'; 19426INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19427SELECT f_int1, f_int1, '', '', 'was inserted' 19428 FROM t0_template source_tab 19429WHERE MOD(f_int1,3) = 0 19430AND f_int1 BETWEEN @max_row_div2 AND @max_row 19431ON DUPLICATE KEY 19432UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19433f_int2 = 2 * @max_row + source_tab.f_int1, 19434f_charbig = 'was updated'; 19435 19436# check unique-1-a success: 1 19437 19438# check unique-1-b success: 1 19439DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19440UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19441f_int2 = CAST(f_char1 AS SIGNED INT), 19442f_charbig = CONCAT('===',f_char1,'===') 19443WHERE f_charbig = 'was updated'; 19444REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19445SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19446 FROM t0_template source_tab 19447WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19448 19449# check replace success: 1 19450DELETE FROM t1 19451WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19452DELETE FROM t1 19453WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19454f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19455UPDATE t1 SET f_int2 = f_int1, 19456f_char1 = CAST(f_int1 AS CHAR), 19457f_char2 = CAST(f_int1 AS CHAR), 19458f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19459WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19460SET AUTOCOMMIT= 0; 19461INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19462SELECT f_int1, f_int1, '', '', 'was inserted' 19463FROM t0_template source_tab 19464WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19465 19466# check transactions-1 success: 1 19467COMMIT WORK; 19468 19469# check transactions-2 success: 1 19470ROLLBACK WORK; 19471 19472# check transactions-3 success: 1 19473DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19474COMMIT WORK; 19475ROLLBACK WORK; 19476 19477# check transactions-4 success: 1 19478INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19479SELECT f_int1, f_int1, '', '', 'was inserted' 19480FROM t0_template source_tab 19481WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19482 19483# check transactions-5 success: 1 19484ROLLBACK WORK; 19485Warnings: 19486Warning 1196 Some non-transactional changed tables couldn't be rolled back 19487 19488# check transactions-6 success: 1 19489# INFO: Storage engine used for t1 seems to be not transactional. 19490COMMIT; 19491 19492# check transactions-7 success: 1 19493DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19494COMMIT WORK; 19495SET @@session.sql_mode = 'traditional'; 19496Warnings: 19497Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19498SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19499INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19500SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19501'', '', 'was inserted' FROM t0_template 19502WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19503ERROR 22012: Division by 0 19504COMMIT; 19505 19506# check transactions-8 success: 1 19507# INFO: Storage engine used for t1 seems to be unable to revert 19508# changes made by the failing statement. 19509SET @@session.sql_mode = ''; 19510Warnings: 19511Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19512SET AUTOCOMMIT= 1; 19513DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19514COMMIT WORK; 19515UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19516 19517# check special-1 success: 1 19518UPDATE t1 SET f_charbig = ''; 19519 19520# check special-2 success: 1 19521UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19522INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19523SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19525INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19526SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19527'just inserted' FROM t0_template 19528WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19529CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19530BEGIN 19531UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19532f_charbig = 'updated by trigger' 19533 WHERE f_int1 = new.f_int1; 19534END| 19535INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19536SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19537WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19538 19539# check trigger-1 success: 1 19540DROP TRIGGER trg_1; 19541UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19542f_int2 = CAST(f_char1 AS SIGNED INT), 19543f_charbig = 'just inserted' 19544 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19545DELETE FROM t0_aux 19546WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19548SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19549'just inserted' FROM t0_template 19550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19551CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 19552BEGIN 19553UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19554f_charbig = 'updated by trigger' 19555 WHERE f_int1 = new.f_int1; 19556END| 19557INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19558SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19559WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19560 19561# check trigger-2 success: 1 19562DROP TRIGGER trg_1; 19563UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19564f_int2 = CAST(f_char1 AS SIGNED INT), 19565f_charbig = 'just inserted' 19566 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19567DELETE FROM t0_aux 19568WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19569INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19570SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19571'just inserted' FROM t0_template 19572WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19573CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19574BEGIN 19575UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19576f_charbig = 'updated by trigger' 19577 WHERE f_int1 = new.f_int1; 19578END| 19579UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19580WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19581 19582# check trigger-3 success: 1 19583DROP TRIGGER trg_1; 19584UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19585f_int2 = CAST(f_char1 AS SIGNED INT), 19586f_charbig = 'just inserted' 19587 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19588DELETE FROM t0_aux 19589WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19590INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19591SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19592'just inserted' FROM t0_template 19593WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19594CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19595BEGIN 19596UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19597f_charbig = 'updated by trigger' 19598 WHERE f_int1 = - old.f_int1; 19599END| 19600UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19601WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19602 19603# check trigger-4 success: 1 19604DROP TRIGGER trg_1; 19605UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19606f_int2 = CAST(f_char1 AS SIGNED INT), 19607f_charbig = 'just inserted' 19608 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19609DELETE FROM t0_aux 19610WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19612SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19613'just inserted' FROM t0_template 19614WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19615CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19616BEGIN 19617UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19618f_charbig = 'updated by trigger' 19619 WHERE f_int1 = new.f_int1; 19620END| 19621UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19622WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19623 19624# check trigger-5 success: 1 19625DROP TRIGGER trg_1; 19626UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19627f_int2 = CAST(f_char1 AS SIGNED INT), 19628f_charbig = 'just inserted' 19629 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19630DELETE FROM t0_aux 19631WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19632INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19633SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19634'just inserted' FROM t0_template 19635WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19636CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19637BEGIN 19638UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19639f_charbig = 'updated by trigger' 19640 WHERE f_int1 = - old.f_int1; 19641END| 19642UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19643WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19644 19645# check trigger-6 success: 1 19646DROP TRIGGER trg_1; 19647UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19648f_int2 = CAST(f_char1 AS SIGNED INT), 19649f_charbig = 'just inserted' 19650 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19651DELETE FROM t0_aux 19652WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19653INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19654SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19655'just inserted' FROM t0_template 19656WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19657CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19658BEGIN 19659UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19660f_charbig = 'updated by trigger' 19661 WHERE f_int1 = - old.f_int1; 19662END| 19663DELETE FROM t0_aux 19664WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19665 19666# check trigger-7 success: 1 19667DROP TRIGGER trg_1; 19668UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19669f_int2 = CAST(f_char1 AS SIGNED INT), 19670f_charbig = 'just inserted' 19671 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19672DELETE FROM t0_aux 19673WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19674INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19675SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19676'just inserted' FROM t0_template 19677WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19678CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19679BEGIN 19680UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19681f_charbig = 'updated by trigger' 19682 WHERE f_int1 = - old.f_int1; 19683END| 19684DELETE FROM t0_aux 19685WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19686 19687# check trigger-8 success: 1 19688DROP TRIGGER trg_1; 19689UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19690f_int2 = CAST(f_char1 AS SIGNED INT), 19691f_charbig = 'just inserted' 19692 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19693DELETE FROM t0_aux 19694WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19695DELETE FROM t1 19696WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19697CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19698BEGIN 19699SET new.f_int1 = old.f_int1 + @max_row, 19700new.f_int2 = old.f_int2 - @max_row, 19701new.f_charbig = '####updated per update trigger####'; 19702END| 19703UPDATE t1 19704SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19705f_charbig = '####updated per update statement itself####'; 19706Warnings: 19707Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19708 19709# check trigger-9 success: 1 19710DROP TRIGGER trg_2; 19711UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19712f_int2 = CAST(f_char1 AS SIGNED INT), 19713f_charbig = CONCAT('===',f_char1,'==='); 19714Warnings: 19715Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19716CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19717BEGIN 19718SET new.f_int1 = new.f_int1 + @max_row, 19719new.f_int2 = new.f_int2 - @max_row, 19720new.f_charbig = '####updated per update trigger####'; 19721END| 19722UPDATE t1 19723SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19724f_charbig = '####updated per update statement itself####'; 19725Warnings: 19726Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19727 19728# check trigger-10 success: 1 19729DROP TRIGGER trg_2; 19730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19731f_int2 = CAST(f_char1 AS SIGNED INT), 19732f_charbig = CONCAT('===',f_char1,'==='); 19733Warnings: 19734Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19735CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19736BEGIN 19737SET new.f_int1 = @my_max1 + @counter, 19738new.f_int2 = @my_min2 - @counter, 19739new.f_charbig = '####updated per insert trigger####'; 19740SET @counter = @counter + 1; 19741END| 19742SET @counter = 1; 19743SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19744Warnings: 19745Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19746INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19747SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19748CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19750ORDER BY f_int1; 19751DROP TRIGGER trg_3; 19752 19753# check trigger-11 success: 1 19754Warnings: 19755Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19756DELETE FROM t1 19757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19758AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19759AND f_charbig = '####updated per insert trigger####'; 19760CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19761BEGIN 19762SET new.f_int1 = @my_max1 + @counter, 19763new.f_int2 = @my_min2 - @counter, 19764new.f_charbig = '####updated per insert trigger####'; 19765SET @counter = @counter + 1; 19766END| 19767SET @counter = 1; 19768SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19769Warnings: 19770Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19771INSERT INTO t1 (f_char1, f_char2, f_charbig) 19772SELECT CAST(f_int1 AS CHAR), 19773CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19774WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19775ORDER BY f_int1; 19776DROP TRIGGER trg_3; 19777 19778# check trigger-12 success: 1 19779Warnings: 19780Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19781DELETE FROM t1 19782WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19783AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19784AND f_charbig = '####updated per insert trigger####'; 19785ANALYZE TABLE t1; 19786Table Op Msg_type Msg_text 19787test.t1 analyze status OK 19788test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19789CHECK TABLE t1 EXTENDED; 19790Table Op Msg_type Msg_text 19791test.t1 check status OK 19792test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19793CHECKSUM TABLE t1 EXTENDED; 19794Table Checksum 19795test.t1 <some_value> 19796OPTIMIZE TABLE t1; 19797Table Op Msg_type Msg_text 19798test.t1 optimize status OK 19799test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19800# check layout success: 1 19801REPAIR TABLE t1 EXTENDED; 19802Table Op Msg_type Msg_text 19803test.t1 repair status OK 19804test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19805# check layout success: 1 19806TRUNCATE t1; 19807Warnings: 19808Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19809 19810# check TRUNCATE success: 1 19811# check layout success: 1 19812# End usability test (inc/partition_check.inc) 19813DROP TABLE t1; 19814CREATE TABLE t1 ( 19815f_int1 INTEGER, 19816f_int2 INTEGER, 19817f_char1 CHAR(20), 19818f_char2 CHAR(20), 19819f_charbig VARCHAR(1000) 19820, UNIQUE INDEX uidx (f_int1,f_int2) 19821) 19822PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 19823(PARTITION parta VALUES LESS THAN (0), 19824PARTITION partb VALUES LESS THAN (5), 19825PARTITION partc VALUES LESS THAN (10), 19826PARTITION partd VALUES LESS THAN (2147483646)); 19827Warnings: 19828Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19829INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19830SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19831WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 19832Warnings: 19833Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19834ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 19835Warnings: 19836Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19837INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19838SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19839WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 19840Warnings: 19841Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19842# Start usability test (inc/partition_check.inc) 19843create_command 19844SHOW CREATE TABLE t1; 19845Table Create Table 19846t1 CREATE TABLE `t1` ( 19847 `f_int1` mediumint(9) DEFAULT NULL, 19848 `f_int2` mediumint(9) DEFAULT NULL, 19849 `f_char1` char(20) DEFAULT NULL, 19850 `f_char2` char(20) DEFAULT NULL, 19851 `f_charbig` varchar(1000) DEFAULT NULL, 19852 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 19853) ENGINE=MyISAM DEFAULT CHARSET=latin1 19854/*!50100 PARTITION BY RANGE (f_int1) 19855SUBPARTITION BY HASH (f_int2) 19856SUBPARTITIONS 2 19857(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 19858 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 19859 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 19860 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 19861 19862unified filelist 19863t1#P#parta#SP#partasp0.MYD 19864t1#P#parta#SP#partasp0.MYI 19865t1#P#parta#SP#partasp1.MYD 19866t1#P#parta#SP#partasp1.MYI 19867t1#P#partb#SP#partbsp0.MYD 19868t1#P#partb#SP#partbsp0.MYI 19869t1#P#partb#SP#partbsp1.MYD 19870t1#P#partb#SP#partbsp1.MYI 19871t1#P#partc#SP#partcsp0.MYD 19872t1#P#partc#SP#partcsp0.MYI 19873t1#P#partc#SP#partcsp1.MYD 19874t1#P#partc#SP#partcsp1.MYI 19875t1#P#partd#SP#partdsp0.MYD 19876t1#P#partd#SP#partdsp0.MYI 19877t1#P#partd#SP#partdsp1.MYD 19878t1#P#partd#SP#partdsp1.MYI 19879t1.frm 19880t1.par 19881 19882# check prerequisites-1 success: 1 19883# check COUNT(*) success: 1 19884# check MIN/MAX(f_int1) success: 1 19885# check MIN/MAX(f_int2) success: 1 19886INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19887SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19888CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19889WHERE f_int1 IN (2,3); 19890ERROR 23000: Duplicate entry '2-2' for key 'uidx' 19891# check prerequisites-3 success: 1 19892# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19893INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19894SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19895CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19896WHERE f_int1 IN (2,3); 19897DELETE FROM t1 WHERE f_charbig = 'delete me'; 19898INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19899SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19900CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19901WHERE f_int1 IN (2,3); 19902DELETE FROM t1 WHERE f_charbig = 'delete me'; 19903# check read via f_int1 success: 1 19904# check read via f_int2 success: 1 19905 19906# check multiple-1 success: 1 19907DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19908 19909# check multiple-2 success: 1 19910INSERT INTO t1 SELECT * FROM t0_template 19911WHERE MOD(f_int1,3) = 0; 19912 19913# check multiple-3 success: 1 19914UPDATE t1 SET f_int1 = f_int1 + @max_row 19915WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19916AND @max_row_div2 + @max_row_div4; 19917 19918# check multiple-4 success: 1 19919DELETE FROM t1 19920WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19921AND @max_row_div2 + @max_row_div4 + @max_row; 19922 19923# check multiple-5 success: 1 19924SELECT COUNT(*) INTO @try_count FROM t0_template 19925WHERE MOD(f_int1,3) = 0 19926AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19927SELECT COUNT(*) INTO @clash_count 19928FROM t1 INNER JOIN t0_template USING(f_int1) 19929WHERE MOD(f_int1,3) = 0 19930AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19931SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19932INSERT INTO t1 19933SET f_int1 = @cur_value , f_int2 = @cur_value, 19934f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19935f_charbig = '#SINGLE#'; 19936 19937# check single-1 success: 1 19938SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19939INSERT INTO t1 19940SET f_int1 = @cur_value , f_int2 = @cur_value, 19941f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19942f_charbig = '#SINGLE#'; 19943 19944# check single-2 success: 1 19945SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19946SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19947UPDATE t1 SET f_int1 = @cur_value2 19948WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19949 19950# check single-3 success: 1 19951SET @cur_value1= -1; 19952SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19953UPDATE t1 SET f_int1 = @cur_value1 19954WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19955 19956# check single-4 success: 1 19957SELECT MAX(f_int1) INTO @cur_value FROM t1; 19958DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19959 19960# check single-5 success: 1 19961DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19962 19963# check single-6 success: 1 19964INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19965Warnings: 19966Warning 1264 Out of range value for column 'f_int1' at row 1 19967Warning 1264 Out of range value for column 'f_int2' at row 1 19968 19969# check single-7 success: 1 19970DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19971DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19972INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19973f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19974f_charbig = '#NULL#'; 19975INSERT INTO t1 19976SET f_int1 = NULL , f_int2 = -@max_row, 19977f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19978f_charbig = '#NULL#'; 19979# check null success: 1 19980 19981# check null-1 success: 1 19982UPDATE t1 SET f_int1 = -@max_row 19983WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19984AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19985 19986# check null-2 success: 1 19987UPDATE t1 SET f_int1 = NULL 19988WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19989AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19990 19991# check null-3 success: 1 19992DELETE FROM t1 19993WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19994AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19995 19996# check null-4 success: 1 19997DELETE FROM t1 19998WHERE f_int1 = 0 AND f_int2 = 0 19999AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 20000AND f_charbig = '#NULL#'; 20001INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20002SELECT f_int1, f_int1, '', '', 'was inserted' 20003 FROM t0_template source_tab 20004WHERE MOD(f_int1,3) = 0 20005AND f_int1 BETWEEN @max_row_div2 AND @max_row 20006ON DUPLICATE KEY 20007UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 20008f_int2 = 2 * @max_row + source_tab.f_int1, 20009f_charbig = 'was updated'; 20010 20011# check unique-1-a success: 1 20012 20013# check unique-1-b success: 1 20014DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20016f_int2 = CAST(f_char1 AS SIGNED INT), 20017f_charbig = CONCAT('===',f_char1,'===') 20018WHERE f_charbig = 'was updated'; 20019REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20020SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 20021 FROM t0_template source_tab 20022WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20023 20024# check replace success: 1 20025DELETE FROM t1 20026WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 20027DELETE FROM t1 20028WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 20029f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 20030UPDATE t1 SET f_int2 = f_int1, 20031f_char1 = CAST(f_int1 AS CHAR), 20032f_char2 = CAST(f_int1 AS CHAR), 20033f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 20034WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 20035SET AUTOCOMMIT= 0; 20036INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20037SELECT f_int1, f_int1, '', '', 'was inserted' 20038FROM t0_template source_tab 20039WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20040 20041# check transactions-1 success: 1 20042COMMIT WORK; 20043 20044# check transactions-2 success: 1 20045ROLLBACK WORK; 20046 20047# check transactions-3 success: 1 20048DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20049COMMIT WORK; 20050ROLLBACK WORK; 20051 20052# check transactions-4 success: 1 20053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20054SELECT f_int1, f_int1, '', '', 'was inserted' 20055FROM t0_template source_tab 20056WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20057 20058# check transactions-5 success: 1 20059ROLLBACK WORK; 20060Warnings: 20061Warning 1196 Some non-transactional changed tables couldn't be rolled back 20062 20063# check transactions-6 success: 1 20064# INFO: Storage engine used for t1 seems to be not transactional. 20065COMMIT; 20066 20067# check transactions-7 success: 1 20068DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20069COMMIT WORK; 20070SET @@session.sql_mode = 'traditional'; 20071Warnings: 20072Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20073SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 20074INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20075SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 20076'', '', 'was inserted' FROM t0_template 20077WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20078ERROR 22012: Division by 0 20079COMMIT; 20080 20081# check transactions-8 success: 1 20082# INFO: Storage engine used for t1 seems to be unable to revert 20083# changes made by the failing statement. 20084SET @@session.sql_mode = ''; 20085Warnings: 20086Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20087SET AUTOCOMMIT= 1; 20088DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20089COMMIT WORK; 20090UPDATE t1 SET f_charbig = REPEAT('b', 1000); 20091 20092# check special-1 success: 1 20093UPDATE t1 SET f_charbig = ''; 20094 20095# check special-2 success: 1 20096UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 20097INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20098SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 20099WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20101SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20102'just inserted' FROM t0_template 20103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20104CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 20105BEGIN 20106UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20107f_charbig = 'updated by trigger' 20108 WHERE f_int1 = new.f_int1; 20109END| 20110INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20111SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20112WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20113 20114# check trigger-1 success: 1 20115DROP TRIGGER trg_1; 20116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20117f_int2 = CAST(f_char1 AS SIGNED INT), 20118f_charbig = 'just inserted' 20119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20120DELETE FROM t0_aux 20121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20123SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20124'just inserted' FROM t0_template 20125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20126CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20127BEGIN 20128UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20129f_charbig = 'updated by trigger' 20130 WHERE f_int1 = new.f_int1; 20131END| 20132INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20133SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20135 20136# check trigger-2 success: 1 20137DROP TRIGGER trg_1; 20138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20139f_int2 = CAST(f_char1 AS SIGNED INT), 20140f_charbig = 'just inserted' 20141 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20142DELETE FROM t0_aux 20143WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20144INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20145SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20146'just inserted' FROM t0_template 20147WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20148CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20149BEGIN 20150UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20151f_charbig = 'updated by trigger' 20152 WHERE f_int1 = new.f_int1; 20153END| 20154UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20155WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20156 20157# check trigger-3 success: 1 20158DROP TRIGGER trg_1; 20159UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20160f_int2 = CAST(f_char1 AS SIGNED INT), 20161f_charbig = 'just inserted' 20162 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20163DELETE FROM t0_aux 20164WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20165INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20166SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20167'just inserted' FROM t0_template 20168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20169CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20170BEGIN 20171UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20172f_charbig = 'updated by trigger' 20173 WHERE f_int1 = - old.f_int1; 20174END| 20175UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20176WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20177 20178# check trigger-4 success: 1 20179DROP TRIGGER trg_1; 20180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20181f_int2 = CAST(f_char1 AS SIGNED INT), 20182f_charbig = 'just inserted' 20183 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20184DELETE FROM t0_aux 20185WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20186INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20187SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20188'just inserted' FROM t0_template 20189WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20190CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20191BEGIN 20192UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20193f_charbig = 'updated by trigger' 20194 WHERE f_int1 = new.f_int1; 20195END| 20196UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20197WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20198 20199# check trigger-5 success: 1 20200DROP TRIGGER trg_1; 20201UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20202f_int2 = CAST(f_char1 AS SIGNED INT), 20203f_charbig = 'just inserted' 20204 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20205DELETE FROM t0_aux 20206WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20208SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20209'just inserted' FROM t0_template 20210WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20211CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20212BEGIN 20213UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20214f_charbig = 'updated by trigger' 20215 WHERE f_int1 = - old.f_int1; 20216END| 20217UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20218WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20219 20220# check trigger-6 success: 1 20221DROP TRIGGER trg_1; 20222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20223f_int2 = CAST(f_char1 AS SIGNED INT), 20224f_charbig = 'just inserted' 20225 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20226DELETE FROM t0_aux 20227WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20228INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20229SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20230'just inserted' FROM t0_template 20231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20232CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20233BEGIN 20234UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20235f_charbig = 'updated by trigger' 20236 WHERE f_int1 = - old.f_int1; 20237END| 20238DELETE FROM t0_aux 20239WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20240 20241# check trigger-7 success: 1 20242DROP TRIGGER trg_1; 20243UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20244f_int2 = CAST(f_char1 AS SIGNED INT), 20245f_charbig = 'just inserted' 20246 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20247DELETE FROM t0_aux 20248WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20250SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20251'just inserted' FROM t0_template 20252WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20253CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20254BEGIN 20255UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20256f_charbig = 'updated by trigger' 20257 WHERE f_int1 = - old.f_int1; 20258END| 20259DELETE FROM t0_aux 20260WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20261 20262# check trigger-8 success: 1 20263DROP TRIGGER trg_1; 20264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20265f_int2 = CAST(f_char1 AS SIGNED INT), 20266f_charbig = 'just inserted' 20267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20268DELETE FROM t0_aux 20269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20270DELETE FROM t1 20271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20272CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20273BEGIN 20274SET new.f_int1 = old.f_int1 + @max_row, 20275new.f_int2 = old.f_int2 - @max_row, 20276new.f_charbig = '####updated per update trigger####'; 20277END| 20278UPDATE t1 20279SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20280f_charbig = '####updated per update statement itself####'; 20281Warnings: 20282Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20283 20284# check trigger-9 success: 1 20285DROP TRIGGER trg_2; 20286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20287f_int2 = CAST(f_char1 AS SIGNED INT), 20288f_charbig = CONCAT('===',f_char1,'==='); 20289Warnings: 20290Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20291CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20292BEGIN 20293SET new.f_int1 = new.f_int1 + @max_row, 20294new.f_int2 = new.f_int2 - @max_row, 20295new.f_charbig = '####updated per update trigger####'; 20296END| 20297UPDATE t1 20298SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20299f_charbig = '####updated per update statement itself####'; 20300Warnings: 20301Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20302 20303# check trigger-10 success: 1 20304DROP TRIGGER trg_2; 20305UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20306f_int2 = CAST(f_char1 AS SIGNED INT), 20307f_charbig = CONCAT('===',f_char1,'==='); 20308Warnings: 20309Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20310CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20311BEGIN 20312SET new.f_int1 = @my_max1 + @counter, 20313new.f_int2 = @my_min2 - @counter, 20314new.f_charbig = '####updated per insert trigger####'; 20315SET @counter = @counter + 1; 20316END| 20317SET @counter = 1; 20318SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20319Warnings: 20320Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20321INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20322SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20323CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20325ORDER BY f_int1; 20326DROP TRIGGER trg_3; 20327 20328# check trigger-11 success: 1 20329Warnings: 20330Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20331DELETE FROM t1 20332WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20333AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20334AND f_charbig = '####updated per insert trigger####'; 20335CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20336BEGIN 20337SET new.f_int1 = @my_max1 + @counter, 20338new.f_int2 = @my_min2 - @counter, 20339new.f_charbig = '####updated per insert trigger####'; 20340SET @counter = @counter + 1; 20341END| 20342SET @counter = 1; 20343SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20344Warnings: 20345Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20346INSERT INTO t1 (f_char1, f_char2, f_charbig) 20347SELECT CAST(f_int1 AS CHAR), 20348CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20350ORDER BY f_int1; 20351DROP TRIGGER trg_3; 20352 20353# check trigger-12 success: 1 20354Warnings: 20355Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20356DELETE FROM t1 20357WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20358AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20359AND f_charbig = '####updated per insert trigger####'; 20360ANALYZE TABLE t1; 20361Table Op Msg_type Msg_text 20362test.t1 analyze status OK 20363test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20364CHECK TABLE t1 EXTENDED; 20365Table Op Msg_type Msg_text 20366test.t1 check status OK 20367test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20368CHECKSUM TABLE t1 EXTENDED; 20369Table Checksum 20370test.t1 <some_value> 20371OPTIMIZE TABLE t1; 20372Table Op Msg_type Msg_text 20373test.t1 optimize status OK 20374test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20375# check layout success: 1 20376REPAIR TABLE t1 EXTENDED; 20377Table Op Msg_type Msg_text 20378test.t1 repair status OK 20379test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20380# check layout success: 1 20381TRUNCATE t1; 20382Warnings: 20383Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20384 20385# check TRUNCATE success: 1 20386# check layout success: 1 20387# End usability test (inc/partition_check.inc) 20388DROP TABLE t1; 20389CREATE TABLE t1 ( 20390f_int1 INTEGER, 20391f_int2 INTEGER, 20392f_char1 CHAR(20), 20393f_char2 CHAR(20), 20394f_charbig VARCHAR(1000) 20395, UNIQUE INDEX uidx (f_int1,f_int2) 20396) 20397PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 20398(PARTITION part1 VALUES LESS THAN (0) 20399(SUBPARTITION subpart11, SUBPARTITION subpart12), 20400PARTITION part2 VALUES LESS THAN (5) 20401(SUBPARTITION subpart21, SUBPARTITION subpart22), 20402PARTITION part3 VALUES LESS THAN (10) 20403(SUBPARTITION subpart31, SUBPARTITION subpart32), 20404PARTITION part4 VALUES LESS THAN (2147483646) 20405(SUBPARTITION subpart41, SUBPARTITION subpart42)); 20406Warnings: 20407Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20408INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20409SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 20410WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 20411Warnings: 20412Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20413ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 20414Warnings: 20415Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20416INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20417SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 20418WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 20419Warnings: 20420Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20421# Start usability test (inc/partition_check.inc) 20422create_command 20423SHOW CREATE TABLE t1; 20424Table Create Table 20425t1 CREATE TABLE `t1` ( 20426 `f_int1` mediumint(9) DEFAULT NULL, 20427 `f_int2` mediumint(9) DEFAULT NULL, 20428 `f_char1` char(20) DEFAULT NULL, 20429 `f_char2` char(20) DEFAULT NULL, 20430 `f_charbig` varchar(1000) DEFAULT NULL, 20431 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 20432) ENGINE=MyISAM DEFAULT CHARSET=latin1 20433/*!50100 PARTITION BY RANGE (f_int1) 20434SUBPARTITION BY KEY (f_int2) 20435(PARTITION part1 VALUES LESS THAN (0) 20436 (SUBPARTITION subpart11 ENGINE = MyISAM, 20437 SUBPARTITION subpart12 ENGINE = MyISAM), 20438 PARTITION part2 VALUES LESS THAN (5) 20439 (SUBPARTITION subpart21 ENGINE = MyISAM, 20440 SUBPARTITION subpart22 ENGINE = MyISAM), 20441 PARTITION part3 VALUES LESS THAN (10) 20442 (SUBPARTITION subpart31 ENGINE = MyISAM, 20443 SUBPARTITION subpart32 ENGINE = MyISAM), 20444 PARTITION part4 VALUES LESS THAN (2147483646) 20445 (SUBPARTITION subpart41 ENGINE = MyISAM, 20446 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 20447 20448unified filelist 20449t1#P#part1#SP#subpart11.MYD 20450t1#P#part1#SP#subpart11.MYI 20451t1#P#part1#SP#subpart12.MYD 20452t1#P#part1#SP#subpart12.MYI 20453t1#P#part2#SP#subpart21.MYD 20454t1#P#part2#SP#subpart21.MYI 20455t1#P#part2#SP#subpart22.MYD 20456t1#P#part2#SP#subpart22.MYI 20457t1#P#part3#SP#subpart31.MYD 20458t1#P#part3#SP#subpart31.MYI 20459t1#P#part3#SP#subpart32.MYD 20460t1#P#part3#SP#subpart32.MYI 20461t1#P#part4#SP#subpart41.MYD 20462t1#P#part4#SP#subpart41.MYI 20463t1#P#part4#SP#subpart42.MYD 20464t1#P#part4#SP#subpart42.MYI 20465t1.frm 20466t1.par 20467 20468# check prerequisites-1 success: 1 20469# check COUNT(*) success: 1 20470# check MIN/MAX(f_int1) success: 1 20471# check MIN/MAX(f_int2) success: 1 20472INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20473SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20474CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 20475WHERE f_int1 IN (2,3); 20476ERROR 23000: Duplicate entry '2-2' for key 'uidx' 20477# check prerequisites-3 success: 1 20478# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 20479INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20480SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20481CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20482WHERE f_int1 IN (2,3); 20483DELETE FROM t1 WHERE f_charbig = 'delete me'; 20484INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20485SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20486CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20487WHERE f_int1 IN (2,3); 20488DELETE FROM t1 WHERE f_charbig = 'delete me'; 20489# check read via f_int1 success: 1 20490# check read via f_int2 success: 1 20491 20492# check multiple-1 success: 1 20493DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 20494 20495# check multiple-2 success: 1 20496INSERT INTO t1 SELECT * FROM t0_template 20497WHERE MOD(f_int1,3) = 0; 20498 20499# check multiple-3 success: 1 20500UPDATE t1 SET f_int1 = f_int1 + @max_row 20501WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 20502AND @max_row_div2 + @max_row_div4; 20503 20504# check multiple-4 success: 1 20505DELETE FROM t1 20506WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 20507AND @max_row_div2 + @max_row_div4 + @max_row; 20508 20509# check multiple-5 success: 1 20510SELECT COUNT(*) INTO @try_count FROM t0_template 20511WHERE MOD(f_int1,3) = 0 20512AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20513SELECT COUNT(*) INTO @clash_count 20514FROM t1 INNER JOIN t0_template USING(f_int1) 20515WHERE MOD(f_int1,3) = 0 20516AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20517SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 20518INSERT INTO t1 20519SET f_int1 = @cur_value , f_int2 = @cur_value, 20520f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20521f_charbig = '#SINGLE#'; 20522 20523# check single-1 success: 1 20524SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 20525INSERT INTO t1 20526SET f_int1 = @cur_value , f_int2 = @cur_value, 20527f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20528f_charbig = '#SINGLE#'; 20529 20530# check single-2 success: 1 20531SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 20532SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 20533UPDATE t1 SET f_int1 = @cur_value2 20534WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 20535 20536# check single-3 success: 1 20537SET @cur_value1= -1; 20538SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 20539UPDATE t1 SET f_int1 = @cur_value1 20540WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 20541 20542# check single-4 success: 1 20543SELECT MAX(f_int1) INTO @cur_value FROM t1; 20544DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 20545 20546# check single-5 success: 1 20547DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 20548 20549# check single-6 success: 1 20550INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 20551Warnings: 20552Warning 1264 Out of range value for column 'f_int1' at row 1 20553Warning 1264 Out of range value for column 'f_int2' at row 1 20554 20555# check single-7 success: 1 20556DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 20557DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 20558INSERT t1 SET f_int1 = 0 , f_int2 = 0, 20559f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 20560f_charbig = '#NULL#'; 20561INSERT INTO t1 20562SET f_int1 = NULL , f_int2 = -@max_row, 20563f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 20564f_charbig = '#NULL#'; 20565# check null success: 1 20566 20567# check null-1 success: 1 20568UPDATE t1 SET f_int1 = -@max_row 20569WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20570AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20571 20572# check null-2 success: 1 20573UPDATE t1 SET f_int1 = NULL 20574WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20575AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20576 20577# check null-3 success: 1 20578DELETE FROM t1 20579WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20580AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20581 20582# check null-4 success: 1 20583DELETE FROM t1 20584WHERE f_int1 = 0 AND f_int2 = 0 20585AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 20586AND f_charbig = '#NULL#'; 20587INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20588SELECT f_int1, f_int1, '', '', 'was inserted' 20589 FROM t0_template source_tab 20590WHERE MOD(f_int1,3) = 0 20591AND f_int1 BETWEEN @max_row_div2 AND @max_row 20592ON DUPLICATE KEY 20593UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 20594f_int2 = 2 * @max_row + source_tab.f_int1, 20595f_charbig = 'was updated'; 20596 20597# check unique-1-a success: 1 20598 20599# check unique-1-b success: 1 20600DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20602f_int2 = CAST(f_char1 AS SIGNED INT), 20603f_charbig = CONCAT('===',f_char1,'===') 20604WHERE f_charbig = 'was updated'; 20605REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20606SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 20607 FROM t0_template source_tab 20608WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20609 20610# check replace success: 1 20611DELETE FROM t1 20612WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 20613DELETE FROM t1 20614WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 20615f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 20616UPDATE t1 SET f_int2 = f_int1, 20617f_char1 = CAST(f_int1 AS CHAR), 20618f_char2 = CAST(f_int1 AS CHAR), 20619f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 20620WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 20621SET AUTOCOMMIT= 0; 20622INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20623SELECT f_int1, f_int1, '', '', 'was inserted' 20624FROM t0_template source_tab 20625WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20626 20627# check transactions-1 success: 1 20628COMMIT WORK; 20629 20630# check transactions-2 success: 1 20631ROLLBACK WORK; 20632 20633# check transactions-3 success: 1 20634DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20635COMMIT WORK; 20636ROLLBACK WORK; 20637 20638# check transactions-4 success: 1 20639INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20640SELECT f_int1, f_int1, '', '', 'was inserted' 20641FROM t0_template source_tab 20642WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20643 20644# check transactions-5 success: 1 20645ROLLBACK WORK; 20646Warnings: 20647Warning 1196 Some non-transactional changed tables couldn't be rolled back 20648 20649# check transactions-6 success: 1 20650# INFO: Storage engine used for t1 seems to be not transactional. 20651COMMIT; 20652 20653# check transactions-7 success: 1 20654DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20655COMMIT WORK; 20656SET @@session.sql_mode = 'traditional'; 20657Warnings: 20658Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20659SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 20660INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20661SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 20662'', '', 'was inserted' FROM t0_template 20663WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20664ERROR 22012: Division by 0 20665COMMIT; 20666 20667# check transactions-8 success: 1 20668# INFO: Storage engine used for t1 seems to be unable to revert 20669# changes made by the failing statement. 20670SET @@session.sql_mode = ''; 20671Warnings: 20672Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20673SET AUTOCOMMIT= 1; 20674DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20675COMMIT WORK; 20676UPDATE t1 SET f_charbig = REPEAT('b', 1000); 20677 20678# check special-1 success: 1 20679UPDATE t1 SET f_charbig = ''; 20680 20681# check special-2 success: 1 20682UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 20683INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20684SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 20685WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20686INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20687SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20688'just inserted' FROM t0_template 20689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20690CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 20691BEGIN 20692UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20693f_charbig = 'updated by trigger' 20694 WHERE f_int1 = new.f_int1; 20695END| 20696INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20697SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20698WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20699 20700# check trigger-1 success: 1 20701DROP TRIGGER trg_1; 20702UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20703f_int2 = CAST(f_char1 AS SIGNED INT), 20704f_charbig = 'just inserted' 20705 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20706DELETE FROM t0_aux 20707WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20708INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20709SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20710'just inserted' FROM t0_template 20711WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20712CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20713BEGIN 20714UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20715f_charbig = 'updated by trigger' 20716 WHERE f_int1 = new.f_int1; 20717END| 20718INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20719SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20720WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20721 20722# check trigger-2 success: 1 20723DROP TRIGGER trg_1; 20724UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20725f_int2 = CAST(f_char1 AS SIGNED INT), 20726f_charbig = 'just inserted' 20727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20728DELETE FROM t0_aux 20729WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20730INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20731SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20732'just inserted' FROM t0_template 20733WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20734CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20735BEGIN 20736UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20737f_charbig = 'updated by trigger' 20738 WHERE f_int1 = new.f_int1; 20739END| 20740UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20741WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20742 20743# check trigger-3 success: 1 20744DROP TRIGGER trg_1; 20745UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20746f_int2 = CAST(f_char1 AS SIGNED INT), 20747f_charbig = 'just inserted' 20748 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20749DELETE FROM t0_aux 20750WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20751INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20752SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20753'just inserted' FROM t0_template 20754WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20755CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20756BEGIN 20757UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20758f_charbig = 'updated by trigger' 20759 WHERE f_int1 = - old.f_int1; 20760END| 20761UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20762WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20763 20764# check trigger-4 success: 1 20765DROP TRIGGER trg_1; 20766UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20767f_int2 = CAST(f_char1 AS SIGNED INT), 20768f_charbig = 'just inserted' 20769 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20770DELETE FROM t0_aux 20771WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20772INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20773SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20774'just inserted' FROM t0_template 20775WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20776CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20777BEGIN 20778UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20779f_charbig = 'updated by trigger' 20780 WHERE f_int1 = new.f_int1; 20781END| 20782UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20783WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20784 20785# check trigger-5 success: 1 20786DROP TRIGGER trg_1; 20787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20788f_int2 = CAST(f_char1 AS SIGNED INT), 20789f_charbig = 'just inserted' 20790 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20791DELETE FROM t0_aux 20792WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20793INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20794SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20795'just inserted' FROM t0_template 20796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20797CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20798BEGIN 20799UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20800f_charbig = 'updated by trigger' 20801 WHERE f_int1 = - old.f_int1; 20802END| 20803UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20804WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20805 20806# check trigger-6 success: 1 20807DROP TRIGGER trg_1; 20808UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20809f_int2 = CAST(f_char1 AS SIGNED INT), 20810f_charbig = 'just inserted' 20811 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20812DELETE FROM t0_aux 20813WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20814INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20815SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20816'just inserted' FROM t0_template 20817WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20818CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20819BEGIN 20820UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20821f_charbig = 'updated by trigger' 20822 WHERE f_int1 = - old.f_int1; 20823END| 20824DELETE FROM t0_aux 20825WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20826 20827# check trigger-7 success: 1 20828DROP TRIGGER trg_1; 20829UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20830f_int2 = CAST(f_char1 AS SIGNED INT), 20831f_charbig = 'just inserted' 20832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20833DELETE FROM t0_aux 20834WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20835INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20836SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20837'just inserted' FROM t0_template 20838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20839CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20840BEGIN 20841UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20842f_charbig = 'updated by trigger' 20843 WHERE f_int1 = - old.f_int1; 20844END| 20845DELETE FROM t0_aux 20846WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20847 20848# check trigger-8 success: 1 20849DROP TRIGGER trg_1; 20850UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20851f_int2 = CAST(f_char1 AS SIGNED INT), 20852f_charbig = 'just inserted' 20853 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20854DELETE FROM t0_aux 20855WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20856DELETE FROM t1 20857WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20858CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20859BEGIN 20860SET new.f_int1 = old.f_int1 + @max_row, 20861new.f_int2 = old.f_int2 - @max_row, 20862new.f_charbig = '####updated per update trigger####'; 20863END| 20864UPDATE t1 20865SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20866f_charbig = '####updated per update statement itself####'; 20867Warnings: 20868Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20869 20870# check trigger-9 success: 1 20871DROP TRIGGER trg_2; 20872UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20873f_int2 = CAST(f_char1 AS SIGNED INT), 20874f_charbig = CONCAT('===',f_char1,'==='); 20875Warnings: 20876Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20877CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20878BEGIN 20879SET new.f_int1 = new.f_int1 + @max_row, 20880new.f_int2 = new.f_int2 - @max_row, 20881new.f_charbig = '####updated per update trigger####'; 20882END| 20883UPDATE t1 20884SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20885f_charbig = '####updated per update statement itself####'; 20886Warnings: 20887Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20888 20889# check trigger-10 success: 1 20890DROP TRIGGER trg_2; 20891UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20892f_int2 = CAST(f_char1 AS SIGNED INT), 20893f_charbig = CONCAT('===',f_char1,'==='); 20894Warnings: 20895Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20896CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20897BEGIN 20898SET new.f_int1 = @my_max1 + @counter, 20899new.f_int2 = @my_min2 - @counter, 20900new.f_charbig = '####updated per insert trigger####'; 20901SET @counter = @counter + 1; 20902END| 20903SET @counter = 1; 20904SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20905Warnings: 20906Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20907INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20908SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20909CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20911ORDER BY f_int1; 20912DROP TRIGGER trg_3; 20913 20914# check trigger-11 success: 1 20915Warnings: 20916Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20917DELETE FROM t1 20918WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20919AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20920AND f_charbig = '####updated per insert trigger####'; 20921CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20922BEGIN 20923SET new.f_int1 = @my_max1 + @counter, 20924new.f_int2 = @my_min2 - @counter, 20925new.f_charbig = '####updated per insert trigger####'; 20926SET @counter = @counter + 1; 20927END| 20928SET @counter = 1; 20929SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20930Warnings: 20931Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20932INSERT INTO t1 (f_char1, f_char2, f_charbig) 20933SELECT CAST(f_int1 AS CHAR), 20934CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20935WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20936ORDER BY f_int1; 20937DROP TRIGGER trg_3; 20938 20939# check trigger-12 success: 1 20940Warnings: 20941Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20942DELETE FROM t1 20943WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20944AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20945AND f_charbig = '####updated per insert trigger####'; 20946ANALYZE TABLE t1; 20947Table Op Msg_type Msg_text 20948test.t1 analyze status OK 20949test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20950CHECK TABLE t1 EXTENDED; 20951Table Op Msg_type Msg_text 20952test.t1 check status OK 20953test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20954CHECKSUM TABLE t1 EXTENDED; 20955Table Checksum 20956test.t1 <some_value> 20957OPTIMIZE TABLE t1; 20958Table Op Msg_type Msg_text 20959test.t1 optimize status OK 20960test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20961# check layout success: 1 20962REPAIR TABLE t1 EXTENDED; 20963Table Op Msg_type Msg_text 20964test.t1 repair status OK 20965test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20966# check layout success: 1 20967TRUNCATE t1; 20968Warnings: 20969Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20970 20971# check TRUNCATE success: 1 20972# check layout success: 1 20973# End usability test (inc/partition_check.inc) 20974DROP TABLE t1; 20975CREATE TABLE t1 ( 20976f_int1 INTEGER, 20977f_int2 INTEGER, 20978f_char1 CHAR(20), 20979f_char2 CHAR(20), 20980f_charbig VARCHAR(1000) 20981, UNIQUE INDEX uidx (f_int1,f_int2) 20982) 20983PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 20984(PARTITION part1 VALUES IN (0) 20985(SUBPARTITION sp11, SUBPARTITION sp12), 20986PARTITION part2 VALUES IN (1) 20987(SUBPARTITION sp21, SUBPARTITION sp22), 20988PARTITION part3 VALUES IN (2) 20989(SUBPARTITION sp31, SUBPARTITION sp32), 20990PARTITION part4 VALUES IN (NULL) 20991(SUBPARTITION sp41, SUBPARTITION sp42)); 20992Warnings: 20993Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20994INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20995SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 20996WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 20997Warnings: 20998Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20999ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 21000Warnings: 21001Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21002INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21003SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 21004WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 21005Warnings: 21006Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21007# Start usability test (inc/partition_check.inc) 21008create_command 21009SHOW CREATE TABLE t1; 21010Table Create Table 21011t1 CREATE TABLE `t1` ( 21012 `f_int1` mediumint(9) DEFAULT NULL, 21013 `f_int2` mediumint(9) DEFAULT NULL, 21014 `f_char1` char(20) DEFAULT NULL, 21015 `f_char2` char(20) DEFAULT NULL, 21016 `f_charbig` varchar(1000) DEFAULT NULL, 21017 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 21018) ENGINE=MyISAM DEFAULT CHARSET=latin1 21019/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 21020SUBPARTITION BY HASH (f_int2 + 1) 21021(PARTITION part1 VALUES IN (0) 21022 (SUBPARTITION sp11 ENGINE = MyISAM, 21023 SUBPARTITION sp12 ENGINE = MyISAM), 21024 PARTITION part2 VALUES IN (1) 21025 (SUBPARTITION sp21 ENGINE = MyISAM, 21026 SUBPARTITION sp22 ENGINE = MyISAM), 21027 PARTITION part3 VALUES IN (2) 21028 (SUBPARTITION sp31 ENGINE = MyISAM, 21029 SUBPARTITION sp32 ENGINE = MyISAM), 21030 PARTITION part4 VALUES IN (NULL) 21031 (SUBPARTITION sp41 ENGINE = MyISAM, 21032 SUBPARTITION sp42 ENGINE = MyISAM)) */ 21033 21034unified filelist 21035t1#P#part1#SP#sp11.MYD 21036t1#P#part1#SP#sp11.MYI 21037t1#P#part1#SP#sp12.MYD 21038t1#P#part1#SP#sp12.MYI 21039t1#P#part2#SP#sp21.MYD 21040t1#P#part2#SP#sp21.MYI 21041t1#P#part2#SP#sp22.MYD 21042t1#P#part2#SP#sp22.MYI 21043t1#P#part3#SP#sp31.MYD 21044t1#P#part3#SP#sp31.MYI 21045t1#P#part3#SP#sp32.MYD 21046t1#P#part3#SP#sp32.MYI 21047t1#P#part4#SP#sp41.MYD 21048t1#P#part4#SP#sp41.MYI 21049t1#P#part4#SP#sp42.MYD 21050t1#P#part4#SP#sp42.MYI 21051t1.frm 21052t1.par 21053 21054# check prerequisites-1 success: 1 21055# check COUNT(*) success: 1 21056# check MIN/MAX(f_int1) success: 1 21057# check MIN/MAX(f_int2) success: 1 21058INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21059SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21060CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 21061WHERE f_int1 IN (2,3); 21062ERROR 23000: Duplicate entry '2-2' for key 'uidx' 21063# check prerequisites-3 success: 1 21064# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 21065INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21066SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21067CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21068WHERE f_int1 IN (2,3); 21069DELETE FROM t1 WHERE f_charbig = 'delete me'; 21070INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21071SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21072CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21073WHERE f_int1 IN (2,3); 21074DELETE FROM t1 WHERE f_charbig = 'delete me'; 21075# check read via f_int1 success: 1 21076# check read via f_int2 success: 1 21077 21078# check multiple-1 success: 1 21079DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 21080 21081# check multiple-2 success: 1 21082INSERT INTO t1 SELECT * FROM t0_template 21083WHERE MOD(f_int1,3) = 0; 21084 21085# check multiple-3 success: 1 21086UPDATE t1 SET f_int1 = f_int1 + @max_row 21087WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 21088AND @max_row_div2 + @max_row_div4; 21089 21090# check multiple-4 success: 1 21091DELETE FROM t1 21092WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 21093AND @max_row_div2 + @max_row_div4 + @max_row; 21094 21095# check multiple-5 success: 1 21096SELECT COUNT(*) INTO @try_count FROM t0_template 21097WHERE MOD(f_int1,3) = 0 21098AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21099SELECT COUNT(*) INTO @clash_count 21100FROM t1 INNER JOIN t0_template USING(f_int1) 21101WHERE MOD(f_int1,3) = 0 21102AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21103SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 21104INSERT INTO t1 21105SET f_int1 = @cur_value , f_int2 = @cur_value, 21106f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21107f_charbig = '#SINGLE#'; 21108 21109# check single-1 success: 1 21110SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21111INSERT INTO t1 21112SET f_int1 = @cur_value , f_int2 = @cur_value, 21113f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21114f_charbig = '#SINGLE#'; 21115 21116# check single-2 success: 1 21117SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21118SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21119UPDATE t1 SET f_int1 = @cur_value2 21120WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21121 21122# check single-3 success: 1 21123SET @cur_value1= -1; 21124SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21125UPDATE t1 SET f_int1 = @cur_value1 21126WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21127 21128# check single-4 success: 1 21129SELECT MAX(f_int1) INTO @cur_value FROM t1; 21130DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21131 21132# check single-5 success: 1 21133DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21134 21135# check single-6 success: 1 21136INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21137Warnings: 21138Warning 1264 Out of range value for column 'f_int1' at row 1 21139Warning 1264 Out of range value for column 'f_int2' at row 1 21140 21141# check single-7 success: 1 21142DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 21143DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21144INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21145f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21146f_charbig = '#NULL#'; 21147INSERT INTO t1 21148SET f_int1 = NULL , f_int2 = -@max_row, 21149f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21150f_charbig = '#NULL#'; 21151# check null success: 1 21152 21153# check null-1 success: 1 21154UPDATE t1 SET f_int1 = -@max_row 21155WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21156AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21157 21158# check null-2 success: 1 21159UPDATE t1 SET f_int1 = NULL 21160WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21161AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21162 21163# check null-3 success: 1 21164DELETE FROM t1 21165WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21166AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21167 21168# check null-4 success: 1 21169DELETE FROM t1 21170WHERE f_int1 = 0 AND f_int2 = 0 21171AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21172AND f_charbig = '#NULL#'; 21173INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21174SELECT f_int1, f_int1, '', '', 'was inserted' 21175 FROM t0_template source_tab 21176WHERE MOD(f_int1,3) = 0 21177AND f_int1 BETWEEN @max_row_div2 AND @max_row 21178ON DUPLICATE KEY 21179UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21180f_int2 = 2 * @max_row + source_tab.f_int1, 21181f_charbig = 'was updated'; 21182 21183# check unique-1-a success: 1 21184 21185# check unique-1-b success: 1 21186DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21187UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21188f_int2 = CAST(f_char1 AS SIGNED INT), 21189f_charbig = CONCAT('===',f_char1,'===') 21190WHERE f_charbig = 'was updated'; 21191REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21192SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21193 FROM t0_template source_tab 21194WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21195 21196# check replace success: 1 21197DELETE FROM t1 21198WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21199DELETE FROM t1 21200WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21201f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21202UPDATE t1 SET f_int2 = f_int1, 21203f_char1 = CAST(f_int1 AS CHAR), 21204f_char2 = CAST(f_int1 AS CHAR), 21205f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21206WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21207SET AUTOCOMMIT= 0; 21208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21209SELECT f_int1, f_int1, '', '', 'was inserted' 21210FROM t0_template source_tab 21211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21212 21213# check transactions-1 success: 1 21214COMMIT WORK; 21215 21216# check transactions-2 success: 1 21217ROLLBACK WORK; 21218 21219# check transactions-3 success: 1 21220DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21221COMMIT WORK; 21222ROLLBACK WORK; 21223 21224# check transactions-4 success: 1 21225INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21226SELECT f_int1, f_int1, '', '', 'was inserted' 21227FROM t0_template source_tab 21228WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21229 21230# check transactions-5 success: 1 21231ROLLBACK WORK; 21232Warnings: 21233Warning 1196 Some non-transactional changed tables couldn't be rolled back 21234 21235# check transactions-6 success: 1 21236# INFO: Storage engine used for t1 seems to be not transactional. 21237COMMIT; 21238 21239# check transactions-7 success: 1 21240DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21241COMMIT WORK; 21242SET @@session.sql_mode = 'traditional'; 21243Warnings: 21244Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21245SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21246INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21247SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21248'', '', 'was inserted' FROM t0_template 21249WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21250ERROR 22012: Division by 0 21251COMMIT; 21252 21253# check transactions-8 success: 1 21254# INFO: Storage engine used for t1 seems to be unable to revert 21255# changes made by the failing statement. 21256SET @@session.sql_mode = ''; 21257Warnings: 21258Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21259SET AUTOCOMMIT= 1; 21260DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21261COMMIT WORK; 21262UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21263 21264# check special-1 success: 1 21265UPDATE t1 SET f_charbig = ''; 21266 21267# check special-2 success: 1 21268UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21269INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21270SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21272INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21273SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21274'just inserted' FROM t0_template 21275WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21276CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21277BEGIN 21278UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21279f_charbig = 'updated by trigger' 21280 WHERE f_int1 = new.f_int1; 21281END| 21282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21283SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21284WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21285 21286# check trigger-1 success: 1 21287DROP TRIGGER trg_1; 21288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21289f_int2 = CAST(f_char1 AS SIGNED INT), 21290f_charbig = 'just inserted' 21291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21292DELETE FROM t0_aux 21293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21294INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21295SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21296'just inserted' FROM t0_template 21297WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21298CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21299BEGIN 21300UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21301f_charbig = 'updated by trigger' 21302 WHERE f_int1 = new.f_int1; 21303END| 21304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21305SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21307 21308# check trigger-2 success: 1 21309DROP TRIGGER trg_1; 21310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21311f_int2 = CAST(f_char1 AS SIGNED INT), 21312f_charbig = 'just inserted' 21313 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21314DELETE FROM t0_aux 21315WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21316INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21317SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21318'just inserted' FROM t0_template 21319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21320CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21321BEGIN 21322UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21323f_charbig = 'updated by trigger' 21324 WHERE f_int1 = new.f_int1; 21325END| 21326UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21327WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21328 21329# check trigger-3 success: 1 21330DROP TRIGGER trg_1; 21331UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21332f_int2 = CAST(f_char1 AS SIGNED INT), 21333f_charbig = 'just inserted' 21334 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21335DELETE FROM t0_aux 21336WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21339'just inserted' FROM t0_template 21340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21341CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21342BEGIN 21343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21344f_charbig = 'updated by trigger' 21345 WHERE f_int1 = - old.f_int1; 21346END| 21347UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21348WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21349 21350# check trigger-4 success: 1 21351DROP TRIGGER trg_1; 21352UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21353f_int2 = CAST(f_char1 AS SIGNED INT), 21354f_charbig = 'just inserted' 21355 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21356DELETE FROM t0_aux 21357WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21358INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21359SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21360'just inserted' FROM t0_template 21361WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21362CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21363BEGIN 21364UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21365f_charbig = 'updated by trigger' 21366 WHERE f_int1 = new.f_int1; 21367END| 21368UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21369WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21370 21371# check trigger-5 success: 1 21372DROP TRIGGER trg_1; 21373UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21374f_int2 = CAST(f_char1 AS SIGNED INT), 21375f_charbig = 'just inserted' 21376 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21377DELETE FROM t0_aux 21378WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21379INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21380SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21381'just inserted' FROM t0_template 21382WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21383CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21384BEGIN 21385UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21386f_charbig = 'updated by trigger' 21387 WHERE f_int1 = - old.f_int1; 21388END| 21389UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21390WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21391 21392# check trigger-6 success: 1 21393DROP TRIGGER trg_1; 21394UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21395f_int2 = CAST(f_char1 AS SIGNED INT), 21396f_charbig = 'just inserted' 21397 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21398DELETE FROM t0_aux 21399WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21400INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21401SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21402'just inserted' FROM t0_template 21403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21404CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21405BEGIN 21406UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21407f_charbig = 'updated by trigger' 21408 WHERE f_int1 = - old.f_int1; 21409END| 21410DELETE FROM t0_aux 21411WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21412 21413# check trigger-7 success: 1 21414DROP TRIGGER trg_1; 21415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21416f_int2 = CAST(f_char1 AS SIGNED INT), 21417f_charbig = 'just inserted' 21418 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21419DELETE FROM t0_aux 21420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21423'just inserted' FROM t0_template 21424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21425CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 21426BEGIN 21427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21428f_charbig = 'updated by trigger' 21429 WHERE f_int1 = - old.f_int1; 21430END| 21431DELETE FROM t0_aux 21432WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21433 21434# check trigger-8 success: 1 21435DROP TRIGGER trg_1; 21436UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21437f_int2 = CAST(f_char1 AS SIGNED INT), 21438f_charbig = 'just inserted' 21439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21440DELETE FROM t0_aux 21441WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21442DELETE FROM t1 21443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21444CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21445BEGIN 21446SET new.f_int1 = old.f_int1 + @max_row, 21447new.f_int2 = old.f_int2 - @max_row, 21448new.f_charbig = '####updated per update trigger####'; 21449END| 21450UPDATE t1 21451SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21452f_charbig = '####updated per update statement itself####'; 21453Warnings: 21454Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21455 21456# check trigger-9 success: 1 21457DROP TRIGGER trg_2; 21458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21459f_int2 = CAST(f_char1 AS SIGNED INT), 21460f_charbig = CONCAT('===',f_char1,'==='); 21461Warnings: 21462Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21463CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21464BEGIN 21465SET new.f_int1 = new.f_int1 + @max_row, 21466new.f_int2 = new.f_int2 - @max_row, 21467new.f_charbig = '####updated per update trigger####'; 21468END| 21469UPDATE t1 21470SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21471f_charbig = '####updated per update statement itself####'; 21472Warnings: 21473Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21474 21475# check trigger-10 success: 1 21476DROP TRIGGER trg_2; 21477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21478f_int2 = CAST(f_char1 AS SIGNED INT), 21479f_charbig = CONCAT('===',f_char1,'==='); 21480Warnings: 21481Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21482CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21483BEGIN 21484SET new.f_int1 = @my_max1 + @counter, 21485new.f_int2 = @my_min2 - @counter, 21486new.f_charbig = '####updated per insert trigger####'; 21487SET @counter = @counter + 1; 21488END| 21489SET @counter = 1; 21490SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21491Warnings: 21492Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21493INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21494SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21495CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21496WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21497ORDER BY f_int1; 21498DROP TRIGGER trg_3; 21499 21500# check trigger-11 success: 1 21501Warnings: 21502Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21503DELETE FROM t1 21504WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21505AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21506AND f_charbig = '####updated per insert trigger####'; 21507CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21508BEGIN 21509SET new.f_int1 = @my_max1 + @counter, 21510new.f_int2 = @my_min2 - @counter, 21511new.f_charbig = '####updated per insert trigger####'; 21512SET @counter = @counter + 1; 21513END| 21514SET @counter = 1; 21515SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21516Warnings: 21517Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21518INSERT INTO t1 (f_char1, f_char2, f_charbig) 21519SELECT CAST(f_int1 AS CHAR), 21520CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21522ORDER BY f_int1; 21523DROP TRIGGER trg_3; 21524 21525# check trigger-12 success: 1 21526Warnings: 21527Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21528DELETE FROM t1 21529WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21530AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21531AND f_charbig = '####updated per insert trigger####'; 21532ANALYZE TABLE t1; 21533Table Op Msg_type Msg_text 21534test.t1 analyze status OK 21535test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21536CHECK TABLE t1 EXTENDED; 21537Table Op Msg_type Msg_text 21538test.t1 check status OK 21539test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21540CHECKSUM TABLE t1 EXTENDED; 21541Table Checksum 21542test.t1 <some_value> 21543OPTIMIZE TABLE t1; 21544Table Op Msg_type Msg_text 21545test.t1 optimize status OK 21546test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21547# check layout success: 1 21548REPAIR TABLE t1 EXTENDED; 21549Table Op Msg_type Msg_text 21550test.t1 repair status OK 21551test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21552# check layout success: 1 21553TRUNCATE t1; 21554Warnings: 21555Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21556 21557# check TRUNCATE success: 1 21558# check layout success: 1 21559# End usability test (inc/partition_check.inc) 21560DROP TABLE t1; 21561CREATE TABLE t1 ( 21562f_int1 INTEGER, 21563f_int2 INTEGER, 21564f_char1 CHAR(20), 21565f_char2 CHAR(20), 21566f_charbig VARCHAR(1000) 21567, UNIQUE INDEX uidx (f_int1,f_int2) 21568) 21569PARTITION BY LIST(ABS(MOD(f_int1,2))) 21570SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 21571(PARTITION part1 VALUES IN (0), 21572PARTITION part2 VALUES IN (1), 21573PARTITION part3 VALUES IN (NULL)); 21574Warnings: 21575Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21576INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21577SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 21578WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 21579Warnings: 21580Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21581ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 21582Warnings: 21583Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21584INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21585SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 21586WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 21587Warnings: 21588Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21589# Start usability test (inc/partition_check.inc) 21590create_command 21591SHOW CREATE TABLE t1; 21592Table Create Table 21593t1 CREATE TABLE `t1` ( 21594 `f_int1` mediumint(9) DEFAULT NULL, 21595 `f_int2` mediumint(9) DEFAULT NULL, 21596 `f_char1` char(20) DEFAULT NULL, 21597 `f_char2` char(20) DEFAULT NULL, 21598 `f_charbig` varchar(1000) DEFAULT NULL, 21599 UNIQUE KEY `uidx` (`f_int1`,`f_int2`) 21600) ENGINE=MyISAM DEFAULT CHARSET=latin1 21601/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 21602SUBPARTITION BY KEY (f_int2) 21603SUBPARTITIONS 3 21604(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 21605 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 21606 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 21607 21608unified filelist 21609t1#P#part1#SP#part1sp0.MYD 21610t1#P#part1#SP#part1sp0.MYI 21611t1#P#part1#SP#part1sp1.MYD 21612t1#P#part1#SP#part1sp1.MYI 21613t1#P#part1#SP#part1sp2.MYD 21614t1#P#part1#SP#part1sp2.MYI 21615t1#P#part2#SP#part2sp0.MYD 21616t1#P#part2#SP#part2sp0.MYI 21617t1#P#part2#SP#part2sp1.MYD 21618t1#P#part2#SP#part2sp1.MYI 21619t1#P#part2#SP#part2sp2.MYD 21620t1#P#part2#SP#part2sp2.MYI 21621t1#P#part3#SP#part3sp0.MYD 21622t1#P#part3#SP#part3sp0.MYI 21623t1#P#part3#SP#part3sp1.MYD 21624t1#P#part3#SP#part3sp1.MYI 21625t1#P#part3#SP#part3sp2.MYD 21626t1#P#part3#SP#part3sp2.MYI 21627t1.frm 21628t1.par 21629 21630# check prerequisites-1 success: 1 21631# check COUNT(*) success: 1 21632# check MIN/MAX(f_int1) success: 1 21633# check MIN/MAX(f_int2) success: 1 21634INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21635SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21636CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 21637WHERE f_int1 IN (2,3); 21638ERROR 23000: Duplicate entry '2-2' for key 'uidx' 21639# check prerequisites-3 success: 1 21640# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 21641INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21642SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21643CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21644WHERE f_int1 IN (2,3); 21645DELETE FROM t1 WHERE f_charbig = 'delete me'; 21646INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21647SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21648CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21649WHERE f_int1 IN (2,3); 21650DELETE FROM t1 WHERE f_charbig = 'delete me'; 21651# check read via f_int1 success: 1 21652# check read via f_int2 success: 1 21653 21654# check multiple-1 success: 1 21655DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 21656 21657# check multiple-2 success: 1 21658INSERT INTO t1 SELECT * FROM t0_template 21659WHERE MOD(f_int1,3) = 0; 21660 21661# check multiple-3 success: 1 21662UPDATE t1 SET f_int1 = f_int1 + @max_row 21663WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 21664AND @max_row_div2 + @max_row_div4; 21665 21666# check multiple-4 success: 1 21667DELETE FROM t1 21668WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 21669AND @max_row_div2 + @max_row_div4 + @max_row; 21670 21671# check multiple-5 success: 1 21672SELECT COUNT(*) INTO @try_count FROM t0_template 21673WHERE MOD(f_int1,3) = 0 21674AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21675SELECT COUNT(*) INTO @clash_count 21676FROM t1 INNER JOIN t0_template USING(f_int1) 21677WHERE MOD(f_int1,3) = 0 21678AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21679SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 21680INSERT INTO t1 21681SET f_int1 = @cur_value , f_int2 = @cur_value, 21682f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21683f_charbig = '#SINGLE#'; 21684 21685# check single-1 success: 1 21686SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21687INSERT INTO t1 21688SET f_int1 = @cur_value , f_int2 = @cur_value, 21689f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21690f_charbig = '#SINGLE#'; 21691 21692# check single-2 success: 1 21693SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21694SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21695UPDATE t1 SET f_int1 = @cur_value2 21696WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21697 21698# check single-3 success: 1 21699SET @cur_value1= -1; 21700SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21701UPDATE t1 SET f_int1 = @cur_value1 21702WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21703 21704# check single-4 success: 1 21705SELECT MAX(f_int1) INTO @cur_value FROM t1; 21706DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21707 21708# check single-5 success: 1 21709DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21710 21711# check single-6 success: 1 21712INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21713Warnings: 21714Warning 1264 Out of range value for column 'f_int1' at row 1 21715Warning 1264 Out of range value for column 'f_int2' at row 1 21716 21717# check single-7 success: 1 21718DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 21719DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21720INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21721f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21722f_charbig = '#NULL#'; 21723INSERT INTO t1 21724SET f_int1 = NULL , f_int2 = -@max_row, 21725f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21726f_charbig = '#NULL#'; 21727# check null success: 1 21728 21729# check null-1 success: 1 21730UPDATE t1 SET f_int1 = -@max_row 21731WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21732AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21733 21734# check null-2 success: 1 21735UPDATE t1 SET f_int1 = NULL 21736WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21737AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21738 21739# check null-3 success: 1 21740DELETE FROM t1 21741WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21742AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21743 21744# check null-4 success: 1 21745DELETE FROM t1 21746WHERE f_int1 = 0 AND f_int2 = 0 21747AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21748AND f_charbig = '#NULL#'; 21749INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21750SELECT f_int1, f_int1, '', '', 'was inserted' 21751 FROM t0_template source_tab 21752WHERE MOD(f_int1,3) = 0 21753AND f_int1 BETWEEN @max_row_div2 AND @max_row 21754ON DUPLICATE KEY 21755UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21756f_int2 = 2 * @max_row + source_tab.f_int1, 21757f_charbig = 'was updated'; 21758 21759# check unique-1-a success: 1 21760 21761# check unique-1-b success: 1 21762DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21763UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21764f_int2 = CAST(f_char1 AS SIGNED INT), 21765f_charbig = CONCAT('===',f_char1,'===') 21766WHERE f_charbig = 'was updated'; 21767REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21768SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21769 FROM t0_template source_tab 21770WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21771 21772# check replace success: 1 21773DELETE FROM t1 21774WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21775DELETE FROM t1 21776WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21777f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21778UPDATE t1 SET f_int2 = f_int1, 21779f_char1 = CAST(f_int1 AS CHAR), 21780f_char2 = CAST(f_int1 AS CHAR), 21781f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21782WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21783SET AUTOCOMMIT= 0; 21784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21785SELECT f_int1, f_int1, '', '', 'was inserted' 21786FROM t0_template source_tab 21787WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21788 21789# check transactions-1 success: 1 21790COMMIT WORK; 21791 21792# check transactions-2 success: 1 21793ROLLBACK WORK; 21794 21795# check transactions-3 success: 1 21796DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21797COMMIT WORK; 21798ROLLBACK WORK; 21799 21800# check transactions-4 success: 1 21801INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21802SELECT f_int1, f_int1, '', '', 'was inserted' 21803FROM t0_template source_tab 21804WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21805 21806# check transactions-5 success: 1 21807ROLLBACK WORK; 21808Warnings: 21809Warning 1196 Some non-transactional changed tables couldn't be rolled back 21810 21811# check transactions-6 success: 1 21812# INFO: Storage engine used for t1 seems to be not transactional. 21813COMMIT; 21814 21815# check transactions-7 success: 1 21816DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21817COMMIT WORK; 21818SET @@session.sql_mode = 'traditional'; 21819Warnings: 21820Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21821SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21822INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21823SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21824'', '', 'was inserted' FROM t0_template 21825WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21826ERROR 22012: Division by 0 21827COMMIT; 21828 21829# check transactions-8 success: 1 21830# INFO: Storage engine used for t1 seems to be unable to revert 21831# changes made by the failing statement. 21832SET @@session.sql_mode = ''; 21833Warnings: 21834Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21835SET AUTOCOMMIT= 1; 21836DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21837COMMIT WORK; 21838UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21839 21840# check special-1 success: 1 21841UPDATE t1 SET f_charbig = ''; 21842 21843# check special-2 success: 1 21844UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21845INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21846SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21848INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21849SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21850'just inserted' FROM t0_template 21851WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21852CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21853BEGIN 21854UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21855f_charbig = 'updated by trigger' 21856 WHERE f_int1 = new.f_int1; 21857END| 21858INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21859SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21861 21862# check trigger-1 success: 1 21863DROP TRIGGER trg_1; 21864UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21865f_int2 = CAST(f_char1 AS SIGNED INT), 21866f_charbig = 'just inserted' 21867 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21868DELETE FROM t0_aux 21869WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21870INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21871SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21872'just inserted' FROM t0_template 21873WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21874CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21875BEGIN 21876UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21877f_charbig = 'updated by trigger' 21878 WHERE f_int1 = new.f_int1; 21879END| 21880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21881SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21882WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21883 21884# check trigger-2 success: 1 21885DROP TRIGGER trg_1; 21886UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21887f_int2 = CAST(f_char1 AS SIGNED INT), 21888f_charbig = 'just inserted' 21889 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21890DELETE FROM t0_aux 21891WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21892INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21893SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21894'just inserted' FROM t0_template 21895WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21896CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21897BEGIN 21898UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21899f_charbig = 'updated by trigger' 21900 WHERE f_int1 = new.f_int1; 21901END| 21902UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21903WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21904 21905# check trigger-3 success: 1 21906DROP TRIGGER trg_1; 21907UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21908f_int2 = CAST(f_char1 AS SIGNED INT), 21909f_charbig = 'just inserted' 21910 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21911DELETE FROM t0_aux 21912WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21913INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21914SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21915'just inserted' FROM t0_template 21916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21917CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21918BEGIN 21919UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21920f_charbig = 'updated by trigger' 21921 WHERE f_int1 = - old.f_int1; 21922END| 21923UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21924WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21925 21926# check trigger-4 success: 1 21927DROP TRIGGER trg_1; 21928UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21929f_int2 = CAST(f_char1 AS SIGNED INT), 21930f_charbig = 'just inserted' 21931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21932DELETE FROM t0_aux 21933WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21935SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21936'just inserted' FROM t0_template 21937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21938CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21939BEGIN 21940UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21941f_charbig = 'updated by trigger' 21942 WHERE f_int1 = new.f_int1; 21943END| 21944UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21945WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21946 21947# check trigger-5 success: 1 21948DROP TRIGGER trg_1; 21949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21950f_int2 = CAST(f_char1 AS SIGNED INT), 21951f_charbig = 'just inserted' 21952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21953DELETE FROM t0_aux 21954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21957'just inserted' FROM t0_template 21958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21959CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21960BEGIN 21961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21962f_charbig = 'updated by trigger' 21963 WHERE f_int1 = - old.f_int1; 21964END| 21965UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21967 21968# check trigger-6 success: 1 21969DROP TRIGGER trg_1; 21970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21971f_int2 = CAST(f_char1 AS SIGNED INT), 21972f_charbig = 'just inserted' 21973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21974DELETE FROM t0_aux 21975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21978'just inserted' FROM t0_template 21979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21980CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21981BEGIN 21982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21983f_charbig = 'updated by trigger' 21984 WHERE f_int1 = - old.f_int1; 21985END| 21986DELETE FROM t0_aux 21987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21988 21989# check trigger-7 success: 1 21990DROP TRIGGER trg_1; 21991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21992f_int2 = CAST(f_char1 AS SIGNED INT), 21993f_charbig = 'just inserted' 21994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21995DELETE FROM t0_aux 21996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21999'just inserted' FROM t0_template 22000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22001CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 22002BEGIN 22003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22004f_charbig = 'updated by trigger' 22005 WHERE f_int1 = - old.f_int1; 22006END| 22007DELETE FROM t0_aux 22008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22009 22010# check trigger-8 success: 1 22011DROP TRIGGER trg_1; 22012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22013f_int2 = CAST(f_char1 AS SIGNED INT), 22014f_charbig = 'just inserted' 22015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22016DELETE FROM t0_aux 22017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22018DELETE FROM t1 22019WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22020CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22021BEGIN 22022SET new.f_int1 = old.f_int1 + @max_row, 22023new.f_int2 = old.f_int2 - @max_row, 22024new.f_charbig = '####updated per update trigger####'; 22025END| 22026UPDATE t1 22027SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22028f_charbig = '####updated per update statement itself####'; 22029Warnings: 22030Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22031 22032# check trigger-9 success: 1 22033DROP TRIGGER trg_2; 22034UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22035f_int2 = CAST(f_char1 AS SIGNED INT), 22036f_charbig = CONCAT('===',f_char1,'==='); 22037Warnings: 22038Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22039CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22040BEGIN 22041SET new.f_int1 = new.f_int1 + @max_row, 22042new.f_int2 = new.f_int2 - @max_row, 22043new.f_charbig = '####updated per update trigger####'; 22044END| 22045UPDATE t1 22046SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22047f_charbig = '####updated per update statement itself####'; 22048Warnings: 22049Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22050 22051# check trigger-10 success: 1 22052DROP TRIGGER trg_2; 22053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22054f_int2 = CAST(f_char1 AS SIGNED INT), 22055f_charbig = CONCAT('===',f_char1,'==='); 22056Warnings: 22057Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22058CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22059BEGIN 22060SET new.f_int1 = @my_max1 + @counter, 22061new.f_int2 = @my_min2 - @counter, 22062new.f_charbig = '####updated per insert trigger####'; 22063SET @counter = @counter + 1; 22064END| 22065SET @counter = 1; 22066SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22067Warnings: 22068Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22069INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22070SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22071CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22072WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22073ORDER BY f_int1; 22074DROP TRIGGER trg_3; 22075 22076# check trigger-11 success: 1 22077Warnings: 22078Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22079DELETE FROM t1 22080WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22081AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22082AND f_charbig = '####updated per insert trigger####'; 22083CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22084BEGIN 22085SET new.f_int1 = @my_max1 + @counter, 22086new.f_int2 = @my_min2 - @counter, 22087new.f_charbig = '####updated per insert trigger####'; 22088SET @counter = @counter + 1; 22089END| 22090SET @counter = 1; 22091SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22092Warnings: 22093Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22094INSERT INTO t1 (f_char1, f_char2, f_charbig) 22095SELECT CAST(f_int1 AS CHAR), 22096CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22097WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22098ORDER BY f_int1; 22099DROP TRIGGER trg_3; 22100 22101# check trigger-12 success: 1 22102Warnings: 22103Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22104DELETE FROM t1 22105WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22106AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22107AND f_charbig = '####updated per insert trigger####'; 22108ANALYZE TABLE t1; 22109Table Op Msg_type Msg_text 22110test.t1 analyze status OK 22111test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22112CHECK TABLE t1 EXTENDED; 22113Table Op Msg_type Msg_text 22114test.t1 check status OK 22115test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22116CHECKSUM TABLE t1 EXTENDED; 22117Table Checksum 22118test.t1 <some_value> 22119OPTIMIZE TABLE t1; 22120Table Op Msg_type Msg_text 22121test.t1 optimize status OK 22122test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22123# check layout success: 1 22124REPAIR TABLE t1 EXTENDED; 22125Table Op Msg_type Msg_text 22126test.t1 repair status OK 22127test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22128# check layout success: 1 22129TRUNCATE t1; 22130Warnings: 22131Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22132 22133# check TRUNCATE success: 1 22134# check layout success: 1 22135# End usability test (inc/partition_check.inc) 22136DROP TABLE t1; 22137DROP TABLE IF EXISTS t1; 22138CREATE TABLE t1 ( 22139f_int1 INTEGER, 22140f_int2 INTEGER, 22141f_char1 CHAR(20), 22142f_char2 CHAR(20), 22143f_charbig VARCHAR(1000) 22144, UNIQUE INDEX uidx (f_int2,f_int1) 22145) 22146PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2; 22147Warnings: 22148Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22149INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22150SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 22151WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 22152Warnings: 22153Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22154ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 22155Warnings: 22156Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22157INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22158SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 22159WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 22160Warnings: 22161Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22162# Start usability test (inc/partition_check.inc) 22163create_command 22164SHOW CREATE TABLE t1; 22165Table Create Table 22166t1 CREATE TABLE `t1` ( 22167 `f_int1` mediumint(9) DEFAULT NULL, 22168 `f_int2` mediumint(9) DEFAULT NULL, 22169 `f_char1` char(20) DEFAULT NULL, 22170 `f_char2` char(20) DEFAULT NULL, 22171 `f_charbig` varchar(1000) DEFAULT NULL, 22172 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 22173) ENGINE=MyISAM DEFAULT CHARSET=latin1 22174/*!50100 PARTITION BY HASH (f_int1 + f_int2) 22175PARTITIONS 2 */ 22176 22177unified filelist 22178t1#P#p0.MYD 22179t1#P#p0.MYI 22180t1#P#p1.MYD 22181t1#P#p1.MYI 22182t1.frm 22183t1.par 22184 22185# check prerequisites-1 success: 1 22186# check COUNT(*) success: 1 22187# check MIN/MAX(f_int1) success: 1 22188# check MIN/MAX(f_int2) success: 1 22189INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22190SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22191CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 22192WHERE f_int1 IN (2,3); 22193ERROR 23000: Duplicate entry '2-2' for key 'uidx' 22194# check prerequisites-3 success: 1 22195# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 22196INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22197SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22198CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22199WHERE f_int1 IN (2,3); 22200DELETE FROM t1 WHERE f_charbig = 'delete me'; 22201INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22202SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22203CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22204WHERE f_int1 IN (2,3); 22205DELETE FROM t1 WHERE f_charbig = 'delete me'; 22206# check read via f_int1 success: 1 22207# check read via f_int2 success: 1 22208 22209# check multiple-1 success: 1 22210DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 22211 22212# check multiple-2 success: 1 22213INSERT INTO t1 SELECT * FROM t0_template 22214WHERE MOD(f_int1,3) = 0; 22215 22216# check multiple-3 success: 1 22217UPDATE t1 SET f_int1 = f_int1 + @max_row 22218WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 22219AND @max_row_div2 + @max_row_div4; 22220 22221# check multiple-4 success: 1 22222DELETE FROM t1 22223WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 22224AND @max_row_div2 + @max_row_div4 + @max_row; 22225 22226# check multiple-5 success: 1 22227SELECT COUNT(*) INTO @try_count FROM t0_template 22228WHERE MOD(f_int1,3) = 0 22229AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22230SELECT COUNT(*) INTO @clash_count 22231FROM t1 INNER JOIN t0_template USING(f_int1) 22232WHERE MOD(f_int1,3) = 0 22233AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22234SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 22235INSERT INTO t1 22236SET f_int1 = @cur_value , f_int2 = @cur_value, 22237f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22238f_charbig = '#SINGLE#'; 22239 22240# check single-1 success: 1 22241SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 22242INSERT INTO t1 22243SET f_int1 = @cur_value , f_int2 = @cur_value, 22244f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22245f_charbig = '#SINGLE#'; 22246 22247# check single-2 success: 1 22248SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 22249SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 22250UPDATE t1 SET f_int1 = @cur_value2 22251WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 22252 22253# check single-3 success: 1 22254SET @cur_value1= -1; 22255SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 22256UPDATE t1 SET f_int1 = @cur_value1 22257WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 22258 22259# check single-4 success: 1 22260SELECT MAX(f_int1) INTO @cur_value FROM t1; 22261DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 22262 22263# check single-5 success: 1 22264DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 22265 22266# check single-6 success: 1 22267INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 22268Warnings: 22269Warning 1264 Out of range value for column 'f_int1' at row 1 22270Warning 1264 Out of range value for column 'f_int2' at row 1 22271 22272# check single-7 success: 1 22273DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 22274DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 22275INSERT t1 SET f_int1 = 0 , f_int2 = 0, 22276f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 22277f_charbig = '#NULL#'; 22278INSERT INTO t1 22279SET f_int1 = NULL , f_int2 = -@max_row, 22280f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 22281f_charbig = '#NULL#'; 22282# check null success: 1 22283 22284# check null-1 success: 1 22285UPDATE t1 SET f_int1 = -@max_row 22286WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22287AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22288 22289# check null-2 success: 1 22290UPDATE t1 SET f_int1 = NULL 22291WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22292AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22293 22294# check null-3 success: 1 22295DELETE FROM t1 22296WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22297AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22298 22299# check null-4 success: 1 22300DELETE FROM t1 22301WHERE f_int1 = 0 AND f_int2 = 0 22302AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 22303AND f_charbig = '#NULL#'; 22304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22305SELECT f_int1, f_int1, '', '', 'was inserted' 22306 FROM t0_template source_tab 22307WHERE MOD(f_int1,3) = 0 22308AND f_int1 BETWEEN @max_row_div2 AND @max_row 22309ON DUPLICATE KEY 22310UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 22311f_int2 = 2 * @max_row + source_tab.f_int1, 22312f_charbig = 'was updated'; 22313 22314# check unique-1-a success: 1 22315 22316# check unique-1-b success: 1 22317DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22318UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22319f_int2 = CAST(f_char1 AS SIGNED INT), 22320f_charbig = CONCAT('===',f_char1,'===') 22321WHERE f_charbig = 'was updated'; 22322REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22323SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 22324 FROM t0_template source_tab 22325WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22326 22327# check replace success: 1 22328DELETE FROM t1 22329WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 22330DELETE FROM t1 22331WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 22332f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 22333UPDATE t1 SET f_int2 = f_int1, 22334f_char1 = CAST(f_int1 AS CHAR), 22335f_char2 = CAST(f_int1 AS CHAR), 22336f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 22337WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 22338SET AUTOCOMMIT= 0; 22339INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22340SELECT f_int1, f_int1, '', '', 'was inserted' 22341FROM t0_template source_tab 22342WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22343 22344# check transactions-1 success: 1 22345COMMIT WORK; 22346 22347# check transactions-2 success: 1 22348ROLLBACK WORK; 22349 22350# check transactions-3 success: 1 22351DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22352COMMIT WORK; 22353ROLLBACK WORK; 22354 22355# check transactions-4 success: 1 22356INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22357SELECT f_int1, f_int1, '', '', 'was inserted' 22358FROM t0_template source_tab 22359WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22360 22361# check transactions-5 success: 1 22362ROLLBACK WORK; 22363Warnings: 22364Warning 1196 Some non-transactional changed tables couldn't be rolled back 22365 22366# check transactions-6 success: 1 22367# INFO: Storage engine used for t1 seems to be not transactional. 22368COMMIT; 22369 22370# check transactions-7 success: 1 22371DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22372COMMIT WORK; 22373SET @@session.sql_mode = 'traditional'; 22374Warnings: 22375Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22376SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 22377INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22378SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 22379'', '', 'was inserted' FROM t0_template 22380WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22381ERROR 22012: Division by 0 22382COMMIT; 22383 22384# check transactions-8 success: 1 22385# INFO: Storage engine used for t1 seems to be unable to revert 22386# changes made by the failing statement. 22387SET @@session.sql_mode = ''; 22388Warnings: 22389Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22390SET AUTOCOMMIT= 1; 22391DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22392COMMIT WORK; 22393UPDATE t1 SET f_charbig = REPEAT('b', 1000); 22394 22395# check special-1 success: 1 22396UPDATE t1 SET f_charbig = ''; 22397 22398# check special-2 success: 1 22399UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 22400INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22401SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 22402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22404SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22405'just inserted' FROM t0_template 22406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22407CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 22408BEGIN 22409UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22410f_charbig = 'updated by trigger' 22411 WHERE f_int1 = new.f_int1; 22412END| 22413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22414SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22415WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22416 22417# check trigger-1 success: 1 22418DROP TRIGGER trg_1; 22419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22420f_int2 = CAST(f_char1 AS SIGNED INT), 22421f_charbig = 'just inserted' 22422 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22423DELETE FROM t0_aux 22424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22427'just inserted' FROM t0_template 22428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22429CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 22430BEGIN 22431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22432f_charbig = 'updated by trigger' 22433 WHERE f_int1 = new.f_int1; 22434END| 22435INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22436SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22438 22439# check trigger-2 success: 1 22440DROP TRIGGER trg_1; 22441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22442f_int2 = CAST(f_char1 AS SIGNED INT), 22443f_charbig = 'just inserted' 22444 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22445DELETE FROM t0_aux 22446WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22447INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22448SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22449'just inserted' FROM t0_template 22450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22451CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22452BEGIN 22453UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22454f_charbig = 'updated by trigger' 22455 WHERE f_int1 = new.f_int1; 22456END| 22457UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22458WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22459 22460# check trigger-3 success: 1 22461DROP TRIGGER trg_1; 22462UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22463f_int2 = CAST(f_char1 AS SIGNED INT), 22464f_charbig = 'just inserted' 22465 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22466DELETE FROM t0_aux 22467WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22468INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22469SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22470'just inserted' FROM t0_template 22471WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22472CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 22473BEGIN 22474UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22475f_charbig = 'updated by trigger' 22476 WHERE f_int1 = - old.f_int1; 22477END| 22478UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22479WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22480 22481# check trigger-4 success: 1 22482DROP TRIGGER trg_1; 22483UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22484f_int2 = CAST(f_char1 AS SIGNED INT), 22485f_charbig = 'just inserted' 22486 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22487DELETE FROM t0_aux 22488WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22489INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22490SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22491'just inserted' FROM t0_template 22492WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22493CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22494BEGIN 22495UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22496f_charbig = 'updated by trigger' 22497 WHERE f_int1 = new.f_int1; 22498END| 22499UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22500WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22501 22502# check trigger-5 success: 1 22503DROP TRIGGER trg_1; 22504UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22505f_int2 = CAST(f_char1 AS SIGNED INT), 22506f_charbig = 'just inserted' 22507 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22508DELETE FROM t0_aux 22509WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22510INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22511SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22512'just inserted' FROM t0_template 22513WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22514CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 22515BEGIN 22516UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22517f_charbig = 'updated by trigger' 22518 WHERE f_int1 = - old.f_int1; 22519END| 22520UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 22521WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22522 22523# check trigger-6 success: 1 22524DROP TRIGGER trg_1; 22525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22526f_int2 = CAST(f_char1 AS SIGNED INT), 22527f_charbig = 'just inserted' 22528 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22529DELETE FROM t0_aux 22530WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22532SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22533'just inserted' FROM t0_template 22534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22535CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 22536BEGIN 22537UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22538f_charbig = 'updated by trigger' 22539 WHERE f_int1 = - old.f_int1; 22540END| 22541DELETE FROM t0_aux 22542WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22543 22544# check trigger-7 success: 1 22545DROP TRIGGER trg_1; 22546UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22547f_int2 = CAST(f_char1 AS SIGNED INT), 22548f_charbig = 'just inserted' 22549 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22550DELETE FROM t0_aux 22551WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22552INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22553SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22554'just inserted' FROM t0_template 22555WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22556CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 22557BEGIN 22558UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22559f_charbig = 'updated by trigger' 22560 WHERE f_int1 = - old.f_int1; 22561END| 22562DELETE FROM t0_aux 22563WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 22564 22565# check trigger-8 success: 1 22566DROP TRIGGER trg_1; 22567UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22568f_int2 = CAST(f_char1 AS SIGNED INT), 22569f_charbig = 'just inserted' 22570 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22571DELETE FROM t0_aux 22572WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22573DELETE FROM t1 22574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22575CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22576BEGIN 22577SET new.f_int1 = old.f_int1 + @max_row, 22578new.f_int2 = old.f_int2 - @max_row, 22579new.f_charbig = '####updated per update trigger####'; 22580END| 22581UPDATE t1 22582SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22583f_charbig = '####updated per update statement itself####'; 22584Warnings: 22585Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22586 22587# check trigger-9 success: 1 22588DROP TRIGGER trg_2; 22589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22590f_int2 = CAST(f_char1 AS SIGNED INT), 22591f_charbig = CONCAT('===',f_char1,'==='); 22592Warnings: 22593Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22594CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 22595BEGIN 22596SET new.f_int1 = new.f_int1 + @max_row, 22597new.f_int2 = new.f_int2 - @max_row, 22598new.f_charbig = '####updated per update trigger####'; 22599END| 22600UPDATE t1 22601SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 22602f_charbig = '####updated per update statement itself####'; 22603Warnings: 22604Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22605 22606# check trigger-10 success: 1 22607DROP TRIGGER trg_2; 22608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22609f_int2 = CAST(f_char1 AS SIGNED INT), 22610f_charbig = CONCAT('===',f_char1,'==='); 22611Warnings: 22612Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22613CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22614BEGIN 22615SET new.f_int1 = @my_max1 + @counter, 22616new.f_int2 = @my_min2 - @counter, 22617new.f_charbig = '####updated per insert trigger####'; 22618SET @counter = @counter + 1; 22619END| 22620SET @counter = 1; 22621SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22622Warnings: 22623Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22624INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22625SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22626CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22627WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22628ORDER BY f_int1; 22629DROP TRIGGER trg_3; 22630 22631# check trigger-11 success: 1 22632Warnings: 22633Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22634DELETE FROM t1 22635WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22636AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22637AND f_charbig = '####updated per insert trigger####'; 22638CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 22639BEGIN 22640SET new.f_int1 = @my_max1 + @counter, 22641new.f_int2 = @my_min2 - @counter, 22642new.f_charbig = '####updated per insert trigger####'; 22643SET @counter = @counter + 1; 22644END| 22645SET @counter = 1; 22646SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 22647Warnings: 22648Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22649INSERT INTO t1 (f_char1, f_char2, f_charbig) 22650SELECT CAST(f_int1 AS CHAR), 22651CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 22652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 22653ORDER BY f_int1; 22654DROP TRIGGER trg_3; 22655 22656# check trigger-12 success: 1 22657Warnings: 22658Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22659DELETE FROM t1 22660WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 22661AND f_int2 <> CAST(f_char1 AS SIGNED INT) 22662AND f_charbig = '####updated per insert trigger####'; 22663ANALYZE TABLE t1; 22664Table Op Msg_type Msg_text 22665test.t1 analyze status OK 22666test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22667CHECK TABLE t1 EXTENDED; 22668Table Op Msg_type Msg_text 22669test.t1 check status OK 22670test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22671CHECKSUM TABLE t1 EXTENDED; 22672Table Checksum 22673test.t1 <some_value> 22674OPTIMIZE TABLE t1; 22675Table Op Msg_type Msg_text 22676test.t1 optimize status OK 22677test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22678# check layout success: 1 22679REPAIR TABLE t1 EXTENDED; 22680Table Op Msg_type Msg_text 22681test.t1 repair status OK 22682test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22683# check layout success: 1 22684TRUNCATE t1; 22685Warnings: 22686Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22687 22688# check TRUNCATE success: 1 22689# check layout success: 1 22690# End usability test (inc/partition_check.inc) 22691DROP TABLE t1; 22692CREATE TABLE t1 ( 22693f_int1 INTEGER, 22694f_int2 INTEGER, 22695f_char1 CHAR(20), 22696f_char2 CHAR(20), 22697f_charbig VARCHAR(1000) 22698, UNIQUE INDEX uidx (f_int2,f_int1) 22699) 22700PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5; 22701Warnings: 22702Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22703INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22704SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 22705WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 22706Warnings: 22707Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22708ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 22709Warnings: 22710Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22711INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22712SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 22713WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 22714Warnings: 22715Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22716# Start usability test (inc/partition_check.inc) 22717create_command 22718SHOW CREATE TABLE t1; 22719Table Create Table 22720t1 CREATE TABLE `t1` ( 22721 `f_int1` mediumint(9) DEFAULT NULL, 22722 `f_int2` mediumint(9) DEFAULT NULL, 22723 `f_char1` char(20) DEFAULT NULL, 22724 `f_char2` char(20) DEFAULT NULL, 22725 `f_charbig` varchar(1000) DEFAULT NULL, 22726 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 22727) ENGINE=MyISAM DEFAULT CHARSET=latin1 22728/*!50100 PARTITION BY KEY (f_int1,f_int2) 22729PARTITIONS 5 */ 22730 22731unified filelist 22732t1#P#p0.MYD 22733t1#P#p0.MYI 22734t1#P#p1.MYD 22735t1#P#p1.MYI 22736t1#P#p2.MYD 22737t1#P#p2.MYI 22738t1#P#p3.MYD 22739t1#P#p3.MYI 22740t1#P#p4.MYD 22741t1#P#p4.MYI 22742t1.frm 22743t1.par 22744 22745# check prerequisites-1 success: 1 22746# check COUNT(*) success: 1 22747# check MIN/MAX(f_int1) success: 1 22748# check MIN/MAX(f_int2) success: 1 22749INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22750SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 22751CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 22752WHERE f_int1 IN (2,3); 22753ERROR 23000: Duplicate entry '2-2' for key 'uidx' 22754# check prerequisites-3 success: 1 22755# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 22756INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22757SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22758CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22759WHERE f_int1 IN (2,3); 22760DELETE FROM t1 WHERE f_charbig = 'delete me'; 22761INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22762SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 22763CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 22764WHERE f_int1 IN (2,3); 22765DELETE FROM t1 WHERE f_charbig = 'delete me'; 22766# check read via f_int1 success: 1 22767# check read via f_int2 success: 1 22768 22769# check multiple-1 success: 1 22770DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 22771 22772# check multiple-2 success: 1 22773INSERT INTO t1 SELECT * FROM t0_template 22774WHERE MOD(f_int1,3) = 0; 22775 22776# check multiple-3 success: 1 22777UPDATE t1 SET f_int1 = f_int1 + @max_row 22778WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 22779AND @max_row_div2 + @max_row_div4; 22780 22781# check multiple-4 success: 1 22782DELETE FROM t1 22783WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 22784AND @max_row_div2 + @max_row_div4 + @max_row; 22785 22786# check multiple-5 success: 1 22787SELECT COUNT(*) INTO @try_count FROM t0_template 22788WHERE MOD(f_int1,3) = 0 22789AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22790SELECT COUNT(*) INTO @clash_count 22791FROM t1 INNER JOIN t0_template USING(f_int1) 22792WHERE MOD(f_int1,3) = 0 22793AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22794SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 22795INSERT INTO t1 22796SET f_int1 = @cur_value , f_int2 = @cur_value, 22797f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22798f_charbig = '#SINGLE#'; 22799 22800# check single-1 success: 1 22801SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 22802INSERT INTO t1 22803SET f_int1 = @cur_value , f_int2 = @cur_value, 22804f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 22805f_charbig = '#SINGLE#'; 22806 22807# check single-2 success: 1 22808SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 22809SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 22810UPDATE t1 SET f_int1 = @cur_value2 22811WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 22812 22813# check single-3 success: 1 22814SET @cur_value1= -1; 22815SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 22816UPDATE t1 SET f_int1 = @cur_value1 22817WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 22818 22819# check single-4 success: 1 22820SELECT MAX(f_int1) INTO @cur_value FROM t1; 22821DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 22822 22823# check single-5 success: 1 22824DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 22825 22826# check single-6 success: 1 22827INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 22828Warnings: 22829Warning 1264 Out of range value for column 'f_int1' at row 1 22830Warning 1264 Out of range value for column 'f_int2' at row 1 22831 22832# check single-7 success: 1 22833DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 22834DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 22835INSERT t1 SET f_int1 = 0 , f_int2 = 0, 22836f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 22837f_charbig = '#NULL#'; 22838INSERT INTO t1 22839SET f_int1 = NULL , f_int2 = -@max_row, 22840f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 22841f_charbig = '#NULL#'; 22842# check null success: 1 22843 22844# check null-1 success: 1 22845UPDATE t1 SET f_int1 = -@max_row 22846WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22847AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22848 22849# check null-2 success: 1 22850UPDATE t1 SET f_int1 = NULL 22851WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22852AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22853 22854# check null-3 success: 1 22855DELETE FROM t1 22856WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 22857AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 22858 22859# check null-4 success: 1 22860DELETE FROM t1 22861WHERE f_int1 = 0 AND f_int2 = 0 22862AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 22863AND f_charbig = '#NULL#'; 22864INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22865SELECT f_int1, f_int1, '', '', 'was inserted' 22866 FROM t0_template source_tab 22867WHERE MOD(f_int1,3) = 0 22868AND f_int1 BETWEEN @max_row_div2 AND @max_row 22869ON DUPLICATE KEY 22870UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 22871f_int2 = 2 * @max_row + source_tab.f_int1, 22872f_charbig = 'was updated'; 22873 22874# check unique-1-a success: 1 22875 22876# check unique-1-b success: 1 22877DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22879f_int2 = CAST(f_char1 AS SIGNED INT), 22880f_charbig = CONCAT('===',f_char1,'===') 22881WHERE f_charbig = 'was updated'; 22882REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22883SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 22884 FROM t0_template source_tab 22885WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 22886 22887# check replace success: 1 22888DELETE FROM t1 22889WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 22890DELETE FROM t1 22891WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 22892f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 22893UPDATE t1 SET f_int2 = f_int1, 22894f_char1 = CAST(f_int1 AS CHAR), 22895f_char2 = CAST(f_int1 AS CHAR), 22896f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 22897WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 22898SET AUTOCOMMIT= 0; 22899INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22900SELECT f_int1, f_int1, '', '', 'was inserted' 22901FROM t0_template source_tab 22902WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22903 22904# check transactions-1 success: 1 22905COMMIT WORK; 22906 22907# check transactions-2 success: 1 22908ROLLBACK WORK; 22909 22910# check transactions-3 success: 1 22911DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22912COMMIT WORK; 22913ROLLBACK WORK; 22914 22915# check transactions-4 success: 1 22916INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22917SELECT f_int1, f_int1, '', '', 'was inserted' 22918FROM t0_template source_tab 22919WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22920 22921# check transactions-5 success: 1 22922ROLLBACK WORK; 22923Warnings: 22924Warning 1196 Some non-transactional changed tables couldn't be rolled back 22925 22926# check transactions-6 success: 1 22927# INFO: Storage engine used for t1 seems to be not transactional. 22928COMMIT; 22929 22930# check transactions-7 success: 1 22931DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22932COMMIT WORK; 22933SET @@session.sql_mode = 'traditional'; 22934Warnings: 22935Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22936SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 22937INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 22938SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 22939'', '', 'was inserted' FROM t0_template 22940WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 22941ERROR 22012: Division by 0 22942COMMIT; 22943 22944# check transactions-8 success: 1 22945# INFO: Storage engine used for t1 seems to be unable to revert 22946# changes made by the failing statement. 22947SET @@session.sql_mode = ''; 22948Warnings: 22949Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 22950SET AUTOCOMMIT= 1; 22951DELETE FROM t1 WHERE f_charbig = 'was inserted'; 22952COMMIT WORK; 22953UPDATE t1 SET f_charbig = REPEAT('b', 1000); 22954 22955# check special-1 success: 1 22956UPDATE t1 SET f_charbig = ''; 22957 22958# check special-2 success: 1 22959UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 22960INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 22961SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 22962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22963INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22964SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22965'just inserted' FROM t0_template 22966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22967CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 22968BEGIN 22969UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22970f_charbig = 'updated by trigger' 22971 WHERE f_int1 = new.f_int1; 22972END| 22973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22974SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22976 22977# check trigger-1 success: 1 22978DROP TRIGGER trg_1; 22979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 22980f_int2 = CAST(f_char1 AS SIGNED INT), 22981f_charbig = 'just inserted' 22982 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 22983DELETE FROM t0_aux 22984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22985INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22986SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 22987'just inserted' FROM t0_template 22988WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22989CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 22990BEGIN 22991UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 22992f_charbig = 'updated by trigger' 22993 WHERE f_int1 = new.f_int1; 22994END| 22995INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 22996SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 22997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 22998 22999# check trigger-2 success: 1 23000DROP TRIGGER trg_1; 23001UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23002f_int2 = CAST(f_char1 AS SIGNED INT), 23003f_charbig = 'just inserted' 23004 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23005DELETE FROM t0_aux 23006WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23007INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23008SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23009'just inserted' FROM t0_template 23010WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23011CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23012BEGIN 23013UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23014f_charbig = 'updated by trigger' 23015 WHERE f_int1 = new.f_int1; 23016END| 23017UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23018WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23019 23020# check trigger-3 success: 1 23021DROP TRIGGER trg_1; 23022UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23023f_int2 = CAST(f_char1 AS SIGNED INT), 23024f_charbig = 'just inserted' 23025 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23026DELETE FROM t0_aux 23027WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23028INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23029SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23030'just inserted' FROM t0_template 23031WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23032CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23033BEGIN 23034UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23035f_charbig = 'updated by trigger' 23036 WHERE f_int1 = - old.f_int1; 23037END| 23038UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23039WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23040 23041# check trigger-4 success: 1 23042DROP TRIGGER trg_1; 23043UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23044f_int2 = CAST(f_char1 AS SIGNED INT), 23045f_charbig = 'just inserted' 23046 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23047DELETE FROM t0_aux 23048WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23049INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23050SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23051'just inserted' FROM t0_template 23052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23053CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23054BEGIN 23055UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23056f_charbig = 'updated by trigger' 23057 WHERE f_int1 = new.f_int1; 23058END| 23059UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23060WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23061 23062# check trigger-5 success: 1 23063DROP TRIGGER trg_1; 23064UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23065f_int2 = CAST(f_char1 AS SIGNED INT), 23066f_charbig = 'just inserted' 23067 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23068DELETE FROM t0_aux 23069WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23070INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23071SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23072'just inserted' FROM t0_template 23073WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23074CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23075BEGIN 23076UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23077f_charbig = 'updated by trigger' 23078 WHERE f_int1 = - old.f_int1; 23079END| 23080UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23081WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23082 23083# check trigger-6 success: 1 23084DROP TRIGGER trg_1; 23085UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23086f_int2 = CAST(f_char1 AS SIGNED INT), 23087f_charbig = 'just inserted' 23088 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23089DELETE FROM t0_aux 23090WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23091INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23092SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23093'just inserted' FROM t0_template 23094WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23095CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 23096BEGIN 23097UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23098f_charbig = 'updated by trigger' 23099 WHERE f_int1 = - old.f_int1; 23100END| 23101DELETE FROM t0_aux 23102WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23103 23104# check trigger-7 success: 1 23105DROP TRIGGER trg_1; 23106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23107f_int2 = CAST(f_char1 AS SIGNED INT), 23108f_charbig = 'just inserted' 23109 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23110DELETE FROM t0_aux 23111WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23112INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23113SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23114'just inserted' FROM t0_template 23115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23116CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 23117BEGIN 23118UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23119f_charbig = 'updated by trigger' 23120 WHERE f_int1 = - old.f_int1; 23121END| 23122DELETE FROM t0_aux 23123WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23124 23125# check trigger-8 success: 1 23126DROP TRIGGER trg_1; 23127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23128f_int2 = CAST(f_char1 AS SIGNED INT), 23129f_charbig = 'just inserted' 23130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23131DELETE FROM t0_aux 23132WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23133DELETE FROM t1 23134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23135CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23136BEGIN 23137SET new.f_int1 = old.f_int1 + @max_row, 23138new.f_int2 = old.f_int2 - @max_row, 23139new.f_charbig = '####updated per update trigger####'; 23140END| 23141UPDATE t1 23142SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23143f_charbig = '####updated per update statement itself####'; 23144Warnings: 23145Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23146 23147# check trigger-9 success: 1 23148DROP TRIGGER trg_2; 23149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23150f_int2 = CAST(f_char1 AS SIGNED INT), 23151f_charbig = CONCAT('===',f_char1,'==='); 23152Warnings: 23153Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23154CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23155BEGIN 23156SET new.f_int1 = new.f_int1 + @max_row, 23157new.f_int2 = new.f_int2 - @max_row, 23158new.f_charbig = '####updated per update trigger####'; 23159END| 23160UPDATE t1 23161SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23162f_charbig = '####updated per update statement itself####'; 23163Warnings: 23164Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23165 23166# check trigger-10 success: 1 23167DROP TRIGGER trg_2; 23168UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23169f_int2 = CAST(f_char1 AS SIGNED INT), 23170f_charbig = CONCAT('===',f_char1,'==='); 23171Warnings: 23172Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23173CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23174BEGIN 23175SET new.f_int1 = @my_max1 + @counter, 23176new.f_int2 = @my_min2 - @counter, 23177new.f_charbig = '####updated per insert trigger####'; 23178SET @counter = @counter + 1; 23179END| 23180SET @counter = 1; 23181SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23182Warnings: 23183Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23184INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23185SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23186CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23188ORDER BY f_int1; 23189DROP TRIGGER trg_3; 23190 23191# check trigger-11 success: 1 23192Warnings: 23193Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23194DELETE FROM t1 23195WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23196AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23197AND f_charbig = '####updated per insert trigger####'; 23198CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23199BEGIN 23200SET new.f_int1 = @my_max1 + @counter, 23201new.f_int2 = @my_min2 - @counter, 23202new.f_charbig = '####updated per insert trigger####'; 23203SET @counter = @counter + 1; 23204END| 23205SET @counter = 1; 23206SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23207Warnings: 23208Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23209INSERT INTO t1 (f_char1, f_char2, f_charbig) 23210SELECT CAST(f_int1 AS CHAR), 23211CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23212WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23213ORDER BY f_int1; 23214DROP TRIGGER trg_3; 23215 23216# check trigger-12 success: 1 23217Warnings: 23218Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23219DELETE FROM t1 23220WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23221AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23222AND f_charbig = '####updated per insert trigger####'; 23223ANALYZE TABLE t1; 23224Table Op Msg_type Msg_text 23225test.t1 analyze status OK 23226test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23227CHECK TABLE t1 EXTENDED; 23228Table Op Msg_type Msg_text 23229test.t1 check status OK 23230test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23231CHECKSUM TABLE t1 EXTENDED; 23232Table Checksum 23233test.t1 <some_value> 23234OPTIMIZE TABLE t1; 23235Table Op Msg_type Msg_text 23236test.t1 optimize status OK 23237test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23238# check layout success: 1 23239REPAIR TABLE t1 EXTENDED; 23240Table Op Msg_type Msg_text 23241test.t1 repair status OK 23242test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23243# check layout success: 1 23244TRUNCATE t1; 23245Warnings: 23246Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23247 23248# check TRUNCATE success: 1 23249# check layout success: 1 23250# End usability test (inc/partition_check.inc) 23251DROP TABLE t1; 23252CREATE TABLE t1 ( 23253f_int1 INTEGER, 23254f_int2 INTEGER, 23255f_char1 CHAR(20), 23256f_char2 CHAR(20), 23257f_charbig VARCHAR(1000) 23258, UNIQUE INDEX uidx (f_int2,f_int1) 23259) 23260PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 23261(PARTITION part_3 VALUES IN (-3), 23262PARTITION part_2 VALUES IN (-2), 23263PARTITION part_1 VALUES IN (-1), 23264PARTITION part_N VALUES IN (NULL), 23265PARTITION part0 VALUES IN (0), 23266PARTITION part1 VALUES IN (1), 23267PARTITION part2 VALUES IN (2), 23268PARTITION part3 VALUES IN (3)); 23269Warnings: 23270Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23271INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23272SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 23273WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 23274Warnings: 23275Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23276ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 23277Warnings: 23278Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23279INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23280SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 23281WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 23282Warnings: 23283Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23284# Start usability test (inc/partition_check.inc) 23285create_command 23286SHOW CREATE TABLE t1; 23287Table Create Table 23288t1 CREATE TABLE `t1` ( 23289 `f_int1` mediumint(9) DEFAULT NULL, 23290 `f_int2` mediumint(9) DEFAULT NULL, 23291 `f_char1` char(20) DEFAULT NULL, 23292 `f_char2` char(20) DEFAULT NULL, 23293 `f_charbig` varchar(1000) DEFAULT NULL, 23294 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 23295) ENGINE=MyISAM DEFAULT CHARSET=latin1 23296/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 23297(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, 23298 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, 23299 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, 23300 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, 23301 PARTITION part0 VALUES IN (0) ENGINE = MyISAM, 23302 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 23303 PARTITION part2 VALUES IN (2) ENGINE = MyISAM, 23304 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ 23305 23306unified filelist 23307t1#P#part0.MYD 23308t1#P#part0.MYI 23309t1#P#part1.MYD 23310t1#P#part1.MYI 23311t1#P#part2.MYD 23312t1#P#part2.MYI 23313t1#P#part3.MYD 23314t1#P#part3.MYI 23315t1#P#part_1.MYD 23316t1#P#part_1.MYI 23317t1#P#part_2.MYD 23318t1#P#part_2.MYI 23319t1#P#part_3.MYD 23320t1#P#part_3.MYI 23321t1#P#part_N.MYD 23322t1#P#part_N.MYI 23323t1.frm 23324t1.par 23325 23326# check prerequisites-1 success: 1 23327# check COUNT(*) success: 1 23328# check MIN/MAX(f_int1) success: 1 23329# check MIN/MAX(f_int2) success: 1 23330INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23331SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23332CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 23333WHERE f_int1 IN (2,3); 23334ERROR 23000: Duplicate entry '2-2' for key 'uidx' 23335# check prerequisites-3 success: 1 23336# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 23337INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23338SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23339CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23340WHERE f_int1 IN (2,3); 23341DELETE FROM t1 WHERE f_charbig = 'delete me'; 23342INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23343SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23344CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23345WHERE f_int1 IN (2,3); 23346DELETE FROM t1 WHERE f_charbig = 'delete me'; 23347# check read via f_int1 success: 1 23348# check read via f_int2 success: 1 23349 23350# check multiple-1 success: 1 23351DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 23352 23353# check multiple-2 success: 1 23354INSERT INTO t1 SELECT * FROM t0_template 23355WHERE MOD(f_int1,3) = 0; 23356 23357# check multiple-3 success: 1 23358UPDATE t1 SET f_int1 = f_int1 + @max_row 23359WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 23360AND @max_row_div2 + @max_row_div4; 23361 23362# check multiple-4 success: 1 23363DELETE FROM t1 23364WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 23365AND @max_row_div2 + @max_row_div4 + @max_row; 23366 23367# check multiple-5 success: 1 23368SELECT COUNT(*) INTO @try_count FROM t0_template 23369WHERE MOD(f_int1,3) = 0 23370AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23371SELECT COUNT(*) INTO @clash_count 23372FROM t1 INNER JOIN t0_template USING(f_int1) 23373WHERE MOD(f_int1,3) = 0 23374AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23375SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 23376INSERT INTO t1 23377SET f_int1 = @cur_value , f_int2 = @cur_value, 23378f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23379f_charbig = '#SINGLE#'; 23380 23381# check single-1 success: 1 23382SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 23383INSERT INTO t1 23384SET f_int1 = @cur_value , f_int2 = @cur_value, 23385f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23386f_charbig = '#SINGLE#'; 23387 23388# check single-2 success: 1 23389SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 23390SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 23391UPDATE t1 SET f_int1 = @cur_value2 23392WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 23393 23394# check single-3 success: 1 23395SET @cur_value1= -1; 23396SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 23397UPDATE t1 SET f_int1 = @cur_value1 23398WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 23399 23400# check single-4 success: 1 23401SELECT MAX(f_int1) INTO @cur_value FROM t1; 23402DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 23403 23404# check single-5 success: 1 23405DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 23406 23407# check single-6 success: 1 23408INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 23409Warnings: 23410Warning 1264 Out of range value for column 'f_int1' at row 1 23411Warning 1264 Out of range value for column 'f_int2' at row 1 23412 23413# check single-7 success: 1 23414DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 23415DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 23416INSERT t1 SET f_int1 = 0 , f_int2 = 0, 23417f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 23418f_charbig = '#NULL#'; 23419INSERT INTO t1 23420SET f_int1 = NULL , f_int2 = -@max_row, 23421f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 23422f_charbig = '#NULL#'; 23423# check null success: 1 23424 23425# check null-1 success: 1 23426UPDATE t1 SET f_int1 = -@max_row 23427WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 23428AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 23429 23430# check null-2 success: 1 23431UPDATE t1 SET f_int1 = NULL 23432WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 23433AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 23434 23435# check null-3 success: 1 23436DELETE FROM t1 23437WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 23438AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 23439 23440# check null-4 success: 1 23441DELETE FROM t1 23442WHERE f_int1 = 0 AND f_int2 = 0 23443AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 23444AND f_charbig = '#NULL#'; 23445INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23446SELECT f_int1, f_int1, '', '', 'was inserted' 23447 FROM t0_template source_tab 23448WHERE MOD(f_int1,3) = 0 23449AND f_int1 BETWEEN @max_row_div2 AND @max_row 23450ON DUPLICATE KEY 23451UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 23452f_int2 = 2 * @max_row + source_tab.f_int1, 23453f_charbig = 'was updated'; 23454 23455# check unique-1-a success: 1 23456 23457# check unique-1-b success: 1 23458DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23459UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23460f_int2 = CAST(f_char1 AS SIGNED INT), 23461f_charbig = CONCAT('===',f_char1,'===') 23462WHERE f_charbig = 'was updated'; 23463REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23464SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 23465 FROM t0_template source_tab 23466WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23467 23468# check replace success: 1 23469DELETE FROM t1 23470WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 23471DELETE FROM t1 23472WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 23473f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 23474UPDATE t1 SET f_int2 = f_int1, 23475f_char1 = CAST(f_int1 AS CHAR), 23476f_char2 = CAST(f_int1 AS CHAR), 23477f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 23478WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 23479SET AUTOCOMMIT= 0; 23480INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23481SELECT f_int1, f_int1, '', '', 'was inserted' 23482FROM t0_template source_tab 23483WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23484 23485# check transactions-1 success: 1 23486COMMIT WORK; 23487 23488# check transactions-2 success: 1 23489ROLLBACK WORK; 23490 23491# check transactions-3 success: 1 23492DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23493COMMIT WORK; 23494ROLLBACK WORK; 23495 23496# check transactions-4 success: 1 23497INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23498SELECT f_int1, f_int1, '', '', 'was inserted' 23499FROM t0_template source_tab 23500WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23501 23502# check transactions-5 success: 1 23503ROLLBACK WORK; 23504Warnings: 23505Warning 1196 Some non-transactional changed tables couldn't be rolled back 23506 23507# check transactions-6 success: 1 23508# INFO: Storage engine used for t1 seems to be not transactional. 23509COMMIT; 23510 23511# check transactions-7 success: 1 23512DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23513COMMIT WORK; 23514SET @@session.sql_mode = 'traditional'; 23515Warnings: 23516Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23517SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 23518INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23519SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 23520'', '', 'was inserted' FROM t0_template 23521WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 23522ERROR 22012: Division by 0 23523COMMIT; 23524 23525# check transactions-8 success: 1 23526# INFO: Storage engine used for t1 seems to be unable to revert 23527# changes made by the failing statement. 23528SET @@session.sql_mode = ''; 23529Warnings: 23530Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 23531SET AUTOCOMMIT= 1; 23532DELETE FROM t1 WHERE f_charbig = 'was inserted'; 23533COMMIT WORK; 23534UPDATE t1 SET f_charbig = REPEAT('b', 1000); 23535 23536# check special-1 success: 1 23537UPDATE t1 SET f_charbig = ''; 23538 23539# check special-2 success: 1 23540UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 23541INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23542SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 23543WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23544INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23545SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23546'just inserted' FROM t0_template 23547WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23548CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 23549BEGIN 23550UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23551f_charbig = 'updated by trigger' 23552 WHERE f_int1 = new.f_int1; 23553END| 23554INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23555SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23557 23558# check trigger-1 success: 1 23559DROP TRIGGER trg_1; 23560UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23561f_int2 = CAST(f_char1 AS SIGNED INT), 23562f_charbig = 'just inserted' 23563 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23564DELETE FROM t0_aux 23565WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23566INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23567SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23568'just inserted' FROM t0_template 23569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23570CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 23571BEGIN 23572UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23573f_charbig = 'updated by trigger' 23574 WHERE f_int1 = new.f_int1; 23575END| 23576INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23577SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 23578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23579 23580# check trigger-2 success: 1 23581DROP TRIGGER trg_1; 23582UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23583f_int2 = CAST(f_char1 AS SIGNED INT), 23584f_charbig = 'just inserted' 23585 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23586DELETE FROM t0_aux 23587WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23588INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23589SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23590'just inserted' FROM t0_template 23591WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23592CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23593BEGIN 23594UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23595f_charbig = 'updated by trigger' 23596 WHERE f_int1 = new.f_int1; 23597END| 23598UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23599WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23600 23601# check trigger-3 success: 1 23602DROP TRIGGER trg_1; 23603UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23604f_int2 = CAST(f_char1 AS SIGNED INT), 23605f_charbig = 'just inserted' 23606 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23607DELETE FROM t0_aux 23608WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23609INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23610SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23611'just inserted' FROM t0_template 23612WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23613CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 23614BEGIN 23615UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23616f_charbig = 'updated by trigger' 23617 WHERE f_int1 = - old.f_int1; 23618END| 23619UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23620WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23621 23622# check trigger-4 success: 1 23623DROP TRIGGER trg_1; 23624UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23625f_int2 = CAST(f_char1 AS SIGNED INT), 23626f_charbig = 'just inserted' 23627 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23628DELETE FROM t0_aux 23629WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23630INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23631SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23632'just inserted' FROM t0_template 23633WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23634CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23635BEGIN 23636UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23637f_charbig = 'updated by trigger' 23638 WHERE f_int1 = new.f_int1; 23639END| 23640UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23641WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23642 23643# check trigger-5 success: 1 23644DROP TRIGGER trg_1; 23645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23646f_int2 = CAST(f_char1 AS SIGNED INT), 23647f_charbig = 'just inserted' 23648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23649DELETE FROM t0_aux 23650WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23652SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23653'just inserted' FROM t0_template 23654WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23655CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 23656BEGIN 23657UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23658f_charbig = 'updated by trigger' 23659 WHERE f_int1 = - old.f_int1; 23660END| 23661UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 23662WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23663 23664# check trigger-6 success: 1 23665DROP TRIGGER trg_1; 23666UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23667f_int2 = CAST(f_char1 AS SIGNED INT), 23668f_charbig = 'just inserted' 23669 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23670DELETE FROM t0_aux 23671WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23672INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23673SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23674'just inserted' FROM t0_template 23675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23676CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 23677BEGIN 23678UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23679f_charbig = 'updated by trigger' 23680 WHERE f_int1 = - old.f_int1; 23681END| 23682DELETE FROM t0_aux 23683WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23684 23685# check trigger-7 success: 1 23686DROP TRIGGER trg_1; 23687UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23688f_int2 = CAST(f_char1 AS SIGNED INT), 23689f_charbig = 'just inserted' 23690 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23691DELETE FROM t0_aux 23692WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23693INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 23694SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 23695'just inserted' FROM t0_template 23696WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23697CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 23698BEGIN 23699UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 23700f_charbig = 'updated by trigger' 23701 WHERE f_int1 = - old.f_int1; 23702END| 23703DELETE FROM t0_aux 23704WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 23705 23706# check trigger-8 success: 1 23707DROP TRIGGER trg_1; 23708UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23709f_int2 = CAST(f_char1 AS SIGNED INT), 23710f_charbig = 'just inserted' 23711 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 23712DELETE FROM t0_aux 23713WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23714DELETE FROM t1 23715WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 23716CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23717BEGIN 23718SET new.f_int1 = old.f_int1 + @max_row, 23719new.f_int2 = old.f_int2 - @max_row, 23720new.f_charbig = '####updated per update trigger####'; 23721END| 23722UPDATE t1 23723SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23724f_charbig = '####updated per update statement itself####'; 23725Warnings: 23726Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23727 23728# check trigger-9 success: 1 23729DROP TRIGGER trg_2; 23730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23731f_int2 = CAST(f_char1 AS SIGNED INT), 23732f_charbig = CONCAT('===',f_char1,'==='); 23733Warnings: 23734Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23735CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 23736BEGIN 23737SET new.f_int1 = new.f_int1 + @max_row, 23738new.f_int2 = new.f_int2 - @max_row, 23739new.f_charbig = '####updated per update trigger####'; 23740END| 23741UPDATE t1 23742SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 23743f_charbig = '####updated per update statement itself####'; 23744Warnings: 23745Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23746 23747# check trigger-10 success: 1 23748DROP TRIGGER trg_2; 23749UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 23750f_int2 = CAST(f_char1 AS SIGNED INT), 23751f_charbig = CONCAT('===',f_char1,'==='); 23752Warnings: 23753Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23754CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23755BEGIN 23756SET new.f_int1 = @my_max1 + @counter, 23757new.f_int2 = @my_min2 - @counter, 23758new.f_charbig = '####updated per insert trigger####'; 23759SET @counter = @counter + 1; 23760END| 23761SET @counter = 1; 23762SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23763Warnings: 23764Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23765INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23766SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23767CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23768WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23769ORDER BY f_int1; 23770DROP TRIGGER trg_3; 23771 23772# check trigger-11 success: 1 23773Warnings: 23774Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23775DELETE FROM t1 23776WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23777AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23778AND f_charbig = '####updated per insert trigger####'; 23779CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 23780BEGIN 23781SET new.f_int1 = @my_max1 + @counter, 23782new.f_int2 = @my_min2 - @counter, 23783new.f_charbig = '####updated per insert trigger####'; 23784SET @counter = @counter + 1; 23785END| 23786SET @counter = 1; 23787SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 23788Warnings: 23789Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23790INSERT INTO t1 (f_char1, f_char2, f_charbig) 23791SELECT CAST(f_int1 AS CHAR), 23792CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 23793WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 23794ORDER BY f_int1; 23795DROP TRIGGER trg_3; 23796 23797# check trigger-12 success: 1 23798Warnings: 23799Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23800DELETE FROM t1 23801WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 23802AND f_int2 <> CAST(f_char1 AS SIGNED INT) 23803AND f_charbig = '####updated per insert trigger####'; 23804ANALYZE TABLE t1; 23805Table Op Msg_type Msg_text 23806test.t1 analyze status OK 23807test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23808CHECK TABLE t1 EXTENDED; 23809Table Op Msg_type Msg_text 23810test.t1 check status OK 23811test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23812CHECKSUM TABLE t1 EXTENDED; 23813Table Checksum 23814test.t1 <some_value> 23815OPTIMIZE TABLE t1; 23816Table Op Msg_type Msg_text 23817test.t1 optimize status OK 23818test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23819# check layout success: 1 23820REPAIR TABLE t1 EXTENDED; 23821Table Op Msg_type Msg_text 23822test.t1 repair status OK 23823test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23824# check layout success: 1 23825TRUNCATE t1; 23826Warnings: 23827Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23828 23829# check TRUNCATE success: 1 23830# check layout success: 1 23831# End usability test (inc/partition_check.inc) 23832DROP TABLE t1; 23833CREATE TABLE t1 ( 23834f_int1 INTEGER, 23835f_int2 INTEGER, 23836f_char1 CHAR(20), 23837f_char2 CHAR(20), 23838f_charbig VARCHAR(1000) 23839, UNIQUE INDEX uidx (f_int2,f_int1) 23840) 23841PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 23842(PARTITION parta VALUES LESS THAN (0), 23843PARTITION partb VALUES LESS THAN (5), 23844PARTITION partc VALUES LESS THAN (10), 23845PARTITION partd VALUES LESS THAN (10 + 5), 23846PARTITION parte VALUES LESS THAN (20), 23847PARTITION partf VALUES LESS THAN (2147483646)); 23848Warnings: 23849Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23850INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23851SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 23852WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 23853Warnings: 23854Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23855ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 23856Warnings: 23857Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23858INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 23859SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 23860WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 23861Warnings: 23862Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 23863# Start usability test (inc/partition_check.inc) 23864create_command 23865SHOW CREATE TABLE t1; 23866Table Create Table 23867t1 CREATE TABLE `t1` ( 23868 `f_int1` mediumint(9) DEFAULT NULL, 23869 `f_int2` mediumint(9) DEFAULT NULL, 23870 `f_char1` char(20) DEFAULT NULL, 23871 `f_char2` char(20) DEFAULT NULL, 23872 `f_charbig` varchar(1000) DEFAULT NULL, 23873 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 23874) ENGINE=MyISAM DEFAULT CHARSET=latin1 23875/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 23876(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 23877 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 23878 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 23879 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 23880 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, 23881 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 23882 23883unified filelist 23884t1#P#parta.MYD 23885t1#P#parta.MYI 23886t1#P#partb.MYD 23887t1#P#partb.MYI 23888t1#P#partc.MYD 23889t1#P#partc.MYI 23890t1#P#partd.MYD 23891t1#P#partd.MYI 23892t1#P#parte.MYD 23893t1#P#parte.MYI 23894t1#P#partf.MYD 23895t1#P#partf.MYI 23896t1.frm 23897t1.par 23898 23899# check prerequisites-1 success: 1 23900# check COUNT(*) success: 1 23901# check MIN/MAX(f_int1) success: 1 23902# check MIN/MAX(f_int2) success: 1 23903INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23904SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 23905CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 23906WHERE f_int1 IN (2,3); 23907ERROR 23000: Duplicate entry '2-2' for key 'uidx' 23908# check prerequisites-3 success: 1 23909# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 23910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23911SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23912CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23913WHERE f_int1 IN (2,3); 23914DELETE FROM t1 WHERE f_charbig = 'delete me'; 23915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 23916SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 23917CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 23918WHERE f_int1 IN (2,3); 23919DELETE FROM t1 WHERE f_charbig = 'delete me'; 23920# check read via f_int1 success: 1 23921# check read via f_int2 success: 1 23922 23923# check multiple-1 success: 1 23924DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 23925 23926# check multiple-2 success: 1 23927INSERT INTO t1 SELECT * FROM t0_template 23928WHERE MOD(f_int1,3) = 0; 23929 23930# check multiple-3 success: 1 23931UPDATE t1 SET f_int1 = f_int1 + @max_row 23932WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 23933AND @max_row_div2 + @max_row_div4; 23934 23935# check multiple-4 success: 1 23936DELETE FROM t1 23937WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 23938AND @max_row_div2 + @max_row_div4 + @max_row; 23939 23940# check multiple-5 success: 1 23941SELECT COUNT(*) INTO @try_count FROM t0_template 23942WHERE MOD(f_int1,3) = 0 23943AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23944SELECT COUNT(*) INTO @clash_count 23945FROM t1 INNER JOIN t0_template USING(f_int1) 23946WHERE MOD(f_int1,3) = 0 23947AND f_int1 BETWEEN @max_row_div2 AND @max_row; 23948SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 23949INSERT INTO t1 23950SET f_int1 = @cur_value , f_int2 = @cur_value, 23951f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23952f_charbig = '#SINGLE#'; 23953 23954# check single-1 success: 1 23955SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 23956INSERT INTO t1 23957SET f_int1 = @cur_value , f_int2 = @cur_value, 23958f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 23959f_charbig = '#SINGLE#'; 23960 23961# check single-2 success: 1 23962SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 23963SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 23964UPDATE t1 SET f_int1 = @cur_value2 23965WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 23966 23967# check single-3 success: 1 23968SET @cur_value1= -1; 23969SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 23970UPDATE t1 SET f_int1 = @cur_value1 23971WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 23972 23973# check single-4 success: 1 23974SELECT MAX(f_int1) INTO @cur_value FROM t1; 23975DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 23976 23977# check single-5 success: 1 23978DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 23979 23980# check single-6 success: 1 23981INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 23982Warnings: 23983Warning 1264 Out of range value for column 'f_int1' at row 1 23984Warning 1264 Out of range value for column 'f_int2' at row 1 23985 23986# check single-7 success: 1 23987DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 23988DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 23989INSERT t1 SET f_int1 = 0 , f_int2 = 0, 23990f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 23991f_charbig = '#NULL#'; 23992INSERT INTO t1 23993SET f_int1 = NULL , f_int2 = -@max_row, 23994f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 23995f_charbig = '#NULL#'; 23996# check null success: 1 23997 23998# check null-1 success: 1 23999UPDATE t1 SET f_int1 = -@max_row 24000WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24001AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24002 24003# check null-2 success: 1 24004UPDATE t1 SET f_int1 = NULL 24005WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24006AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24007 24008# check null-3 success: 1 24009DELETE FROM t1 24010WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24011AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24012 24013# check null-4 success: 1 24014DELETE FROM t1 24015WHERE f_int1 = 0 AND f_int2 = 0 24016AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 24017AND f_charbig = '#NULL#'; 24018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24019SELECT f_int1, f_int1, '', '', 'was inserted' 24020 FROM t0_template source_tab 24021WHERE MOD(f_int1,3) = 0 24022AND f_int1 BETWEEN @max_row_div2 AND @max_row 24023ON DUPLICATE KEY 24024UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 24025f_int2 = 2 * @max_row + source_tab.f_int1, 24026f_charbig = 'was updated'; 24027 24028# check unique-1-a success: 1 24029 24030# check unique-1-b success: 1 24031DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24033f_int2 = CAST(f_char1 AS SIGNED INT), 24034f_charbig = CONCAT('===',f_char1,'===') 24035WHERE f_charbig = 'was updated'; 24036REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24037SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 24038 FROM t0_template source_tab 24039WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24040 24041# check replace success: 1 24042DELETE FROM t1 24043WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 24044DELETE FROM t1 24045WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 24046f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 24047UPDATE t1 SET f_int2 = f_int1, 24048f_char1 = CAST(f_int1 AS CHAR), 24049f_char2 = CAST(f_int1 AS CHAR), 24050f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 24051WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 24052SET AUTOCOMMIT= 0; 24053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24054SELECT f_int1, f_int1, '', '', 'was inserted' 24055FROM t0_template source_tab 24056WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24057 24058# check transactions-1 success: 1 24059COMMIT WORK; 24060 24061# check transactions-2 success: 1 24062ROLLBACK WORK; 24063 24064# check transactions-3 success: 1 24065DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24066COMMIT WORK; 24067ROLLBACK WORK; 24068 24069# check transactions-4 success: 1 24070INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24071SELECT f_int1, f_int1, '', '', 'was inserted' 24072FROM t0_template source_tab 24073WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24074 24075# check transactions-5 success: 1 24076ROLLBACK WORK; 24077Warnings: 24078Warning 1196 Some non-transactional changed tables couldn't be rolled back 24079 24080# check transactions-6 success: 1 24081# INFO: Storage engine used for t1 seems to be not transactional. 24082COMMIT; 24083 24084# check transactions-7 success: 1 24085DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24086COMMIT WORK; 24087SET @@session.sql_mode = 'traditional'; 24088Warnings: 24089Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24090SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 24091INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24092SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 24093'', '', 'was inserted' FROM t0_template 24094WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24095ERROR 22012: Division by 0 24096COMMIT; 24097 24098# check transactions-8 success: 1 24099# INFO: Storage engine used for t1 seems to be unable to revert 24100# changes made by the failing statement. 24101SET @@session.sql_mode = ''; 24102Warnings: 24103Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24104SET AUTOCOMMIT= 1; 24105DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24106COMMIT WORK; 24107UPDATE t1 SET f_charbig = REPEAT('b', 1000); 24108 24109# check special-1 success: 1 24110UPDATE t1 SET f_charbig = ''; 24111 24112# check special-2 success: 1 24113UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 24114INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24115SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 24116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24117INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24118SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24119'just inserted' FROM t0_template 24120WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24121CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 24122BEGIN 24123UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24124f_charbig = 'updated by trigger' 24125 WHERE f_int1 = new.f_int1; 24126END| 24127INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24128SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24129WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24130 24131# check trigger-1 success: 1 24132DROP TRIGGER trg_1; 24133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24134f_int2 = CAST(f_char1 AS SIGNED INT), 24135f_charbig = 'just inserted' 24136 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24137DELETE FROM t0_aux 24138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24141'just inserted' FROM t0_template 24142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24143CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 24144BEGIN 24145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24146f_charbig = 'updated by trigger' 24147 WHERE f_int1 = new.f_int1; 24148END| 24149INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24150SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24152 24153# check trigger-2 success: 1 24154DROP TRIGGER trg_1; 24155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24156f_int2 = CAST(f_char1 AS SIGNED INT), 24157f_charbig = 'just inserted' 24158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24159DELETE FROM t0_aux 24160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24163'just inserted' FROM t0_template 24164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24165CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24166BEGIN 24167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24168f_charbig = 'updated by trigger' 24169 WHERE f_int1 = new.f_int1; 24170END| 24171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24173 24174# check trigger-3 success: 1 24175DROP TRIGGER trg_1; 24176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24177f_int2 = CAST(f_char1 AS SIGNED INT), 24178f_charbig = 'just inserted' 24179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24180DELETE FROM t0_aux 24181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24184'just inserted' FROM t0_template 24185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24186CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24187BEGIN 24188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24189f_charbig = 'updated by trigger' 24190 WHERE f_int1 = - old.f_int1; 24191END| 24192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24194 24195# check trigger-4 success: 1 24196DROP TRIGGER trg_1; 24197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24198f_int2 = CAST(f_char1 AS SIGNED INT), 24199f_charbig = 'just inserted' 24200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24201DELETE FROM t0_aux 24202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24205'just inserted' FROM t0_template 24206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24207CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24208BEGIN 24209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24210f_charbig = 'updated by trigger' 24211 WHERE f_int1 = new.f_int1; 24212END| 24213UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24215 24216# check trigger-5 success: 1 24217DROP TRIGGER trg_1; 24218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24219f_int2 = CAST(f_char1 AS SIGNED INT), 24220f_charbig = 'just inserted' 24221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24222DELETE FROM t0_aux 24223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24226'just inserted' FROM t0_template 24227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24228CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24229BEGIN 24230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24231f_charbig = 'updated by trigger' 24232 WHERE f_int1 = - old.f_int1; 24233END| 24234UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24236 24237# check trigger-6 success: 1 24238DROP TRIGGER trg_1; 24239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24240f_int2 = CAST(f_char1 AS SIGNED INT), 24241f_charbig = 'just inserted' 24242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24243DELETE FROM t0_aux 24244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24245INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24246SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24247'just inserted' FROM t0_template 24248WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24249CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 24250BEGIN 24251UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24252f_charbig = 'updated by trigger' 24253 WHERE f_int1 = - old.f_int1; 24254END| 24255DELETE FROM t0_aux 24256WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24257 24258# check trigger-7 success: 1 24259DROP TRIGGER trg_1; 24260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24261f_int2 = CAST(f_char1 AS SIGNED INT), 24262f_charbig = 'just inserted' 24263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24264DELETE FROM t0_aux 24265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24266INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24267SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24268'just inserted' FROM t0_template 24269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24270CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 24271BEGIN 24272UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24273f_charbig = 'updated by trigger' 24274 WHERE f_int1 = - old.f_int1; 24275END| 24276DELETE FROM t0_aux 24277WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24278 24279# check trigger-8 success: 1 24280DROP TRIGGER trg_1; 24281UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24282f_int2 = CAST(f_char1 AS SIGNED INT), 24283f_charbig = 'just inserted' 24284 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24285DELETE FROM t0_aux 24286WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24287DELETE FROM t1 24288WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24289CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24290BEGIN 24291SET new.f_int1 = old.f_int1 + @max_row, 24292new.f_int2 = old.f_int2 - @max_row, 24293new.f_charbig = '####updated per update trigger####'; 24294END| 24295UPDATE t1 24296SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24297f_charbig = '####updated per update statement itself####'; 24298Warnings: 24299Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24300 24301# check trigger-9 success: 1 24302DROP TRIGGER trg_2; 24303UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24304f_int2 = CAST(f_char1 AS SIGNED INT), 24305f_charbig = CONCAT('===',f_char1,'==='); 24306Warnings: 24307Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24308CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24309BEGIN 24310SET new.f_int1 = new.f_int1 + @max_row, 24311new.f_int2 = new.f_int2 - @max_row, 24312new.f_charbig = '####updated per update trigger####'; 24313END| 24314UPDATE t1 24315SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24316f_charbig = '####updated per update statement itself####'; 24317Warnings: 24318Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24319 24320# check trigger-10 success: 1 24321DROP TRIGGER trg_2; 24322UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24323f_int2 = CAST(f_char1 AS SIGNED INT), 24324f_charbig = CONCAT('===',f_char1,'==='); 24325Warnings: 24326Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24327CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24328BEGIN 24329SET new.f_int1 = @my_max1 + @counter, 24330new.f_int2 = @my_min2 - @counter, 24331new.f_charbig = '####updated per insert trigger####'; 24332SET @counter = @counter + 1; 24333END| 24334SET @counter = 1; 24335SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24336Warnings: 24337Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24338INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24339SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24340CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24342ORDER BY f_int1; 24343DROP TRIGGER trg_3; 24344 24345# check trigger-11 success: 1 24346Warnings: 24347Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24348DELETE FROM t1 24349WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24350AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24351AND f_charbig = '####updated per insert trigger####'; 24352CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24353BEGIN 24354SET new.f_int1 = @my_max1 + @counter, 24355new.f_int2 = @my_min2 - @counter, 24356new.f_charbig = '####updated per insert trigger####'; 24357SET @counter = @counter + 1; 24358END| 24359SET @counter = 1; 24360SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24361Warnings: 24362Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24363INSERT INTO t1 (f_char1, f_char2, f_charbig) 24364SELECT CAST(f_int1 AS CHAR), 24365CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24367ORDER BY f_int1; 24368DROP TRIGGER trg_3; 24369 24370# check trigger-12 success: 1 24371Warnings: 24372Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24373DELETE FROM t1 24374WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24375AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24376AND f_charbig = '####updated per insert trigger####'; 24377ANALYZE TABLE t1; 24378Table Op Msg_type Msg_text 24379test.t1 analyze status OK 24380test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24381CHECK TABLE t1 EXTENDED; 24382Table Op Msg_type Msg_text 24383test.t1 check status OK 24384test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24385CHECKSUM TABLE t1 EXTENDED; 24386Table Checksum 24387test.t1 <some_value> 24388OPTIMIZE TABLE t1; 24389Table Op Msg_type Msg_text 24390test.t1 optimize status OK 24391test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24392# check layout success: 1 24393REPAIR TABLE t1 EXTENDED; 24394Table Op Msg_type Msg_text 24395test.t1 repair status OK 24396test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24397# check layout success: 1 24398TRUNCATE t1; 24399Warnings: 24400Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24401 24402# check TRUNCATE success: 1 24403# check layout success: 1 24404# End usability test (inc/partition_check.inc) 24405DROP TABLE t1; 24406CREATE TABLE t1 ( 24407f_int1 INTEGER, 24408f_int2 INTEGER, 24409f_char1 CHAR(20), 24410f_char2 CHAR(20), 24411f_charbig VARCHAR(1000) 24412, UNIQUE INDEX uidx (f_int2,f_int1) 24413) 24414PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 24415(PARTITION parta VALUES LESS THAN (0), 24416PARTITION partb VALUES LESS THAN (5), 24417PARTITION partc VALUES LESS THAN (10), 24418PARTITION partd VALUES LESS THAN (2147483646)); 24419Warnings: 24420Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24421INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24422SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 24423WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 24424Warnings: 24425Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24426ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 24427Warnings: 24428Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24429INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24430SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 24431WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 24432Warnings: 24433Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24434# Start usability test (inc/partition_check.inc) 24435create_command 24436SHOW CREATE TABLE t1; 24437Table Create Table 24438t1 CREATE TABLE `t1` ( 24439 `f_int1` mediumint(9) DEFAULT NULL, 24440 `f_int2` mediumint(9) DEFAULT NULL, 24441 `f_char1` char(20) DEFAULT NULL, 24442 `f_char2` char(20) DEFAULT NULL, 24443 `f_charbig` varchar(1000) DEFAULT NULL, 24444 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 24445) ENGINE=MyISAM DEFAULT CHARSET=latin1 24446/*!50100 PARTITION BY RANGE (f_int1) 24447SUBPARTITION BY HASH (f_int2) 24448SUBPARTITIONS 2 24449(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, 24450 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, 24451 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 24452 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ 24453 24454unified filelist 24455t1#P#parta#SP#partasp0.MYD 24456t1#P#parta#SP#partasp0.MYI 24457t1#P#parta#SP#partasp1.MYD 24458t1#P#parta#SP#partasp1.MYI 24459t1#P#partb#SP#partbsp0.MYD 24460t1#P#partb#SP#partbsp0.MYI 24461t1#P#partb#SP#partbsp1.MYD 24462t1#P#partb#SP#partbsp1.MYI 24463t1#P#partc#SP#partcsp0.MYD 24464t1#P#partc#SP#partcsp0.MYI 24465t1#P#partc#SP#partcsp1.MYD 24466t1#P#partc#SP#partcsp1.MYI 24467t1#P#partd#SP#partdsp0.MYD 24468t1#P#partd#SP#partdsp0.MYI 24469t1#P#partd#SP#partdsp1.MYD 24470t1#P#partd#SP#partdsp1.MYI 24471t1.frm 24472t1.par 24473 24474# check prerequisites-1 success: 1 24475# check COUNT(*) success: 1 24476# check MIN/MAX(f_int1) success: 1 24477# check MIN/MAX(f_int2) success: 1 24478INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24479SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24480CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 24481WHERE f_int1 IN (2,3); 24482ERROR 23000: Duplicate entry '2-2' for key 'uidx' 24483# check prerequisites-3 success: 1 24484# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 24485INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24486SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24487CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24488WHERE f_int1 IN (2,3); 24489DELETE FROM t1 WHERE f_charbig = 'delete me'; 24490INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24491SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 24492CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 24493WHERE f_int1 IN (2,3); 24494DELETE FROM t1 WHERE f_charbig = 'delete me'; 24495# check read via f_int1 success: 1 24496# check read via f_int2 success: 1 24497 24498# check multiple-1 success: 1 24499DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 24500 24501# check multiple-2 success: 1 24502INSERT INTO t1 SELECT * FROM t0_template 24503WHERE MOD(f_int1,3) = 0; 24504 24505# check multiple-3 success: 1 24506UPDATE t1 SET f_int1 = f_int1 + @max_row 24507WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 24508AND @max_row_div2 + @max_row_div4; 24509 24510# check multiple-4 success: 1 24511DELETE FROM t1 24512WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 24513AND @max_row_div2 + @max_row_div4 + @max_row; 24514 24515# check multiple-5 success: 1 24516SELECT COUNT(*) INTO @try_count FROM t0_template 24517WHERE MOD(f_int1,3) = 0 24518AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24519SELECT COUNT(*) INTO @clash_count 24520FROM t1 INNER JOIN t0_template USING(f_int1) 24521WHERE MOD(f_int1,3) = 0 24522AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24523SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 24524INSERT INTO t1 24525SET f_int1 = @cur_value , f_int2 = @cur_value, 24526f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24527f_charbig = '#SINGLE#'; 24528 24529# check single-1 success: 1 24530SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 24531INSERT INTO t1 24532SET f_int1 = @cur_value , f_int2 = @cur_value, 24533f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 24534f_charbig = '#SINGLE#'; 24535 24536# check single-2 success: 1 24537SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 24538SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 24539UPDATE t1 SET f_int1 = @cur_value2 24540WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 24541 24542# check single-3 success: 1 24543SET @cur_value1= -1; 24544SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 24545UPDATE t1 SET f_int1 = @cur_value1 24546WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 24547 24548# check single-4 success: 1 24549SELECT MAX(f_int1) INTO @cur_value FROM t1; 24550DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 24551 24552# check single-5 success: 1 24553DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 24554 24555# check single-6 success: 1 24556INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 24557Warnings: 24558Warning 1264 Out of range value for column 'f_int1' at row 1 24559Warning 1264 Out of range value for column 'f_int2' at row 1 24560 24561# check single-7 success: 1 24562DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 24563DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 24564INSERT t1 SET f_int1 = 0 , f_int2 = 0, 24565f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 24566f_charbig = '#NULL#'; 24567INSERT INTO t1 24568SET f_int1 = NULL , f_int2 = -@max_row, 24569f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 24570f_charbig = '#NULL#'; 24571# check null success: 1 24572 24573# check null-1 success: 1 24574UPDATE t1 SET f_int1 = -@max_row 24575WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24576AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24577 24578# check null-2 success: 1 24579UPDATE t1 SET f_int1 = NULL 24580WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24581AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24582 24583# check null-3 success: 1 24584DELETE FROM t1 24585WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 24586AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 24587 24588# check null-4 success: 1 24589DELETE FROM t1 24590WHERE f_int1 = 0 AND f_int2 = 0 24591AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 24592AND f_charbig = '#NULL#'; 24593INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24594SELECT f_int1, f_int1, '', '', 'was inserted' 24595 FROM t0_template source_tab 24596WHERE MOD(f_int1,3) = 0 24597AND f_int1 BETWEEN @max_row_div2 AND @max_row 24598ON DUPLICATE KEY 24599UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 24600f_int2 = 2 * @max_row + source_tab.f_int1, 24601f_charbig = 'was updated'; 24602 24603# check unique-1-a success: 1 24604 24605# check unique-1-b success: 1 24606DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24608f_int2 = CAST(f_char1 AS SIGNED INT), 24609f_charbig = CONCAT('===',f_char1,'===') 24610WHERE f_charbig = 'was updated'; 24611REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24612SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 24613 FROM t0_template source_tab 24614WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 24615 24616# check replace success: 1 24617DELETE FROM t1 24618WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 24619DELETE FROM t1 24620WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 24621f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 24622UPDATE t1 SET f_int2 = f_int1, 24623f_char1 = CAST(f_int1 AS CHAR), 24624f_char2 = CAST(f_int1 AS CHAR), 24625f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 24626WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 24627SET AUTOCOMMIT= 0; 24628INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24629SELECT f_int1, f_int1, '', '', 'was inserted' 24630FROM t0_template source_tab 24631WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24632 24633# check transactions-1 success: 1 24634COMMIT WORK; 24635 24636# check transactions-2 success: 1 24637ROLLBACK WORK; 24638 24639# check transactions-3 success: 1 24640DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24641COMMIT WORK; 24642ROLLBACK WORK; 24643 24644# check transactions-4 success: 1 24645INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24646SELECT f_int1, f_int1, '', '', 'was inserted' 24647FROM t0_template source_tab 24648WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24649 24650# check transactions-5 success: 1 24651ROLLBACK WORK; 24652Warnings: 24653Warning 1196 Some non-transactional changed tables couldn't be rolled back 24654 24655# check transactions-6 success: 1 24656# INFO: Storage engine used for t1 seems to be not transactional. 24657COMMIT; 24658 24659# check transactions-7 success: 1 24660DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24661COMMIT WORK; 24662SET @@session.sql_mode = 'traditional'; 24663Warnings: 24664Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24665SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 24666INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24667SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 24668'', '', 'was inserted' FROM t0_template 24669WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 24670ERROR 22012: Division by 0 24671COMMIT; 24672 24673# check transactions-8 success: 1 24674# INFO: Storage engine used for t1 seems to be unable to revert 24675# changes made by the failing statement. 24676SET @@session.sql_mode = ''; 24677Warnings: 24678Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 24679SET AUTOCOMMIT= 1; 24680DELETE FROM t1 WHERE f_charbig = 'was inserted'; 24681COMMIT WORK; 24682UPDATE t1 SET f_charbig = REPEAT('b', 1000); 24683 24684# check special-1 success: 1 24685UPDATE t1 SET f_charbig = ''; 24686 24687# check special-2 success: 1 24688UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 24689INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 24690SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 24691WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24692INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24693SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24694'just inserted' FROM t0_template 24695WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24696CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 24697BEGIN 24698UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24699f_charbig = 'updated by trigger' 24700 WHERE f_int1 = new.f_int1; 24701END| 24702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24703SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24704WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24705 24706# check trigger-1 success: 1 24707DROP TRIGGER trg_1; 24708UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24709f_int2 = CAST(f_char1 AS SIGNED INT), 24710f_charbig = 'just inserted' 24711 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24712DELETE FROM t0_aux 24713WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24714INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24715SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24716'just inserted' FROM t0_template 24717WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24718CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 24719BEGIN 24720UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24721f_charbig = 'updated by trigger' 24722 WHERE f_int1 = new.f_int1; 24723END| 24724INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24725SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 24726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24727 24728# check trigger-2 success: 1 24729DROP TRIGGER trg_1; 24730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24731f_int2 = CAST(f_char1 AS SIGNED INT), 24732f_charbig = 'just inserted' 24733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24734DELETE FROM t0_aux 24735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24738'just inserted' FROM t0_template 24739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24740CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24741BEGIN 24742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24743f_charbig = 'updated by trigger' 24744 WHERE f_int1 = new.f_int1; 24745END| 24746UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24747WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24748 24749# check trigger-3 success: 1 24750DROP TRIGGER trg_1; 24751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24752f_int2 = CAST(f_char1 AS SIGNED INT), 24753f_charbig = 'just inserted' 24754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24755DELETE FROM t0_aux 24756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24759'just inserted' FROM t0_template 24760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24761CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 24762BEGIN 24763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24764f_charbig = 'updated by trigger' 24765 WHERE f_int1 = - old.f_int1; 24766END| 24767UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24769 24770# check trigger-4 success: 1 24771DROP TRIGGER trg_1; 24772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24773f_int2 = CAST(f_char1 AS SIGNED INT), 24774f_charbig = 'just inserted' 24775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24776DELETE FROM t0_aux 24777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24780'just inserted' FROM t0_template 24781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24782CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24783BEGIN 24784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24785f_charbig = 'updated by trigger' 24786 WHERE f_int1 = new.f_int1; 24787END| 24788UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24790 24791# check trigger-5 success: 1 24792DROP TRIGGER trg_1; 24793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24794f_int2 = CAST(f_char1 AS SIGNED INT), 24795f_charbig = 'just inserted' 24796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24797DELETE FROM t0_aux 24798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24801'just inserted' FROM t0_template 24802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24803CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 24804BEGIN 24805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24806f_charbig = 'updated by trigger' 24807 WHERE f_int1 = - old.f_int1; 24808END| 24809UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 24810WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24811 24812# check trigger-6 success: 1 24813DROP TRIGGER trg_1; 24814UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24815f_int2 = CAST(f_char1 AS SIGNED INT), 24816f_charbig = 'just inserted' 24817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24818DELETE FROM t0_aux 24819WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24821SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24822'just inserted' FROM t0_template 24823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24824CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 24825BEGIN 24826UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24827f_charbig = 'updated by trigger' 24828 WHERE f_int1 = - old.f_int1; 24829END| 24830DELETE FROM t0_aux 24831WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24832 24833# check trigger-7 success: 1 24834DROP TRIGGER trg_1; 24835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24836f_int2 = CAST(f_char1 AS SIGNED INT), 24837f_charbig = 'just inserted' 24838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24839DELETE FROM t0_aux 24840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 24842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 24843'just inserted' FROM t0_template 24844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24845CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 24846BEGIN 24847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 24848f_charbig = 'updated by trigger' 24849 WHERE f_int1 = - old.f_int1; 24850END| 24851DELETE FROM t0_aux 24852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 24853 24854# check trigger-8 success: 1 24855DROP TRIGGER trg_1; 24856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24857f_int2 = CAST(f_char1 AS SIGNED INT), 24858f_charbig = 'just inserted' 24859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 24860DELETE FROM t0_aux 24861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24862DELETE FROM t1 24863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 24864CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24865BEGIN 24866SET new.f_int1 = old.f_int1 + @max_row, 24867new.f_int2 = old.f_int2 - @max_row, 24868new.f_charbig = '####updated per update trigger####'; 24869END| 24870UPDATE t1 24871SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24872f_charbig = '####updated per update statement itself####'; 24873Warnings: 24874Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24875 24876# check trigger-9 success: 1 24877DROP TRIGGER trg_2; 24878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24879f_int2 = CAST(f_char1 AS SIGNED INT), 24880f_charbig = CONCAT('===',f_char1,'==='); 24881Warnings: 24882Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24883CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 24884BEGIN 24885SET new.f_int1 = new.f_int1 + @max_row, 24886new.f_int2 = new.f_int2 - @max_row, 24887new.f_charbig = '####updated per update trigger####'; 24888END| 24889UPDATE t1 24890SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 24891f_charbig = '####updated per update statement itself####'; 24892Warnings: 24893Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24894 24895# check trigger-10 success: 1 24896DROP TRIGGER trg_2; 24897UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 24898f_int2 = CAST(f_char1 AS SIGNED INT), 24899f_charbig = CONCAT('===',f_char1,'==='); 24900Warnings: 24901Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24902CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24903BEGIN 24904SET new.f_int1 = @my_max1 + @counter, 24905new.f_int2 = @my_min2 - @counter, 24906new.f_charbig = '####updated per insert trigger####'; 24907SET @counter = @counter + 1; 24908END| 24909SET @counter = 1; 24910SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24911Warnings: 24912Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24913INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 24914SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 24915CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24917ORDER BY f_int1; 24918DROP TRIGGER trg_3; 24919 24920# check trigger-11 success: 1 24921Warnings: 24922Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24923DELETE FROM t1 24924WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24925AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24926AND f_charbig = '####updated per insert trigger####'; 24927CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 24928BEGIN 24929SET new.f_int1 = @my_max1 + @counter, 24930new.f_int2 = @my_min2 - @counter, 24931new.f_charbig = '####updated per insert trigger####'; 24932SET @counter = @counter + 1; 24933END| 24934SET @counter = 1; 24935SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 24936Warnings: 24937Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24938INSERT INTO t1 (f_char1, f_char2, f_charbig) 24939SELECT CAST(f_int1 AS CHAR), 24940CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 24941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 24942ORDER BY f_int1; 24943DROP TRIGGER trg_3; 24944 24945# check trigger-12 success: 1 24946Warnings: 24947Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24948DELETE FROM t1 24949WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 24950AND f_int2 <> CAST(f_char1 AS SIGNED INT) 24951AND f_charbig = '####updated per insert trigger####'; 24952ANALYZE TABLE t1; 24953Table Op Msg_type Msg_text 24954test.t1 analyze status OK 24955test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24956CHECK TABLE t1 EXTENDED; 24957Table Op Msg_type Msg_text 24958test.t1 check status OK 24959test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24960CHECKSUM TABLE t1 EXTENDED; 24961Table Checksum 24962test.t1 <some_value> 24963OPTIMIZE TABLE t1; 24964Table Op Msg_type Msg_text 24965test.t1 optimize status OK 24966test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24967# check layout success: 1 24968REPAIR TABLE t1 EXTENDED; 24969Table Op Msg_type Msg_text 24970test.t1 repair status OK 24971test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24972# check layout success: 1 24973TRUNCATE t1; 24974Warnings: 24975Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 24976 24977# check TRUNCATE success: 1 24978# check layout success: 1 24979# End usability test (inc/partition_check.inc) 24980DROP TABLE t1; 24981CREATE TABLE t1 ( 24982f_int1 INTEGER, 24983f_int2 INTEGER, 24984f_char1 CHAR(20), 24985f_char2 CHAR(20), 24986f_charbig VARCHAR(1000) 24987, UNIQUE INDEX uidx (f_int2,f_int1) 24988) 24989PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 24990(PARTITION part1 VALUES LESS THAN (0) 24991(SUBPARTITION subpart11, SUBPARTITION subpart12), 24992PARTITION part2 VALUES LESS THAN (5) 24993(SUBPARTITION subpart21, SUBPARTITION subpart22), 24994PARTITION part3 VALUES LESS THAN (10) 24995(SUBPARTITION subpart31, SUBPARTITION subpart32), 24996PARTITION part4 VALUES LESS THAN (2147483646) 24997(SUBPARTITION subpart41, SUBPARTITION subpart42)); 24998Warnings: 24999Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25000INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25001SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 25002WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 25003Warnings: 25004Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25005ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 25006Warnings: 25007Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25008INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25009SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 25010WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 25011Warnings: 25012Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25013# Start usability test (inc/partition_check.inc) 25014create_command 25015SHOW CREATE TABLE t1; 25016Table Create Table 25017t1 CREATE TABLE `t1` ( 25018 `f_int1` mediumint(9) DEFAULT NULL, 25019 `f_int2` mediumint(9) DEFAULT NULL, 25020 `f_char1` char(20) DEFAULT NULL, 25021 `f_char2` char(20) DEFAULT NULL, 25022 `f_charbig` varchar(1000) DEFAULT NULL, 25023 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 25024) ENGINE=MyISAM DEFAULT CHARSET=latin1 25025/*!50100 PARTITION BY RANGE (f_int1) 25026SUBPARTITION BY KEY (f_int2) 25027(PARTITION part1 VALUES LESS THAN (0) 25028 (SUBPARTITION subpart11 ENGINE = MyISAM, 25029 SUBPARTITION subpart12 ENGINE = MyISAM), 25030 PARTITION part2 VALUES LESS THAN (5) 25031 (SUBPARTITION subpart21 ENGINE = MyISAM, 25032 SUBPARTITION subpart22 ENGINE = MyISAM), 25033 PARTITION part3 VALUES LESS THAN (10) 25034 (SUBPARTITION subpart31 ENGINE = MyISAM, 25035 SUBPARTITION subpart32 ENGINE = MyISAM), 25036 PARTITION part4 VALUES LESS THAN (2147483646) 25037 (SUBPARTITION subpart41 ENGINE = MyISAM, 25038 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 25039 25040unified filelist 25041t1#P#part1#SP#subpart11.MYD 25042t1#P#part1#SP#subpart11.MYI 25043t1#P#part1#SP#subpart12.MYD 25044t1#P#part1#SP#subpart12.MYI 25045t1#P#part2#SP#subpart21.MYD 25046t1#P#part2#SP#subpart21.MYI 25047t1#P#part2#SP#subpart22.MYD 25048t1#P#part2#SP#subpart22.MYI 25049t1#P#part3#SP#subpart31.MYD 25050t1#P#part3#SP#subpart31.MYI 25051t1#P#part3#SP#subpart32.MYD 25052t1#P#part3#SP#subpart32.MYI 25053t1#P#part4#SP#subpart41.MYD 25054t1#P#part4#SP#subpart41.MYI 25055t1#P#part4#SP#subpart42.MYD 25056t1#P#part4#SP#subpart42.MYI 25057t1.frm 25058t1.par 25059 25060# check prerequisites-1 success: 1 25061# check COUNT(*) success: 1 25062# check MIN/MAX(f_int1) success: 1 25063# check MIN/MAX(f_int2) success: 1 25064INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25065SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25066CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 25067WHERE f_int1 IN (2,3); 25068ERROR 23000: Duplicate entry '2-2' for key 'uidx' 25069# check prerequisites-3 success: 1 25070# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 25071INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25072SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25073CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25074WHERE f_int1 IN (2,3); 25075DELETE FROM t1 WHERE f_charbig = 'delete me'; 25076INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25077SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25078CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25079WHERE f_int1 IN (2,3); 25080DELETE FROM t1 WHERE f_charbig = 'delete me'; 25081# check read via f_int1 success: 1 25082# check read via f_int2 success: 1 25083 25084# check multiple-1 success: 1 25085DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 25086 25087# check multiple-2 success: 1 25088INSERT INTO t1 SELECT * FROM t0_template 25089WHERE MOD(f_int1,3) = 0; 25090 25091# check multiple-3 success: 1 25092UPDATE t1 SET f_int1 = f_int1 + @max_row 25093WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 25094AND @max_row_div2 + @max_row_div4; 25095 25096# check multiple-4 success: 1 25097DELETE FROM t1 25098WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 25099AND @max_row_div2 + @max_row_div4 + @max_row; 25100 25101# check multiple-5 success: 1 25102SELECT COUNT(*) INTO @try_count FROM t0_template 25103WHERE MOD(f_int1,3) = 0 25104AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25105SELECT COUNT(*) INTO @clash_count 25106FROM t1 INNER JOIN t0_template USING(f_int1) 25107WHERE MOD(f_int1,3) = 0 25108AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25109SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 25110INSERT INTO t1 25111SET f_int1 = @cur_value , f_int2 = @cur_value, 25112f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25113f_charbig = '#SINGLE#'; 25114 25115# check single-1 success: 1 25116SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 25117INSERT INTO t1 25118SET f_int1 = @cur_value , f_int2 = @cur_value, 25119f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25120f_charbig = '#SINGLE#'; 25121 25122# check single-2 success: 1 25123SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 25124SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 25125UPDATE t1 SET f_int1 = @cur_value2 25126WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 25127 25128# check single-3 success: 1 25129SET @cur_value1= -1; 25130SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 25131UPDATE t1 SET f_int1 = @cur_value1 25132WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 25133 25134# check single-4 success: 1 25135SELECT MAX(f_int1) INTO @cur_value FROM t1; 25136DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 25137 25138# check single-5 success: 1 25139DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 25140 25141# check single-6 success: 1 25142INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 25143Warnings: 25144Warning 1264 Out of range value for column 'f_int1' at row 1 25145Warning 1264 Out of range value for column 'f_int2' at row 1 25146 25147# check single-7 success: 1 25148DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 25149DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 25150INSERT t1 SET f_int1 = 0 , f_int2 = 0, 25151f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 25152f_charbig = '#NULL#'; 25153INSERT INTO t1 25154SET f_int1 = NULL , f_int2 = -@max_row, 25155f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 25156f_charbig = '#NULL#'; 25157# check null success: 1 25158 25159# check null-1 success: 1 25160UPDATE t1 SET f_int1 = -@max_row 25161WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25162AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25163 25164# check null-2 success: 1 25165UPDATE t1 SET f_int1 = NULL 25166WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25167AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25168 25169# check null-3 success: 1 25170DELETE FROM t1 25171WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25172AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25173 25174# check null-4 success: 1 25175DELETE FROM t1 25176WHERE f_int1 = 0 AND f_int2 = 0 25177AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 25178AND f_charbig = '#NULL#'; 25179INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25180SELECT f_int1, f_int1, '', '', 'was inserted' 25181 FROM t0_template source_tab 25182WHERE MOD(f_int1,3) = 0 25183AND f_int1 BETWEEN @max_row_div2 AND @max_row 25184ON DUPLICATE KEY 25185UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 25186f_int2 = 2 * @max_row + source_tab.f_int1, 25187f_charbig = 'was updated'; 25188 25189# check unique-1-a success: 1 25190 25191# check unique-1-b success: 1 25192DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25193UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25194f_int2 = CAST(f_char1 AS SIGNED INT), 25195f_charbig = CONCAT('===',f_char1,'===') 25196WHERE f_charbig = 'was updated'; 25197REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25198SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 25199 FROM t0_template source_tab 25200WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25201 25202# check replace success: 1 25203DELETE FROM t1 25204WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 25205DELETE FROM t1 25206WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 25207f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 25208UPDATE t1 SET f_int2 = f_int1, 25209f_char1 = CAST(f_int1 AS CHAR), 25210f_char2 = CAST(f_int1 AS CHAR), 25211f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 25212WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 25213SET AUTOCOMMIT= 0; 25214INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25215SELECT f_int1, f_int1, '', '', 'was inserted' 25216FROM t0_template source_tab 25217WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25218 25219# check transactions-1 success: 1 25220COMMIT WORK; 25221 25222# check transactions-2 success: 1 25223ROLLBACK WORK; 25224 25225# check transactions-3 success: 1 25226DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25227COMMIT WORK; 25228ROLLBACK WORK; 25229 25230# check transactions-4 success: 1 25231INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25232SELECT f_int1, f_int1, '', '', 'was inserted' 25233FROM t0_template source_tab 25234WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25235 25236# check transactions-5 success: 1 25237ROLLBACK WORK; 25238Warnings: 25239Warning 1196 Some non-transactional changed tables couldn't be rolled back 25240 25241# check transactions-6 success: 1 25242# INFO: Storage engine used for t1 seems to be not transactional. 25243COMMIT; 25244 25245# check transactions-7 success: 1 25246DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25247COMMIT WORK; 25248SET @@session.sql_mode = 'traditional'; 25249Warnings: 25250Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25251SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 25252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25253SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 25254'', '', 'was inserted' FROM t0_template 25255WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25256ERROR 22012: Division by 0 25257COMMIT; 25258 25259# check transactions-8 success: 1 25260# INFO: Storage engine used for t1 seems to be unable to revert 25261# changes made by the failing statement. 25262SET @@session.sql_mode = ''; 25263Warnings: 25264Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25265SET AUTOCOMMIT= 1; 25266DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25267COMMIT WORK; 25268UPDATE t1 SET f_charbig = REPEAT('b', 1000); 25269 25270# check special-1 success: 1 25271UPDATE t1 SET f_charbig = ''; 25272 25273# check special-2 success: 1 25274UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 25275INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25276SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 25277WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25278INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25279SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25280'just inserted' FROM t0_template 25281WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25282CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 25283BEGIN 25284UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25285f_charbig = 'updated by trigger' 25286 WHERE f_int1 = new.f_int1; 25287END| 25288INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25289SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25290WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25291 25292# check trigger-1 success: 1 25293DROP TRIGGER trg_1; 25294UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25295f_int2 = CAST(f_char1 AS SIGNED INT), 25296f_charbig = 'just inserted' 25297 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25298DELETE FROM t0_aux 25299WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25300INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25301SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25302'just inserted' FROM t0_template 25303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25304CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 25305BEGIN 25306UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25307f_charbig = 'updated by trigger' 25308 WHERE f_int1 = new.f_int1; 25309END| 25310INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25311SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25312WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25313 25314# check trigger-2 success: 1 25315DROP TRIGGER trg_1; 25316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25317f_int2 = CAST(f_char1 AS SIGNED INT), 25318f_charbig = 'just inserted' 25319 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25320DELETE FROM t0_aux 25321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25322INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25323SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25324'just inserted' FROM t0_template 25325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25326CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25327BEGIN 25328UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25329f_charbig = 'updated by trigger' 25330 WHERE f_int1 = new.f_int1; 25331END| 25332UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25333WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25334 25335# check trigger-3 success: 1 25336DROP TRIGGER trg_1; 25337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25338f_int2 = CAST(f_char1 AS SIGNED INT), 25339f_charbig = 'just inserted' 25340 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25341DELETE FROM t0_aux 25342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25345'just inserted' FROM t0_template 25346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25347CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25348BEGIN 25349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25350f_charbig = 'updated by trigger' 25351 WHERE f_int1 = - old.f_int1; 25352END| 25353UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25355 25356# check trigger-4 success: 1 25357DROP TRIGGER trg_1; 25358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25359f_int2 = CAST(f_char1 AS SIGNED INT), 25360f_charbig = 'just inserted' 25361 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25362DELETE FROM t0_aux 25363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25366'just inserted' FROM t0_template 25367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25368CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25369BEGIN 25370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25371f_charbig = 'updated by trigger' 25372 WHERE f_int1 = new.f_int1; 25373END| 25374UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25376 25377# check trigger-5 success: 1 25378DROP TRIGGER trg_1; 25379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25380f_int2 = CAST(f_char1 AS SIGNED INT), 25381f_charbig = 'just inserted' 25382 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25383DELETE FROM t0_aux 25384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25385INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25386SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25387'just inserted' FROM t0_template 25388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25389CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25390BEGIN 25391UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25392f_charbig = 'updated by trigger' 25393 WHERE f_int1 = - old.f_int1; 25394END| 25395UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25396WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25397 25398# check trigger-6 success: 1 25399DROP TRIGGER trg_1; 25400UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25401f_int2 = CAST(f_char1 AS SIGNED INT), 25402f_charbig = 'just inserted' 25403 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25404DELETE FROM t0_aux 25405WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25406INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25407SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25408'just inserted' FROM t0_template 25409WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25410CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 25411BEGIN 25412UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25413f_charbig = 'updated by trigger' 25414 WHERE f_int1 = - old.f_int1; 25415END| 25416DELETE FROM t0_aux 25417WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25418 25419# check trigger-7 success: 1 25420DROP TRIGGER trg_1; 25421UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25422f_int2 = CAST(f_char1 AS SIGNED INT), 25423f_charbig = 'just inserted' 25424 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25425DELETE FROM t0_aux 25426WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25427INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25428SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25429'just inserted' FROM t0_template 25430WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25431CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 25432BEGIN 25433UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25434f_charbig = 'updated by trigger' 25435 WHERE f_int1 = - old.f_int1; 25436END| 25437DELETE FROM t0_aux 25438WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25439 25440# check trigger-8 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; 25448DELETE FROM t1 25449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25450CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25451BEGIN 25452SET new.f_int1 = old.f_int1 + @max_row, 25453new.f_int2 = old.f_int2 - @max_row, 25454new.f_charbig = '####updated per update trigger####'; 25455END| 25456UPDATE t1 25457SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25458f_charbig = '####updated per update statement itself####'; 25459Warnings: 25460Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25461 25462# check trigger-9 success: 1 25463DROP TRIGGER trg_2; 25464UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25465f_int2 = CAST(f_char1 AS SIGNED INT), 25466f_charbig = CONCAT('===',f_char1,'==='); 25467Warnings: 25468Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25469CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 25470BEGIN 25471SET new.f_int1 = new.f_int1 + @max_row, 25472new.f_int2 = new.f_int2 - @max_row, 25473new.f_charbig = '####updated per update trigger####'; 25474END| 25475UPDATE t1 25476SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 25477f_charbig = '####updated per update statement itself####'; 25478Warnings: 25479Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25480 25481# check trigger-10 success: 1 25482DROP TRIGGER trg_2; 25483UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25484f_int2 = CAST(f_char1 AS SIGNED INT), 25485f_charbig = CONCAT('===',f_char1,'==='); 25486Warnings: 25487Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25488CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25489BEGIN 25490SET new.f_int1 = @my_max1 + @counter, 25491new.f_int2 = @my_min2 - @counter, 25492new.f_charbig = '####updated per insert trigger####'; 25493SET @counter = @counter + 1; 25494END| 25495SET @counter = 1; 25496SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25497Warnings: 25498Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25499INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25500SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25501CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25503ORDER BY f_int1; 25504DROP TRIGGER trg_3; 25505 25506# check trigger-11 success: 1 25507Warnings: 25508Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25509DELETE FROM t1 25510WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25511AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25512AND f_charbig = '####updated per insert trigger####'; 25513CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 25514BEGIN 25515SET new.f_int1 = @my_max1 + @counter, 25516new.f_int2 = @my_min2 - @counter, 25517new.f_charbig = '####updated per insert trigger####'; 25518SET @counter = @counter + 1; 25519END| 25520SET @counter = 1; 25521SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 25522Warnings: 25523Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25524INSERT INTO t1 (f_char1, f_char2, f_charbig) 25525SELECT CAST(f_int1 AS CHAR), 25526CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 25527WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 25528ORDER BY f_int1; 25529DROP TRIGGER trg_3; 25530 25531# check trigger-12 success: 1 25532Warnings: 25533Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25534DELETE FROM t1 25535WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 25536AND f_int2 <> CAST(f_char1 AS SIGNED INT) 25537AND f_charbig = '####updated per insert trigger####'; 25538ANALYZE TABLE t1; 25539Table Op Msg_type Msg_text 25540test.t1 analyze status OK 25541test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25542CHECK TABLE t1 EXTENDED; 25543Table Op Msg_type Msg_text 25544test.t1 check status OK 25545test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25546CHECKSUM TABLE t1 EXTENDED; 25547Table Checksum 25548test.t1 <some_value> 25549OPTIMIZE TABLE t1; 25550Table Op Msg_type Msg_text 25551test.t1 optimize status OK 25552test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25553# check layout success: 1 25554REPAIR TABLE t1 EXTENDED; 25555Table Op Msg_type Msg_text 25556test.t1 repair status OK 25557test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25558# check layout success: 1 25559TRUNCATE t1; 25560Warnings: 25561Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25562 25563# check TRUNCATE success: 1 25564# check layout success: 1 25565# End usability test (inc/partition_check.inc) 25566DROP TABLE t1; 25567CREATE TABLE t1 ( 25568f_int1 INTEGER, 25569f_int2 INTEGER, 25570f_char1 CHAR(20), 25571f_char2 CHAR(20), 25572f_charbig VARCHAR(1000) 25573, UNIQUE INDEX uidx (f_int2,f_int1) 25574) 25575PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 25576(PARTITION part1 VALUES IN (0) 25577(SUBPARTITION sp11, SUBPARTITION sp12), 25578PARTITION part2 VALUES IN (1) 25579(SUBPARTITION sp21, SUBPARTITION sp22), 25580PARTITION part3 VALUES IN (2) 25581(SUBPARTITION sp31, SUBPARTITION sp32), 25582PARTITION part4 VALUES IN (NULL) 25583(SUBPARTITION sp41, SUBPARTITION sp42)); 25584Warnings: 25585Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25586INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25587SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 25588WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 25589Warnings: 25590Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25591ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 25592Warnings: 25593Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25594INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25595SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 25596WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 25597Warnings: 25598Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 25599# Start usability test (inc/partition_check.inc) 25600create_command 25601SHOW CREATE TABLE t1; 25602Table Create Table 25603t1 CREATE TABLE `t1` ( 25604 `f_int1` mediumint(9) DEFAULT NULL, 25605 `f_int2` mediumint(9) DEFAULT NULL, 25606 `f_char1` char(20) DEFAULT NULL, 25607 `f_char2` char(20) DEFAULT NULL, 25608 `f_charbig` varchar(1000) DEFAULT NULL, 25609 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 25610) ENGINE=MyISAM DEFAULT CHARSET=latin1 25611/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 25612SUBPARTITION BY HASH (f_int2 + 1) 25613(PARTITION part1 VALUES IN (0) 25614 (SUBPARTITION sp11 ENGINE = MyISAM, 25615 SUBPARTITION sp12 ENGINE = MyISAM), 25616 PARTITION part2 VALUES IN (1) 25617 (SUBPARTITION sp21 ENGINE = MyISAM, 25618 SUBPARTITION sp22 ENGINE = MyISAM), 25619 PARTITION part3 VALUES IN (2) 25620 (SUBPARTITION sp31 ENGINE = MyISAM, 25621 SUBPARTITION sp32 ENGINE = MyISAM), 25622 PARTITION part4 VALUES IN (NULL) 25623 (SUBPARTITION sp41 ENGINE = MyISAM, 25624 SUBPARTITION sp42 ENGINE = MyISAM)) */ 25625 25626unified filelist 25627t1#P#part1#SP#sp11.MYD 25628t1#P#part1#SP#sp11.MYI 25629t1#P#part1#SP#sp12.MYD 25630t1#P#part1#SP#sp12.MYI 25631t1#P#part2#SP#sp21.MYD 25632t1#P#part2#SP#sp21.MYI 25633t1#P#part2#SP#sp22.MYD 25634t1#P#part2#SP#sp22.MYI 25635t1#P#part3#SP#sp31.MYD 25636t1#P#part3#SP#sp31.MYI 25637t1#P#part3#SP#sp32.MYD 25638t1#P#part3#SP#sp32.MYI 25639t1#P#part4#SP#sp41.MYD 25640t1#P#part4#SP#sp41.MYI 25641t1#P#part4#SP#sp42.MYD 25642t1#P#part4#SP#sp42.MYI 25643t1.frm 25644t1.par 25645 25646# check prerequisites-1 success: 1 25647# check COUNT(*) success: 1 25648# check MIN/MAX(f_int1) success: 1 25649# check MIN/MAX(f_int2) success: 1 25650INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25651SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 25652CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 25653WHERE f_int1 IN (2,3); 25654ERROR 23000: Duplicate entry '2-2' for key 'uidx' 25655# check prerequisites-3 success: 1 25656# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 25657INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25658SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25659CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25660WHERE f_int1 IN (2,3); 25661DELETE FROM t1 WHERE f_charbig = 'delete me'; 25662INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25663SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 25664CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 25665WHERE f_int1 IN (2,3); 25666DELETE FROM t1 WHERE f_charbig = 'delete me'; 25667# check read via f_int1 success: 1 25668# check read via f_int2 success: 1 25669 25670# check multiple-1 success: 1 25671DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 25672 25673# check multiple-2 success: 1 25674INSERT INTO t1 SELECT * FROM t0_template 25675WHERE MOD(f_int1,3) = 0; 25676 25677# check multiple-3 success: 1 25678UPDATE t1 SET f_int1 = f_int1 + @max_row 25679WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 25680AND @max_row_div2 + @max_row_div4; 25681 25682# check multiple-4 success: 1 25683DELETE FROM t1 25684WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 25685AND @max_row_div2 + @max_row_div4 + @max_row; 25686 25687# check multiple-5 success: 1 25688SELECT COUNT(*) INTO @try_count FROM t0_template 25689WHERE MOD(f_int1,3) = 0 25690AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25691SELECT COUNT(*) INTO @clash_count 25692FROM t1 INNER JOIN t0_template USING(f_int1) 25693WHERE MOD(f_int1,3) = 0 25694AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25695SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 25696INSERT INTO t1 25697SET f_int1 = @cur_value , f_int2 = @cur_value, 25698f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25699f_charbig = '#SINGLE#'; 25700 25701# check single-1 success: 1 25702SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 25703INSERT INTO t1 25704SET f_int1 = @cur_value , f_int2 = @cur_value, 25705f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 25706f_charbig = '#SINGLE#'; 25707 25708# check single-2 success: 1 25709SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 25710SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 25711UPDATE t1 SET f_int1 = @cur_value2 25712WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 25713 25714# check single-3 success: 1 25715SET @cur_value1= -1; 25716SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 25717UPDATE t1 SET f_int1 = @cur_value1 25718WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 25719 25720# check single-4 success: 1 25721SELECT MAX(f_int1) INTO @cur_value FROM t1; 25722DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 25723 25724# check single-5 success: 1 25725DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 25726 25727# check single-6 success: 1 25728INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 25729Warnings: 25730Warning 1264 Out of range value for column 'f_int1' at row 1 25731Warning 1264 Out of range value for column 'f_int2' at row 1 25732 25733# check single-7 success: 1 25734DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 25735DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 25736INSERT t1 SET f_int1 = 0 , f_int2 = 0, 25737f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 25738f_charbig = '#NULL#'; 25739INSERT INTO t1 25740SET f_int1 = NULL , f_int2 = -@max_row, 25741f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 25742f_charbig = '#NULL#'; 25743# check null success: 1 25744 25745# check null-1 success: 1 25746UPDATE t1 SET f_int1 = -@max_row 25747WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25748AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25749 25750# check null-2 success: 1 25751UPDATE t1 SET f_int1 = NULL 25752WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25753AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25754 25755# check null-3 success: 1 25756DELETE FROM t1 25757WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 25758AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 25759 25760# check null-4 success: 1 25761DELETE FROM t1 25762WHERE f_int1 = 0 AND f_int2 = 0 25763AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 25764AND f_charbig = '#NULL#'; 25765INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25766SELECT f_int1, f_int1, '', '', 'was inserted' 25767 FROM t0_template source_tab 25768WHERE MOD(f_int1,3) = 0 25769AND f_int1 BETWEEN @max_row_div2 AND @max_row 25770ON DUPLICATE KEY 25771UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 25772f_int2 = 2 * @max_row + source_tab.f_int1, 25773f_charbig = 'was updated'; 25774 25775# check unique-1-a success: 1 25776 25777# check unique-1-b success: 1 25778DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25779UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25780f_int2 = CAST(f_char1 AS SIGNED INT), 25781f_charbig = CONCAT('===',f_char1,'===') 25782WHERE f_charbig = 'was updated'; 25783REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25784SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 25785 FROM t0_template source_tab 25786WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 25787 25788# check replace success: 1 25789DELETE FROM t1 25790WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 25791DELETE FROM t1 25792WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 25793f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 25794UPDATE t1 SET f_int2 = f_int1, 25795f_char1 = CAST(f_int1 AS CHAR), 25796f_char2 = CAST(f_int1 AS CHAR), 25797f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 25798WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 25799SET AUTOCOMMIT= 0; 25800INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25801SELECT f_int1, f_int1, '', '', 'was inserted' 25802FROM t0_template source_tab 25803WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25804 25805# check transactions-1 success: 1 25806COMMIT WORK; 25807 25808# check transactions-2 success: 1 25809ROLLBACK WORK; 25810 25811# check transactions-3 success: 1 25812DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25813COMMIT WORK; 25814ROLLBACK WORK; 25815 25816# check transactions-4 success: 1 25817INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25818SELECT f_int1, f_int1, '', '', 'was inserted' 25819FROM t0_template source_tab 25820WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25821 25822# check transactions-5 success: 1 25823ROLLBACK WORK; 25824Warnings: 25825Warning 1196 Some non-transactional changed tables couldn't be rolled back 25826 25827# check transactions-6 success: 1 25828# INFO: Storage engine used for t1 seems to be not transactional. 25829COMMIT; 25830 25831# check transactions-7 success: 1 25832DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25833COMMIT WORK; 25834SET @@session.sql_mode = 'traditional'; 25835Warnings: 25836Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25837SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 25838INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 25839SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 25840'', '', 'was inserted' FROM t0_template 25841WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 25842ERROR 22012: Division by 0 25843COMMIT; 25844 25845# check transactions-8 success: 1 25846# INFO: Storage engine used for t1 seems to be unable to revert 25847# changes made by the failing statement. 25848SET @@session.sql_mode = ''; 25849Warnings: 25850Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 25851SET AUTOCOMMIT= 1; 25852DELETE FROM t1 WHERE f_charbig = 'was inserted'; 25853COMMIT WORK; 25854UPDATE t1 SET f_charbig = REPEAT('b', 1000); 25855 25856# check special-1 success: 1 25857UPDATE t1 SET f_charbig = ''; 25858 25859# check special-2 success: 1 25860UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 25861INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 25862SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 25863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25864INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25865SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25866'just inserted' FROM t0_template 25867WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25868CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 25869BEGIN 25870UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25871f_charbig = 'updated by trigger' 25872 WHERE f_int1 = new.f_int1; 25873END| 25874INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25875SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25876WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25877 25878# check trigger-1 success: 1 25879DROP TRIGGER trg_1; 25880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25881f_int2 = CAST(f_char1 AS SIGNED INT), 25882f_charbig = 'just inserted' 25883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25884DELETE FROM t0_aux 25885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25888'just inserted' FROM t0_template 25889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25890CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 25891BEGIN 25892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25893f_charbig = 'updated by trigger' 25894 WHERE f_int1 = new.f_int1; 25895END| 25896INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25897SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 25898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25899 25900# check trigger-2 success: 1 25901DROP TRIGGER trg_1; 25902UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25903f_int2 = CAST(f_char1 AS SIGNED INT), 25904f_charbig = 'just inserted' 25905 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25906DELETE FROM t0_aux 25907WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25908INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25909SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25910'just inserted' FROM t0_template 25911WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25912CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25913BEGIN 25914UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25915f_charbig = 'updated by trigger' 25916 WHERE f_int1 = new.f_int1; 25917END| 25918UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25919WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25920 25921# check trigger-3 success: 1 25922DROP TRIGGER trg_1; 25923UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25924f_int2 = CAST(f_char1 AS SIGNED INT), 25925f_charbig = 'just inserted' 25926 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25927DELETE FROM t0_aux 25928WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25929INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25930SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25931'just inserted' FROM t0_template 25932WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25933CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 25934BEGIN 25935UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25936f_charbig = 'updated by trigger' 25937 WHERE f_int1 = - old.f_int1; 25938END| 25939UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25940WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25941 25942# check trigger-4 success: 1 25943DROP TRIGGER trg_1; 25944UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25945f_int2 = CAST(f_char1 AS SIGNED INT), 25946f_charbig = 'just inserted' 25947 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25948DELETE FROM t0_aux 25949WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25950INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25951SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25952'just inserted' FROM t0_template 25953WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25954CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25955BEGIN 25956UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25957f_charbig = 'updated by trigger' 25958 WHERE f_int1 = new.f_int1; 25959END| 25960UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25961WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25962 25963# check trigger-5 success: 1 25964DROP TRIGGER trg_1; 25965UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25966f_int2 = CAST(f_char1 AS SIGNED INT), 25967f_charbig = 'just inserted' 25968 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25969DELETE FROM t0_aux 25970WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25971INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25972SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25973'just inserted' FROM t0_template 25974WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25975CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 25976BEGIN 25977UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25978f_charbig = 'updated by trigger' 25979 WHERE f_int1 = - old.f_int1; 25980END| 25981UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 25982WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 25983 25984# check trigger-6 success: 1 25985DROP TRIGGER trg_1; 25986UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 25987f_int2 = CAST(f_char1 AS SIGNED INT), 25988f_charbig = 'just inserted' 25989 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 25990DELETE FROM t0_aux 25991WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25992INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 25993SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 25994'just inserted' FROM t0_template 25995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 25996CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 25997BEGIN 25998UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 25999f_charbig = 'updated by trigger' 26000 WHERE f_int1 = - old.f_int1; 26001END| 26002DELETE FROM t0_aux 26003WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26004 26005# check trigger-7 success: 1 26006DROP TRIGGER trg_1; 26007UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26008f_int2 = CAST(f_char1 AS SIGNED INT), 26009f_charbig = 'just inserted' 26010 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26011DELETE FROM t0_aux 26012WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26013INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26014SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26015'just inserted' FROM t0_template 26016WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26017CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 26018BEGIN 26019UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26020f_charbig = 'updated by trigger' 26021 WHERE f_int1 = - old.f_int1; 26022END| 26023DELETE FROM t0_aux 26024WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26025 26026# check trigger-8 success: 1 26027DROP TRIGGER trg_1; 26028UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26029f_int2 = CAST(f_char1 AS SIGNED INT), 26030f_charbig = 'just inserted' 26031 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26032DELETE FROM t0_aux 26033WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26034DELETE FROM t1 26035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26036CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26037BEGIN 26038SET new.f_int1 = old.f_int1 + @max_row, 26039new.f_int2 = old.f_int2 - @max_row, 26040new.f_charbig = '####updated per update trigger####'; 26041END| 26042UPDATE t1 26043SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26044f_charbig = '####updated per update statement itself####'; 26045Warnings: 26046Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26047 26048# check trigger-9 success: 1 26049DROP TRIGGER trg_2; 26050UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26051f_int2 = CAST(f_char1 AS SIGNED INT), 26052f_charbig = CONCAT('===',f_char1,'==='); 26053Warnings: 26054Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26055CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26056BEGIN 26057SET new.f_int1 = new.f_int1 + @max_row, 26058new.f_int2 = new.f_int2 - @max_row, 26059new.f_charbig = '####updated per update trigger####'; 26060END| 26061UPDATE t1 26062SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26063f_charbig = '####updated per update statement itself####'; 26064Warnings: 26065Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26066 26067# check trigger-10 success: 1 26068DROP TRIGGER trg_2; 26069UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26070f_int2 = CAST(f_char1 AS SIGNED INT), 26071f_charbig = CONCAT('===',f_char1,'==='); 26072Warnings: 26073Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26074CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26075BEGIN 26076SET new.f_int1 = @my_max1 + @counter, 26077new.f_int2 = @my_min2 - @counter, 26078new.f_charbig = '####updated per insert trigger####'; 26079SET @counter = @counter + 1; 26080END| 26081SET @counter = 1; 26082SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26083Warnings: 26084Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26085INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26086SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26087CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26088WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26089ORDER BY f_int1; 26090DROP TRIGGER trg_3; 26091 26092# check trigger-11 success: 1 26093Warnings: 26094Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26095DELETE FROM t1 26096WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26097AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26098AND f_charbig = '####updated per insert trigger####'; 26099CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26100BEGIN 26101SET new.f_int1 = @my_max1 + @counter, 26102new.f_int2 = @my_min2 - @counter, 26103new.f_charbig = '####updated per insert trigger####'; 26104SET @counter = @counter + 1; 26105END| 26106SET @counter = 1; 26107SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26108Warnings: 26109Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26110INSERT INTO t1 (f_char1, f_char2, f_charbig) 26111SELECT CAST(f_int1 AS CHAR), 26112CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26114ORDER BY f_int1; 26115DROP TRIGGER trg_3; 26116 26117# check trigger-12 success: 1 26118Warnings: 26119Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26120DELETE FROM t1 26121WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26122AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26123AND f_charbig = '####updated per insert trigger####'; 26124ANALYZE TABLE t1; 26125Table Op Msg_type Msg_text 26126test.t1 analyze status OK 26127test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26128CHECK TABLE t1 EXTENDED; 26129Table Op Msg_type Msg_text 26130test.t1 check status OK 26131test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26132CHECKSUM TABLE t1 EXTENDED; 26133Table Checksum 26134test.t1 <some_value> 26135OPTIMIZE TABLE t1; 26136Table Op Msg_type Msg_text 26137test.t1 optimize status OK 26138test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26139# check layout success: 1 26140REPAIR TABLE t1 EXTENDED; 26141Table Op Msg_type Msg_text 26142test.t1 repair status OK 26143test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26144# check layout success: 1 26145TRUNCATE t1; 26146Warnings: 26147Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26148 26149# check TRUNCATE success: 1 26150# check layout success: 1 26151# End usability test (inc/partition_check.inc) 26152DROP TABLE t1; 26153CREATE TABLE t1 ( 26154f_int1 INTEGER, 26155f_int2 INTEGER, 26156f_char1 CHAR(20), 26157f_char2 CHAR(20), 26158f_charbig VARCHAR(1000) 26159, UNIQUE INDEX uidx (f_int2,f_int1) 26160) 26161PARTITION BY LIST(ABS(MOD(f_int1,2))) 26162SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 26163(PARTITION part1 VALUES IN (0), 26164PARTITION part2 VALUES IN (1), 26165PARTITION part3 VALUES IN (NULL)); 26166Warnings: 26167Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26168INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26169SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 26170WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 26171Warnings: 26172Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26173ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; 26174Warnings: 26175Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26176INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26177SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 26178WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 26179Warnings: 26180Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26181# Start usability test (inc/partition_check.inc) 26182create_command 26183SHOW CREATE TABLE t1; 26184Table Create Table 26185t1 CREATE TABLE `t1` ( 26186 `f_int1` mediumint(9) DEFAULT NULL, 26187 `f_int2` mediumint(9) DEFAULT NULL, 26188 `f_char1` char(20) DEFAULT NULL, 26189 `f_char2` char(20) DEFAULT NULL, 26190 `f_charbig` varchar(1000) DEFAULT NULL, 26191 UNIQUE KEY `uidx` (`f_int2`,`f_int1`) 26192) ENGINE=MyISAM DEFAULT CHARSET=latin1 26193/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 26194SUBPARTITION BY KEY (f_int2) 26195SUBPARTITIONS 3 26196(PARTITION part1 VALUES IN (0) ENGINE = MyISAM, 26197 PARTITION part2 VALUES IN (1) ENGINE = MyISAM, 26198 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */ 26199 26200unified filelist 26201t1#P#part1#SP#part1sp0.MYD 26202t1#P#part1#SP#part1sp0.MYI 26203t1#P#part1#SP#part1sp1.MYD 26204t1#P#part1#SP#part1sp1.MYI 26205t1#P#part1#SP#part1sp2.MYD 26206t1#P#part1#SP#part1sp2.MYI 26207t1#P#part2#SP#part2sp0.MYD 26208t1#P#part2#SP#part2sp0.MYI 26209t1#P#part2#SP#part2sp1.MYD 26210t1#P#part2#SP#part2sp1.MYI 26211t1#P#part2#SP#part2sp2.MYD 26212t1#P#part2#SP#part2sp2.MYI 26213t1#P#part3#SP#part3sp0.MYD 26214t1#P#part3#SP#part3sp0.MYI 26215t1#P#part3#SP#part3sp1.MYD 26216t1#P#part3#SP#part3sp1.MYI 26217t1#P#part3#SP#part3sp2.MYD 26218t1#P#part3#SP#part3sp2.MYI 26219t1.frm 26220t1.par 26221 26222# check prerequisites-1 success: 1 26223# check COUNT(*) success: 1 26224# check MIN/MAX(f_int1) success: 1 26225# check MIN/MAX(f_int2) success: 1 26226INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26227SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26228CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 26229WHERE f_int1 IN (2,3); 26230ERROR 23000: Duplicate entry '2-2' for key 'uidx' 26231# check prerequisites-3 success: 1 26232# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 26233INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26234SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26235CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26236WHERE f_int1 IN (2,3); 26237DELETE FROM t1 WHERE f_charbig = 'delete me'; 26238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26239SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 26240CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 26241WHERE f_int1 IN (2,3); 26242DELETE FROM t1 WHERE f_charbig = 'delete me'; 26243# check read via f_int1 success: 1 26244# check read via f_int2 success: 1 26245 26246# check multiple-1 success: 1 26247DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 26248 26249# check multiple-2 success: 1 26250INSERT INTO t1 SELECT * FROM t0_template 26251WHERE MOD(f_int1,3) = 0; 26252 26253# check multiple-3 success: 1 26254UPDATE t1 SET f_int1 = f_int1 + @max_row 26255WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 26256AND @max_row_div2 + @max_row_div4; 26257 26258# check multiple-4 success: 1 26259DELETE FROM t1 26260WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 26261AND @max_row_div2 + @max_row_div4 + @max_row; 26262 26263# check multiple-5 success: 1 26264SELECT COUNT(*) INTO @try_count FROM t0_template 26265WHERE MOD(f_int1,3) = 0 26266AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26267SELECT COUNT(*) INTO @clash_count 26268FROM t1 INNER JOIN t0_template USING(f_int1) 26269WHERE MOD(f_int1,3) = 0 26270AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26271SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 26272INSERT INTO t1 26273SET f_int1 = @cur_value , f_int2 = @cur_value, 26274f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26275f_charbig = '#SINGLE#'; 26276 26277# check single-1 success: 1 26278SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 26279INSERT INTO t1 26280SET f_int1 = @cur_value , f_int2 = @cur_value, 26281f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 26282f_charbig = '#SINGLE#'; 26283 26284# check single-2 success: 1 26285SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 26286SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 26287UPDATE t1 SET f_int1 = @cur_value2 26288WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 26289 26290# check single-3 success: 1 26291SET @cur_value1= -1; 26292SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 26293UPDATE t1 SET f_int1 = @cur_value1 26294WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 26295 26296# check single-4 success: 1 26297SELECT MAX(f_int1) INTO @cur_value FROM t1; 26298DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 26299 26300# check single-5 success: 1 26301DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 26302 26303# check single-6 success: 1 26304INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 26305Warnings: 26306Warning 1264 Out of range value for column 'f_int1' at row 1 26307Warning 1264 Out of range value for column 'f_int2' at row 1 26308 26309# check single-7 success: 1 26310DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 26311DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 26312INSERT t1 SET f_int1 = 0 , f_int2 = 0, 26313f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 26314f_charbig = '#NULL#'; 26315INSERT INTO t1 26316SET f_int1 = NULL , f_int2 = -@max_row, 26317f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 26318f_charbig = '#NULL#'; 26319# check null success: 1 26320 26321# check null-1 success: 1 26322UPDATE t1 SET f_int1 = -@max_row 26323WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 26324AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 26325 26326# check null-2 success: 1 26327UPDATE t1 SET f_int1 = NULL 26328WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 26329AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 26330 26331# check null-3 success: 1 26332DELETE FROM t1 26333WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 26334AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 26335 26336# check null-4 success: 1 26337DELETE FROM t1 26338WHERE f_int1 = 0 AND f_int2 = 0 26339AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 26340AND f_charbig = '#NULL#'; 26341INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26342SELECT f_int1, f_int1, '', '', 'was inserted' 26343 FROM t0_template source_tab 26344WHERE MOD(f_int1,3) = 0 26345AND f_int1 BETWEEN @max_row_div2 AND @max_row 26346ON DUPLICATE KEY 26347UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 26348f_int2 = 2 * @max_row + source_tab.f_int1, 26349f_charbig = 'was updated'; 26350 26351# check unique-1-a success: 1 26352 26353# check unique-1-b success: 1 26354DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26355UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26356f_int2 = CAST(f_char1 AS SIGNED INT), 26357f_charbig = CONCAT('===',f_char1,'===') 26358WHERE f_charbig = 'was updated'; 26359REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26360SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 26361 FROM t0_template source_tab 26362WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 26363 26364# check replace success: 1 26365DELETE FROM t1 26366WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 26367DELETE FROM t1 26368WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 26369f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 26370UPDATE t1 SET f_int2 = f_int1, 26371f_char1 = CAST(f_int1 AS CHAR), 26372f_char2 = CAST(f_int1 AS CHAR), 26373f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 26374WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 26375SET AUTOCOMMIT= 0; 26376INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26377SELECT f_int1, f_int1, '', '', 'was inserted' 26378FROM t0_template source_tab 26379WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26380 26381# check transactions-1 success: 1 26382COMMIT WORK; 26383 26384# check transactions-2 success: 1 26385ROLLBACK WORK; 26386 26387# check transactions-3 success: 1 26388DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26389COMMIT WORK; 26390ROLLBACK WORK; 26391 26392# check transactions-4 success: 1 26393INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26394SELECT f_int1, f_int1, '', '', 'was inserted' 26395FROM t0_template source_tab 26396WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26397 26398# check transactions-5 success: 1 26399ROLLBACK WORK; 26400Warnings: 26401Warning 1196 Some non-transactional changed tables couldn't be rolled back 26402 26403# check transactions-6 success: 1 26404# INFO: Storage engine used for t1 seems to be not transactional. 26405COMMIT; 26406 26407# check transactions-7 success: 1 26408DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26409COMMIT WORK; 26410SET @@session.sql_mode = 'traditional'; 26411Warnings: 26412Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26413SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 26414INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26415SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 26416'', '', 'was inserted' FROM t0_template 26417WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 26418ERROR 22012: Division by 0 26419COMMIT; 26420 26421# check transactions-8 success: 1 26422# INFO: Storage engine used for t1 seems to be unable to revert 26423# changes made by the failing statement. 26424SET @@session.sql_mode = ''; 26425Warnings: 26426Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 26427SET AUTOCOMMIT= 1; 26428DELETE FROM t1 WHERE f_charbig = 'was inserted'; 26429COMMIT WORK; 26430UPDATE t1 SET f_charbig = REPEAT('b', 1000); 26431 26432# check special-1 success: 1 26433UPDATE t1 SET f_charbig = ''; 26434 26435# check special-2 success: 1 26436UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 26437INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 26438SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 26439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26440INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26441SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26442'just inserted' FROM t0_template 26443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26444CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 26445BEGIN 26446UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26447f_charbig = 'updated by trigger' 26448 WHERE f_int1 = new.f_int1; 26449END| 26450INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26451SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 26452WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26453 26454# check trigger-1 success: 1 26455DROP TRIGGER trg_1; 26456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26457f_int2 = CAST(f_char1 AS SIGNED INT), 26458f_charbig = 'just inserted' 26459 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26460DELETE FROM t0_aux 26461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26464'just inserted' FROM t0_template 26465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26466CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 26467BEGIN 26468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26469f_charbig = 'updated by trigger' 26470 WHERE f_int1 = new.f_int1; 26471END| 26472INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26473SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 26474WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26475 26476# check trigger-2 success: 1 26477DROP TRIGGER trg_1; 26478UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26479f_int2 = CAST(f_char1 AS SIGNED INT), 26480f_charbig = 'just inserted' 26481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26482DELETE FROM t0_aux 26483WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26484INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26485SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26486'just inserted' FROM t0_template 26487WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26488CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 26489BEGIN 26490UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26491f_charbig = 'updated by trigger' 26492 WHERE f_int1 = new.f_int1; 26493END| 26494UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26495WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26496 26497# check trigger-3 success: 1 26498DROP TRIGGER trg_1; 26499UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26500f_int2 = CAST(f_char1 AS SIGNED INT), 26501f_charbig = 'just inserted' 26502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26503DELETE FROM t0_aux 26504WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26505INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26506SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26507'just inserted' FROM t0_template 26508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26509CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 26510BEGIN 26511UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26512f_charbig = 'updated by trigger' 26513 WHERE f_int1 = - old.f_int1; 26514END| 26515UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26516WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26517 26518# check trigger-4 success: 1 26519DROP TRIGGER trg_1; 26520UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26521f_int2 = CAST(f_char1 AS SIGNED INT), 26522f_charbig = 'just inserted' 26523 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26524DELETE FROM t0_aux 26525WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26526INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26527SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26528'just inserted' FROM t0_template 26529WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26530CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26531BEGIN 26532UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26533f_charbig = 'updated by trigger' 26534 WHERE f_int1 = new.f_int1; 26535END| 26536UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26537WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26538 26539# check trigger-5 success: 1 26540DROP TRIGGER trg_1; 26541UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26542f_int2 = CAST(f_char1 AS SIGNED INT), 26543f_charbig = 'just inserted' 26544 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26545DELETE FROM t0_aux 26546WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26548SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26549'just inserted' FROM t0_template 26550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26551CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 26552BEGIN 26553UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26554f_charbig = 'updated by trigger' 26555 WHERE f_int1 = - old.f_int1; 26556END| 26557UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 26558WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26559 26560# check trigger-6 success: 1 26561DROP TRIGGER trg_1; 26562UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26563f_int2 = CAST(f_char1 AS SIGNED INT), 26564f_charbig = 'just inserted' 26565 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26566DELETE FROM t0_aux 26567WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26568INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26569SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26570'just inserted' FROM t0_template 26571WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26572CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 26573BEGIN 26574UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26575f_charbig = 'updated by trigger' 26576 WHERE f_int1 = - old.f_int1; 26577END| 26578DELETE FROM t0_aux 26579WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26580 26581# check trigger-7 success: 1 26582DROP TRIGGER trg_1; 26583UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26584f_int2 = CAST(f_char1 AS SIGNED INT), 26585f_charbig = 'just inserted' 26586 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26587DELETE FROM t0_aux 26588WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26589INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 26590SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 26591'just inserted' FROM t0_template 26592WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26593CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 26594BEGIN 26595UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 26596f_charbig = 'updated by trigger' 26597 WHERE f_int1 = - old.f_int1; 26598END| 26599DELETE FROM t0_aux 26600WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 26601 26602# check trigger-8 success: 1 26603DROP TRIGGER trg_1; 26604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26605f_int2 = CAST(f_char1 AS SIGNED INT), 26606f_charbig = 'just inserted' 26607 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 26608DELETE FROM t0_aux 26609WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26610DELETE FROM t1 26611WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 26612CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26613BEGIN 26614SET new.f_int1 = old.f_int1 + @max_row, 26615new.f_int2 = old.f_int2 - @max_row, 26616new.f_charbig = '####updated per update trigger####'; 26617END| 26618UPDATE t1 26619SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26620f_charbig = '####updated per update statement itself####'; 26621Warnings: 26622Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26623 26624# check trigger-9 success: 1 26625DROP TRIGGER trg_2; 26626UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 26627f_int2 = CAST(f_char1 AS SIGNED INT), 26628f_charbig = CONCAT('===',f_char1,'==='); 26629Warnings: 26630Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26631CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 26632BEGIN 26633SET new.f_int1 = new.f_int1 + @max_row, 26634new.f_int2 = new.f_int2 - @max_row, 26635new.f_charbig = '####updated per update trigger####'; 26636END| 26637UPDATE t1 26638SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 26639f_charbig = '####updated per update statement itself####'; 26640Warnings: 26641Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 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,'==='); 26648Warnings: 26649Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26650CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26651BEGIN 26652SET new.f_int1 = @my_max1 + @counter, 26653new.f_int2 = @my_min2 - @counter, 26654new.f_charbig = '####updated per insert trigger####'; 26655SET @counter = @counter + 1; 26656END| 26657SET @counter = 1; 26658SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26659Warnings: 26660Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26661INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 26662SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 26663CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26664WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26665ORDER BY f_int1; 26666DROP TRIGGER trg_3; 26667 26668# check trigger-11 success: 1 26669Warnings: 26670Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26671DELETE FROM t1 26672WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26673AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26674AND f_charbig = '####updated per insert trigger####'; 26675CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 26676BEGIN 26677SET new.f_int1 = @my_max1 + @counter, 26678new.f_int2 = @my_min2 - @counter, 26679new.f_charbig = '####updated per insert trigger####'; 26680SET @counter = @counter + 1; 26681END| 26682SET @counter = 1; 26683SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 26684Warnings: 26685Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26686INSERT INTO t1 (f_char1, f_char2, f_charbig) 26687SELECT CAST(f_int1 AS CHAR), 26688CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 26689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 26690ORDER BY f_int1; 26691DROP TRIGGER trg_3; 26692 26693# check trigger-12 success: 1 26694Warnings: 26695Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26696DELETE FROM t1 26697WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 26698AND f_int2 <> CAST(f_char1 AS SIGNED INT) 26699AND f_charbig = '####updated per insert trigger####'; 26700ANALYZE TABLE t1; 26701Table Op Msg_type Msg_text 26702test.t1 analyze status OK 26703test.t1 analyze warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26704CHECK TABLE t1 EXTENDED; 26705Table Op Msg_type Msg_text 26706test.t1 check status OK 26707test.t1 check warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26708CHECKSUM TABLE t1 EXTENDED; 26709Table Checksum 26710test.t1 <some_value> 26711OPTIMIZE TABLE t1; 26712Table Op Msg_type Msg_text 26713test.t1 optimize status OK 26714test.t1 optimize warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26715# check layout success: 1 26716REPAIR TABLE t1 EXTENDED; 26717Table Op Msg_type Msg_text 26718test.t1 repair status OK 26719test.t1 repair warning The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26720# check layout success: 1 26721TRUNCATE t1; 26722Warnings: 26723Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 26724 26725# check TRUNCATE success: 1 26726# check layout success: 1 26727# End usability test (inc/partition_check.inc) 26728DROP TABLE t1; 26729DROP VIEW IF EXISTS v1; 26730DROP TABLE IF EXISTS t1; 26731DROP TABLE IF EXISTS t0_aux; 26732DROP TABLE IF EXISTS t0_definition; 26733DROP TABLE IF EXISTS t0_template; 26734