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# 0.5 use partition_basic with DATA/INDEX DIRECTORY 45#======================================================================== 46 47#======================================================================== 48# Check partitioning methods on just created tables 49# The tables should be defined without/with PRIMARY KEY and 50# UNIQUE INDEXes. 51# Every test round has to check 52# PARTITION BY HASH/KEY/LIST/RANGE 53# PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ... 54#======================================================================== 55#------------------------------------------------------------------------ 56# 1 Tables without PRIMARY KEY or UNIQUE INDEXes 57#------------------------------------------------------------------------ 58# 1.1 The partitioning function contains one column. 59DROP TABLE IF EXISTS t1; 60CREATE TABLE t1 ( 61f_int1 INTEGER, 62f_int2 INTEGER, 63f_char1 CHAR(20), 64f_char2 CHAR(20), 65f_charbig VARCHAR(1000) 66 67) 68PARTITION BY HASH(f_int1) PARTITIONS 2 69(PARTITION p1 70DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 71INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 72PARTITION p2 73DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 74INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 75Warnings: 76Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 77INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 78SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 79Warnings: 80Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 81# Start usability test (inc/partition_check.inc) 82create_command 83SHOW CREATE TABLE t1; 84Table Create Table 85t1 CREATE TABLE `t1` ( 86 `f_int1` int(11) DEFAULT NULL, 87 `f_int2` int(11) DEFAULT NULL, 88 `f_char1` char(20) DEFAULT NULL, 89 `f_char2` char(20) DEFAULT NULL, 90 `f_charbig` varchar(1000) DEFAULT NULL 91) ENGINE=MyISAM DEFAULT CHARSET=latin1 92/*!50100 PARTITION BY HASH (f_int1) 93(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 94 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 95 96unified filelist 97t1#P#p1.MYD 98t1#P#p1.MYI 99t1#P#p2.MYD 100t1#P#p2.MYI 101t1.frm 102t1.par 103t1#P#p1.MYD 104t1#P#p2.MYD 105t1#P#p1.MYI 106t1#P#p2.MYI 107 108# check prerequisites-1 success: 1 109# check COUNT(*) success: 1 110# check MIN/MAX(f_int1) success: 1 111# check MIN/MAX(f_int2) success: 1 112INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 113SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 114CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 115WHERE f_int1 IN (2,3); 116# check prerequisites-3 success: 1 117DELETE FROM t1 WHERE f_charbig = 'delete me'; 118# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 119# check read via f_int1 success: 1 120# check read via f_int2 success: 1 121 122# check multiple-1 success: 1 123DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 124 125# check multiple-2 success: 1 126INSERT INTO t1 SELECT * FROM t0_template 127WHERE MOD(f_int1,3) = 0; 128 129# check multiple-3 success: 1 130UPDATE t1 SET f_int1 = f_int1 + @max_row 131WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 132AND @max_row_div2 + @max_row_div4; 133 134# check multiple-4 success: 1 135DELETE FROM t1 136WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 137AND @max_row_div2 + @max_row_div4 + @max_row; 138 139# check multiple-5 success: 1 140SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 141INSERT INTO t1 142SET f_int1 = @cur_value , f_int2 = @cur_value, 143f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 144f_charbig = '#SINGLE#'; 145 146# check single-1 success: 1 147SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 148INSERT INTO t1 149SET f_int1 = @cur_value , f_int2 = @cur_value, 150f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 151f_charbig = '#SINGLE#'; 152 153# check single-2 success: 1 154SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 155SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 156UPDATE t1 SET f_int1 = @cur_value2 157WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 158 159# check single-3 success: 1 160SET @cur_value1= -1; 161SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 162UPDATE t1 SET f_int1 = @cur_value1 163WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 164 165# check single-4 success: 1 166SELECT MAX(f_int1) INTO @cur_value FROM t1; 167DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 168 169# check single-5 success: 1 170DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 171 172# check single-6 success: 1 173INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 174 175# check single-7 success: 1 176DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 177DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 178INSERT t1 SET f_int1 = 0 , f_int2 = 0, 179f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 180f_charbig = '#NULL#'; 181INSERT INTO t1 182SET f_int1 = NULL , f_int2 = -@max_row, 183f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 184f_charbig = '#NULL#'; 185# check null success: 1 186 187# check null-1 success: 1 188UPDATE t1 SET f_int1 = -@max_row 189WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 190AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 191 192# check null-2 success: 1 193UPDATE t1 SET f_int1 = NULL 194WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 195AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 196 197# check null-3 success: 1 198DELETE FROM t1 199WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 200AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 201 202# check null-4 success: 1 203DELETE FROM t1 204WHERE f_int1 = 0 AND f_int2 = 0 205AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 206AND f_charbig = '#NULL#'; 207SET AUTOCOMMIT= 0; 208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 209SELECT f_int1, f_int1, '', '', 'was inserted' 210FROM t0_template source_tab 211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 212 213# check transactions-1 success: 1 214COMMIT WORK; 215 216# check transactions-2 success: 1 217ROLLBACK WORK; 218 219# check transactions-3 success: 1 220DELETE FROM t1 WHERE f_charbig = 'was inserted'; 221COMMIT WORK; 222ROLLBACK WORK; 223 224# check transactions-4 success: 1 225INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 226SELECT f_int1, f_int1, '', '', 'was inserted' 227FROM t0_template source_tab 228WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 229 230# check transactions-5 success: 1 231ROLLBACK WORK; 232Warnings: 233Warning 1196 Some non-transactional changed tables couldn't be rolled back 234 235# check transactions-6 success: 1 236# INFO: Storage engine used for t1 seems to be not transactional. 237COMMIT; 238 239# check transactions-7 success: 1 240DELETE FROM t1 WHERE f_charbig = 'was inserted'; 241COMMIT WORK; 242SET @@session.sql_mode = 'traditional'; 243Warnings: 244Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 245SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 246INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 247SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 248'', '', 'was inserted' FROM t0_template 249WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 250ERROR 22012: Division by 0 251COMMIT; 252 253# check transactions-8 success: 1 254# INFO: Storage engine used for t1 seems to be unable to revert 255# changes made by the failing statement. 256SET @@session.sql_mode = ''; 257Warnings: 258Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 259SET AUTOCOMMIT= 1; 260DELETE FROM t1 WHERE f_charbig = 'was inserted'; 261COMMIT WORK; 262UPDATE t1 SET f_charbig = REPEAT('b', 1000); 263 264# check special-1 success: 1 265UPDATE t1 SET f_charbig = ''; 266 267# check special-2 success: 1 268UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 269INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 270SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 272INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 273SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 274'just inserted' FROM t0_template 275WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 276CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 277BEGIN 278UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 279f_charbig = 'updated by trigger' 280 WHERE f_int1 = new.f_int1; 281END| 282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 283SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 284WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 285 286# check trigger-1 success: 1 287DROP TRIGGER trg_1; 288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 289f_int2 = CAST(f_char1 AS SIGNED INT), 290f_charbig = 'just inserted' 291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 292DELETE FROM t0_aux 293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 294INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 295SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 296'just inserted' FROM t0_template 297WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 298CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 299BEGIN 300UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 301f_charbig = 'updated by trigger' 302 WHERE f_int1 = new.f_int1; 303END| 304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 305SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 307 308# check trigger-2 success: 1 309DROP TRIGGER trg_1; 310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 311f_int2 = CAST(f_char1 AS SIGNED INT), 312f_charbig = 'just inserted' 313 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 314DELETE FROM t0_aux 315WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 316INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 317SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 318'just inserted' FROM t0_template 319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 320CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 321BEGIN 322UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 323f_charbig = 'updated by trigger' 324 WHERE f_int1 = new.f_int1; 325END| 326UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 327WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 328 329# check trigger-3 success: 1 330DROP TRIGGER trg_1; 331UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 332f_int2 = CAST(f_char1 AS SIGNED INT), 333f_charbig = 'just inserted' 334 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 335DELETE FROM t0_aux 336WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 339'just inserted' FROM t0_template 340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 341CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 342BEGIN 343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 344f_charbig = 'updated by trigger' 345 WHERE f_int1 = - old.f_int1; 346END| 347UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 348WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 349 350# check trigger-4 success: 1 351DROP TRIGGER trg_1; 352UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 353f_int2 = CAST(f_char1 AS SIGNED INT), 354f_charbig = 'just inserted' 355 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 356DELETE FROM t0_aux 357WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 358INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 359SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 360'just inserted' FROM t0_template 361WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 362CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 363BEGIN 364UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 365f_charbig = 'updated by trigger' 366 WHERE f_int1 = new.f_int1; 367END| 368UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 369WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 370 371# check trigger-5 success: 1 372DROP TRIGGER trg_1; 373UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 374f_int2 = CAST(f_char1 AS SIGNED INT), 375f_charbig = 'just inserted' 376 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 377DELETE FROM t0_aux 378WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 379INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 380SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 381'just inserted' FROM t0_template 382WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 383CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 384BEGIN 385UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 386f_charbig = 'updated by trigger' 387 WHERE f_int1 = - old.f_int1; 388END| 389UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 390WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 391 392# check trigger-6 success: 1 393DROP TRIGGER trg_1; 394UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 395f_int2 = CAST(f_char1 AS SIGNED INT), 396f_charbig = 'just inserted' 397 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 398DELETE FROM t0_aux 399WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 400INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 401SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 402'just inserted' FROM t0_template 403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 404CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 405BEGIN 406UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 407f_charbig = 'updated by trigger' 408 WHERE f_int1 = - old.f_int1; 409END| 410DELETE FROM t0_aux 411WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 412 413# check trigger-7 success: 1 414DROP TRIGGER trg_1; 415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 416f_int2 = CAST(f_char1 AS SIGNED INT), 417f_charbig = 'just inserted' 418 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 419DELETE FROM t0_aux 420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 423'just inserted' FROM t0_template 424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 425CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 426BEGIN 427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 428f_charbig = 'updated by trigger' 429 WHERE f_int1 = - old.f_int1; 430END| 431DELETE FROM t0_aux 432WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 433 434# check trigger-8 success: 1 435DROP TRIGGER trg_1; 436UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 437f_int2 = CAST(f_char1 AS SIGNED INT), 438f_charbig = 'just inserted' 439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 440DELETE FROM t0_aux 441WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 442DELETE FROM t1 443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 444CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 445BEGIN 446SET new.f_int1 = old.f_int1 + @max_row, 447new.f_int2 = old.f_int2 - @max_row, 448new.f_charbig = '####updated per update trigger####'; 449END| 450UPDATE t1 451SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 452f_charbig = '####updated per update statement itself####'; 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. 455 456# check trigger-9 success: 1 457DROP TRIGGER trg_2; 458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 459f_int2 = CAST(f_char1 AS SIGNED INT), 460f_charbig = CONCAT('===',f_char1,'==='); 461Warnings: 462Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 463CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 464BEGIN 465SET new.f_int1 = new.f_int1 + @max_row, 466new.f_int2 = new.f_int2 - @max_row, 467new.f_charbig = '####updated per update trigger####'; 468END| 469UPDATE t1 470SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 471f_charbig = '####updated per update statement itself####'; 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. 474 475# check trigger-10 success: 1 476DROP TRIGGER trg_2; 477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 478f_int2 = CAST(f_char1 AS SIGNED INT), 479f_charbig = CONCAT('===',f_char1,'==='); 480Warnings: 481Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 482CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 483BEGIN 484SET new.f_int1 = @my_max1 + @counter, 485new.f_int2 = @my_min2 - @counter, 486new.f_charbig = '####updated per insert trigger####'; 487SET @counter = @counter + 1; 488END| 489SET @counter = 1; 490SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 491Warnings: 492Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 493INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 494SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 495CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 496WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 497ORDER BY f_int1; 498DROP TRIGGER trg_3; 499 500# check trigger-11 success: 1 501Warnings: 502Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 503DELETE FROM t1 504WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 505AND f_int2 <> CAST(f_char1 AS SIGNED INT) 506AND f_charbig = '####updated per insert trigger####'; 507CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 508BEGIN 509SET new.f_int1 = @my_max1 + @counter, 510new.f_int2 = @my_min2 - @counter, 511new.f_charbig = '####updated per insert trigger####'; 512SET @counter = @counter + 1; 513END| 514SET @counter = 1; 515SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 516Warnings: 517Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 518INSERT INTO t1 (f_char1, f_char2, f_charbig) 519SELECT CAST(f_int1 AS CHAR), 520CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 522ORDER BY f_int1; 523DROP TRIGGER trg_3; 524 525# check trigger-12 success: 1 526Warnings: 527Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 528DELETE FROM t1 529WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 530AND f_int2 <> CAST(f_char1 AS SIGNED INT) 531AND f_charbig = '####updated per insert trigger####'; 532ANALYZE TABLE t1; 533Table Op Msg_type Msg_text 534test.t1 analyze status OK 535test.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. 536CHECK TABLE t1 EXTENDED; 537Table Op Msg_type Msg_text 538test.t1 check status OK 539test.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. 540CHECKSUM TABLE t1 EXTENDED; 541Table Checksum 542test.t1 <some_value> 543OPTIMIZE TABLE t1; 544Table Op Msg_type Msg_text 545test.t1 optimize status OK 546test.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. 547# check layout success: 1 548REPAIR TABLE t1 EXTENDED; 549Table Op Msg_type Msg_text 550test.t1 repair status OK 551test.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. 552# check layout success: 1 553TRUNCATE t1; 554Warnings: 555Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 556 557# check TRUNCATE success: 1 558# check layout success: 1 559# End usability test (inc/partition_check.inc) 560DROP TABLE t1; 561CREATE TABLE t1 ( 562f_int1 INTEGER, 563f_int2 INTEGER, 564f_char1 CHAR(20), 565f_char2 CHAR(20), 566f_charbig VARCHAR(1000) 567 568) 569PARTITION BY KEY(f_int1) PARTITIONS 5 570(PARTITION p1 571DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 572INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 573PARTITION p2 574DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 575INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 576PARTITION p3 577DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 578INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 579PARTITION p4 580DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 581INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 582PARTITION p5 583DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 584INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 585Warnings: 586Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 587INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 588SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 589Warnings: 590Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 591# Start usability test (inc/partition_check.inc) 592create_command 593SHOW CREATE TABLE t1; 594Table Create Table 595t1 CREATE TABLE `t1` ( 596 `f_int1` int(11) DEFAULT NULL, 597 `f_int2` int(11) DEFAULT NULL, 598 `f_char1` char(20) DEFAULT NULL, 599 `f_char2` char(20) DEFAULT NULL, 600 `f_charbig` varchar(1000) DEFAULT NULL 601) ENGINE=MyISAM DEFAULT CHARSET=latin1 602/*!50100 PARTITION BY KEY (f_int1) 603(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 604 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 605 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 606 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 607 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 608 609unified filelist 610t1#P#p1.MYD 611t1#P#p1.MYI 612t1#P#p2.MYD 613t1#P#p2.MYI 614t1#P#p3.MYD 615t1#P#p3.MYI 616t1#P#p4.MYD 617t1#P#p4.MYI 618t1#P#p5.MYD 619t1#P#p5.MYI 620t1.frm 621t1.par 622t1#P#p1.MYD 623t1#P#p2.MYD 624t1#P#p3.MYD 625t1#P#p4.MYD 626t1#P#p5.MYD 627t1#P#p1.MYI 628t1#P#p2.MYI 629t1#P#p3.MYI 630t1#P#p4.MYI 631t1#P#p5.MYI 632 633# check prerequisites-1 success: 1 634# check COUNT(*) success: 1 635# check MIN/MAX(f_int1) success: 1 636# check MIN/MAX(f_int2) success: 1 637INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 638SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 639CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 640WHERE f_int1 IN (2,3); 641# check prerequisites-3 success: 1 642DELETE FROM t1 WHERE f_charbig = 'delete me'; 643# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 644# check read via f_int1 success: 1 645# check read via f_int2 success: 1 646 647# check multiple-1 success: 1 648DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 649 650# check multiple-2 success: 1 651INSERT INTO t1 SELECT * FROM t0_template 652WHERE MOD(f_int1,3) = 0; 653 654# check multiple-3 success: 1 655UPDATE t1 SET f_int1 = f_int1 + @max_row 656WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 657AND @max_row_div2 + @max_row_div4; 658 659# check multiple-4 success: 1 660DELETE FROM t1 661WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 662AND @max_row_div2 + @max_row_div4 + @max_row; 663 664# check multiple-5 success: 1 665SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 666INSERT INTO t1 667SET f_int1 = @cur_value , f_int2 = @cur_value, 668f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 669f_charbig = '#SINGLE#'; 670 671# check single-1 success: 1 672SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 673INSERT INTO t1 674SET f_int1 = @cur_value , f_int2 = @cur_value, 675f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 676f_charbig = '#SINGLE#'; 677 678# check single-2 success: 1 679SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 680SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 681UPDATE t1 SET f_int1 = @cur_value2 682WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 683 684# check single-3 success: 1 685SET @cur_value1= -1; 686SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 687UPDATE t1 SET f_int1 = @cur_value1 688WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 689 690# check single-4 success: 1 691SELECT MAX(f_int1) INTO @cur_value FROM t1; 692DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 693 694# check single-5 success: 1 695DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 696 697# check single-6 success: 1 698INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 699 700# check single-7 success: 1 701DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 702DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 703INSERT t1 SET f_int1 = 0 , f_int2 = 0, 704f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 705f_charbig = '#NULL#'; 706INSERT INTO t1 707SET f_int1 = NULL , f_int2 = -@max_row, 708f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 709f_charbig = '#NULL#'; 710# check null success: 1 711 712# check null-1 success: 1 713UPDATE t1 SET f_int1 = -@max_row 714WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 715AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 716 717# check null-2 success: 1 718UPDATE t1 SET f_int1 = NULL 719WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 720AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 721 722# check null-3 success: 1 723DELETE FROM t1 724WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 725AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 726 727# check null-4 success: 1 728DELETE FROM t1 729WHERE f_int1 = 0 AND f_int2 = 0 730AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 731AND f_charbig = '#NULL#'; 732SET AUTOCOMMIT= 0; 733INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 734SELECT f_int1, f_int1, '', '', 'was inserted' 735FROM t0_template source_tab 736WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 737 738# check transactions-1 success: 1 739COMMIT WORK; 740 741# check transactions-2 success: 1 742ROLLBACK WORK; 743 744# check transactions-3 success: 1 745DELETE FROM t1 WHERE f_charbig = 'was inserted'; 746COMMIT WORK; 747ROLLBACK WORK; 748 749# check transactions-4 success: 1 750INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 751SELECT f_int1, f_int1, '', '', 'was inserted' 752FROM t0_template source_tab 753WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 754 755# check transactions-5 success: 1 756ROLLBACK WORK; 757Warnings: 758Warning 1196 Some non-transactional changed tables couldn't be rolled back 759 760# check transactions-6 success: 1 761# INFO: Storage engine used for t1 seems to be not transactional. 762COMMIT; 763 764# check transactions-7 success: 1 765DELETE FROM t1 WHERE f_charbig = 'was inserted'; 766COMMIT WORK; 767SET @@session.sql_mode = 'traditional'; 768Warnings: 769Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 770SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 771INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 772SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 773'', '', 'was inserted' FROM t0_template 774WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 775ERROR 22012: Division by 0 776COMMIT; 777 778# check transactions-8 success: 1 779# INFO: Storage engine used for t1 seems to be unable to revert 780# changes made by the failing statement. 781SET @@session.sql_mode = ''; 782Warnings: 783Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 784SET AUTOCOMMIT= 1; 785DELETE FROM t1 WHERE f_charbig = 'was inserted'; 786COMMIT WORK; 787UPDATE t1 SET f_charbig = REPEAT('b', 1000); 788 789# check special-1 success: 1 790UPDATE t1 SET f_charbig = ''; 791 792# check special-2 success: 1 793UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 794INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 795SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 797INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 798SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 799'just inserted' FROM t0_template 800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 801CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 802BEGIN 803UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 804f_charbig = 'updated by trigger' 805 WHERE f_int1 = new.f_int1; 806END| 807INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 808SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 809WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 810 811# check trigger-1 success: 1 812DROP TRIGGER trg_1; 813UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 814f_int2 = CAST(f_char1 AS SIGNED INT), 815f_charbig = 'just inserted' 816 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 817DELETE FROM t0_aux 818WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 819INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 820SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 821'just inserted' FROM t0_template 822WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 823CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 824BEGIN 825UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 826f_charbig = 'updated by trigger' 827 WHERE f_int1 = new.f_int1; 828END| 829INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 830SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 832 833# check trigger-2 success: 1 834DROP TRIGGER trg_1; 835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 836f_int2 = CAST(f_char1 AS SIGNED INT), 837f_charbig = 'just inserted' 838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 839DELETE FROM t0_aux 840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 843'just inserted' FROM t0_template 844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 845CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 846BEGIN 847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 848f_charbig = 'updated by trigger' 849 WHERE f_int1 = new.f_int1; 850END| 851UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 853 854# check trigger-3 success: 1 855DROP TRIGGER trg_1; 856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 857f_int2 = CAST(f_char1 AS SIGNED INT), 858f_charbig = 'just inserted' 859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 860DELETE FROM t0_aux 861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 862INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 863SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 864'just inserted' FROM t0_template 865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 866CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 867BEGIN 868UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 869f_charbig = 'updated by trigger' 870 WHERE f_int1 = - old.f_int1; 871END| 872UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 873WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 874 875# check trigger-4 success: 1 876DROP TRIGGER trg_1; 877UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 878f_int2 = CAST(f_char1 AS SIGNED INT), 879f_charbig = 'just inserted' 880 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 881DELETE FROM t0_aux 882WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 883INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 884SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 885'just inserted' FROM t0_template 886WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 887CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 888BEGIN 889UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 890f_charbig = 'updated by trigger' 891 WHERE f_int1 = new.f_int1; 892END| 893UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 894WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 895 896# check trigger-5 success: 1 897DROP TRIGGER trg_1; 898UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 899f_int2 = CAST(f_char1 AS SIGNED INT), 900f_charbig = 'just inserted' 901 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 902DELETE FROM t0_aux 903WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 904INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 905SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 906'just inserted' FROM t0_template 907WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 908CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 909BEGIN 910UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 911f_charbig = 'updated by trigger' 912 WHERE f_int1 = - old.f_int1; 913END| 914UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 915WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 916 917# check trigger-6 success: 1 918DROP TRIGGER trg_1; 919UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 920f_int2 = CAST(f_char1 AS SIGNED INT), 921f_charbig = 'just inserted' 922 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 923DELETE FROM t0_aux 924WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 925INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 926SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 927'just inserted' FROM t0_template 928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 929CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 930BEGIN 931UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 932f_charbig = 'updated by trigger' 933 WHERE f_int1 = - old.f_int1; 934END| 935DELETE FROM t0_aux 936WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 937 938# check trigger-7 success: 1 939DROP TRIGGER trg_1; 940UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 941f_int2 = CAST(f_char1 AS SIGNED INT), 942f_charbig = 'just inserted' 943 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 944DELETE FROM t0_aux 945WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 946INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 947SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 948'just inserted' FROM t0_template 949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 950CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 951BEGIN 952UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 953f_charbig = 'updated by trigger' 954 WHERE f_int1 = - old.f_int1; 955END| 956DELETE FROM t0_aux 957WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 958 959# check trigger-8 success: 1 960DROP TRIGGER trg_1; 961UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 962f_int2 = CAST(f_char1 AS SIGNED INT), 963f_charbig = 'just inserted' 964 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 965DELETE FROM t0_aux 966WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 967DELETE FROM t1 968WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 969CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 970BEGIN 971SET new.f_int1 = old.f_int1 + @max_row, 972new.f_int2 = old.f_int2 - @max_row, 973new.f_charbig = '####updated per update trigger####'; 974END| 975UPDATE t1 976SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 977f_charbig = '####updated per update statement itself####'; 978Warnings: 979Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 980 981# check trigger-9 success: 1 982DROP TRIGGER trg_2; 983UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 984f_int2 = CAST(f_char1 AS SIGNED INT), 985f_charbig = CONCAT('===',f_char1,'==='); 986Warnings: 987Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 988CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 989BEGIN 990SET new.f_int1 = new.f_int1 + @max_row, 991new.f_int2 = new.f_int2 - @max_row, 992new.f_charbig = '####updated per update trigger####'; 993END| 994UPDATE t1 995SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 996f_charbig = '####updated per update statement itself####'; 997Warnings: 998Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 999 1000# check trigger-10 success: 1 1001DROP TRIGGER trg_2; 1002UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1003f_int2 = CAST(f_char1 AS SIGNED INT), 1004f_charbig = CONCAT('===',f_char1,'==='); 1005Warnings: 1006Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1007CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1008BEGIN 1009SET new.f_int1 = @my_max1 + @counter, 1010new.f_int2 = @my_min2 - @counter, 1011new.f_charbig = '####updated per insert trigger####'; 1012SET @counter = @counter + 1; 1013END| 1014SET @counter = 1; 1015SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1016Warnings: 1017Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1019SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1020CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1022ORDER BY f_int1; 1023DROP TRIGGER trg_3; 1024 1025# check trigger-11 success: 1 1026Warnings: 1027Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1028DELETE FROM t1 1029WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1030AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1031AND f_charbig = '####updated per insert trigger####'; 1032CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1033BEGIN 1034SET new.f_int1 = @my_max1 + @counter, 1035new.f_int2 = @my_min2 - @counter, 1036new.f_charbig = '####updated per insert trigger####'; 1037SET @counter = @counter + 1; 1038END| 1039SET @counter = 1; 1040SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1041Warnings: 1042Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1043INSERT INTO t1 (f_char1, f_char2, f_charbig) 1044SELECT CAST(f_int1 AS CHAR), 1045CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1047ORDER BY f_int1; 1048DROP TRIGGER trg_3; 1049 1050# check trigger-12 success: 1 1051Warnings: 1052Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1053DELETE FROM t1 1054WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1055AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1056AND f_charbig = '####updated per insert trigger####'; 1057ANALYZE TABLE t1; 1058Table Op Msg_type Msg_text 1059test.t1 analyze status OK 1060test.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. 1061CHECK TABLE t1 EXTENDED; 1062Table Op Msg_type Msg_text 1063test.t1 check status OK 1064test.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. 1065CHECKSUM TABLE t1 EXTENDED; 1066Table Checksum 1067test.t1 <some_value> 1068OPTIMIZE TABLE t1; 1069Table Op Msg_type Msg_text 1070test.t1 optimize status OK 1071test.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. 1072# check layout success: 1 1073REPAIR TABLE t1 EXTENDED; 1074Table Op Msg_type Msg_text 1075test.t1 repair status OK 1076test.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. 1077# check layout success: 1 1078TRUNCATE t1; 1079Warnings: 1080Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1081 1082# check TRUNCATE success: 1 1083# check layout success: 1 1084# End usability test (inc/partition_check.inc) 1085DROP TABLE t1; 1086CREATE TABLE t1 ( 1087f_int1 INTEGER, 1088f_int2 INTEGER, 1089f_char1 CHAR(20), 1090f_char2 CHAR(20), 1091f_charbig VARCHAR(1000) 1092 1093) 1094PARTITION BY LIST(MOD(f_int1,4)) 1095(PARTITION part_3 VALUES IN (-3) 1096DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1097PARTITION part_2 VALUES IN (-2) 1098DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1099PARTITION part_1 VALUES IN (-1) 1100DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1101PARTITION part_N VALUES IN (NULL) 1102DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1103PARTITION part0 VALUES IN (0) 1104DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1105PARTITION part1 VALUES IN (1) 1106DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1107PARTITION part2 VALUES IN (2) 1108DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1109PARTITION part3 VALUES IN (3) 1110DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 1111Warnings: 1112Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1113INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1114SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 1115Warnings: 1116Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1117# Start usability test (inc/partition_check.inc) 1118create_command 1119SHOW CREATE TABLE t1; 1120Table Create Table 1121t1 CREATE TABLE `t1` ( 1122 `f_int1` int(11) DEFAULT NULL, 1123 `f_int2` int(11) DEFAULT NULL, 1124 `f_char1` char(20) DEFAULT NULL, 1125 `f_char2` char(20) DEFAULT NULL, 1126 `f_charbig` varchar(1000) DEFAULT NULL 1127) ENGINE=MyISAM DEFAULT CHARSET=latin1 1128/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 1129(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1130 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1131 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1132 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1133 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1134 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1135 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1136 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 1137 1138unified filelist 1139t1#P#part0.MYD 1140t1#P#part0.MYI 1141t1#P#part1.MYD 1142t1#P#part1.MYI 1143t1#P#part2.MYD 1144t1#P#part2.MYI 1145t1#P#part3.MYD 1146t1#P#part3.MYI 1147t1#P#part_1.MYD 1148t1#P#part_1.MYI 1149t1#P#part_2.MYD 1150t1#P#part_2.MYI 1151t1#P#part_3.MYD 1152t1#P#part_3.MYI 1153t1#P#part_N.MYD 1154t1#P#part_N.MYI 1155t1.frm 1156t1.par 1157t1#P#part0.MYD 1158t1#P#part1.MYD 1159t1#P#part2.MYD 1160t1#P#part3.MYD 1161t1#P#part_1.MYD 1162t1#P#part_2.MYD 1163t1#P#part_3.MYD 1164t1#P#part_N.MYD 1165t1#P#part0.MYI 1166t1#P#part1.MYI 1167t1#P#part2.MYI 1168t1#P#part3.MYI 1169t1#P#part_1.MYI 1170t1#P#part_2.MYI 1171t1#P#part_3.MYI 1172t1#P#part_N.MYI 1173 1174# check prerequisites-1 success: 1 1175# check COUNT(*) success: 1 1176# check MIN/MAX(f_int1) success: 1 1177# check MIN/MAX(f_int2) success: 1 1178INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1179SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1180CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1181WHERE f_int1 IN (2,3); 1182# check prerequisites-3 success: 1 1183DELETE FROM t1 WHERE f_charbig = 'delete me'; 1184# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1185# check read via f_int1 success: 1 1186# check read via f_int2 success: 1 1187 1188# check multiple-1 success: 1 1189DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1190 1191# check multiple-2 success: 1 1192INSERT INTO t1 SELECT * FROM t0_template 1193WHERE MOD(f_int1,3) = 0; 1194 1195# check multiple-3 success: 1 1196UPDATE t1 SET f_int1 = f_int1 + @max_row 1197WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1198AND @max_row_div2 + @max_row_div4; 1199 1200# check multiple-4 success: 1 1201DELETE FROM t1 1202WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1203AND @max_row_div2 + @max_row_div4 + @max_row; 1204 1205# check multiple-5 success: 1 1206SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1207INSERT INTO t1 1208SET f_int1 = @cur_value , f_int2 = @cur_value, 1209f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1210f_charbig = '#SINGLE#'; 1211 1212# check single-1 success: 1 1213SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1214INSERT INTO t1 1215SET f_int1 = @cur_value , f_int2 = @cur_value, 1216f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1217f_charbig = '#SINGLE#'; 1218 1219# check single-2 success: 1 1220SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1221SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1222UPDATE t1 SET f_int1 = @cur_value2 1223WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1224 1225# check single-3 success: 1 1226SET @cur_value1= -1; 1227SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1228UPDATE t1 SET f_int1 = @cur_value1 1229WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1230 1231# check single-4 success: 1 1232SELECT MAX(f_int1) INTO @cur_value FROM t1; 1233DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1234 1235# check single-5 success: 1 1236DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1237 1238# check single-6 success: 1 1239INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1240 1241# check single-7 success: 1 1242DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 1243DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1244INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1245f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1246f_charbig = '#NULL#'; 1247INSERT INTO t1 1248SET f_int1 = NULL , f_int2 = -@max_row, 1249f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1250f_charbig = '#NULL#'; 1251# check null success: 1 1252 1253# check null-1 success: 1 1254UPDATE t1 SET f_int1 = -@max_row 1255WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1256AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1257 1258# check null-2 success: 1 1259UPDATE t1 SET f_int1 = NULL 1260WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1261AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1262 1263# check null-3 success: 1 1264DELETE FROM t1 1265WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1266AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1267 1268# check null-4 success: 1 1269DELETE FROM t1 1270WHERE f_int1 = 0 AND f_int2 = 0 1271AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1272AND f_charbig = '#NULL#'; 1273SET AUTOCOMMIT= 0; 1274INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1275SELECT f_int1, f_int1, '', '', 'was inserted' 1276FROM t0_template source_tab 1277WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1278 1279# check transactions-1 success: 1 1280COMMIT WORK; 1281 1282# check transactions-2 success: 1 1283ROLLBACK WORK; 1284 1285# check transactions-3 success: 1 1286DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1287COMMIT WORK; 1288ROLLBACK WORK; 1289 1290# check transactions-4 success: 1 1291INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1292SELECT f_int1, f_int1, '', '', 'was inserted' 1293FROM t0_template source_tab 1294WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1295 1296# check transactions-5 success: 1 1297ROLLBACK WORK; 1298Warnings: 1299Warning 1196 Some non-transactional changed tables couldn't be rolled back 1300 1301# check transactions-6 success: 1 1302# INFO: Storage engine used for t1 seems to be not transactional. 1303COMMIT; 1304 1305# check transactions-7 success: 1 1306DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1307COMMIT WORK; 1308SET @@session.sql_mode = 'traditional'; 1309Warnings: 1310Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1311SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1313SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1314'', '', 'was inserted' FROM t0_template 1315WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1316ERROR 22012: Division by 0 1317COMMIT; 1318 1319# check transactions-8 success: 1 1320# INFO: Storage engine used for t1 seems to be unable to revert 1321# changes made by the failing statement. 1322SET @@session.sql_mode = ''; 1323Warnings: 1324Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1325SET AUTOCOMMIT= 1; 1326DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1327COMMIT WORK; 1328UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1329 1330# check special-1 success: 1 1331UPDATE t1 SET f_charbig = ''; 1332 1333# check special-2 success: 1 1334UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1335INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1336SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1338INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1339SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1340'just inserted' FROM t0_template 1341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1342CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1343BEGIN 1344UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1345f_charbig = 'updated by trigger' 1346 WHERE f_int1 = new.f_int1; 1347END| 1348INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1349SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1350WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1351 1352# check trigger-1 success: 1 1353DROP TRIGGER trg_1; 1354UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1355f_int2 = CAST(f_char1 AS SIGNED INT), 1356f_charbig = 'just inserted' 1357 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1358DELETE FROM t0_aux 1359WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1360INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1361SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1362'just inserted' FROM t0_template 1363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1364CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1365BEGIN 1366UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1367f_charbig = 'updated by trigger' 1368 WHERE f_int1 = new.f_int1; 1369END| 1370INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1371SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1372WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1373 1374# check trigger-2 success: 1 1375DROP TRIGGER trg_1; 1376UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1377f_int2 = CAST(f_char1 AS SIGNED INT), 1378f_charbig = 'just inserted' 1379 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1380DELETE FROM t0_aux 1381WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1382INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1383SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1384'just inserted' FROM t0_template 1385WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1386CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1387BEGIN 1388UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1389f_charbig = 'updated by trigger' 1390 WHERE f_int1 = new.f_int1; 1391END| 1392UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1393WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1394 1395# check trigger-3 success: 1 1396DROP TRIGGER trg_1; 1397UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1398f_int2 = CAST(f_char1 AS SIGNED INT), 1399f_charbig = 'just inserted' 1400 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1401DELETE FROM t0_aux 1402WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1404SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1405'just inserted' FROM t0_template 1406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1407CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1408BEGIN 1409UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1410f_charbig = 'updated by trigger' 1411 WHERE f_int1 = - old.f_int1; 1412END| 1413UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1414WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1415 1416# check trigger-4 success: 1 1417DROP TRIGGER trg_1; 1418UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1419f_int2 = CAST(f_char1 AS SIGNED INT), 1420f_charbig = 'just inserted' 1421 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1422DELETE FROM t0_aux 1423WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1424INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1425SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1426'just inserted' FROM t0_template 1427WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1428CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1429BEGIN 1430UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1431f_charbig = 'updated by trigger' 1432 WHERE f_int1 = new.f_int1; 1433END| 1434UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1435WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1436 1437# check trigger-5 success: 1 1438DROP TRIGGER trg_1; 1439UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1440f_int2 = CAST(f_char1 AS SIGNED INT), 1441f_charbig = 'just inserted' 1442 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1443DELETE FROM t0_aux 1444WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1445INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1446SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1447'just inserted' FROM t0_template 1448WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1449CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1450BEGIN 1451UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1452f_charbig = 'updated by trigger' 1453 WHERE f_int1 = - old.f_int1; 1454END| 1455UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1456WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1457 1458# check trigger-6 success: 1 1459DROP TRIGGER trg_1; 1460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1461f_int2 = CAST(f_char1 AS SIGNED INT), 1462f_charbig = 'just inserted' 1463 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1464DELETE FROM t0_aux 1465WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1466INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1467SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1468'just inserted' FROM t0_template 1469WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1470CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1471BEGIN 1472UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1473f_charbig = 'updated by trigger' 1474 WHERE f_int1 = - old.f_int1; 1475END| 1476DELETE FROM t0_aux 1477WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1478 1479# check trigger-7 success: 1 1480DROP TRIGGER trg_1; 1481UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1482f_int2 = CAST(f_char1 AS SIGNED INT), 1483f_charbig = 'just inserted' 1484 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1485DELETE FROM t0_aux 1486WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1488SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1489'just inserted' FROM t0_template 1490WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1491CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1492BEGIN 1493UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1494f_charbig = 'updated by trigger' 1495 WHERE f_int1 = - old.f_int1; 1496END| 1497DELETE FROM t0_aux 1498WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1499 1500# check trigger-8 success: 1 1501DROP TRIGGER trg_1; 1502UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1503f_int2 = CAST(f_char1 AS SIGNED INT), 1504f_charbig = 'just inserted' 1505 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1506DELETE FROM t0_aux 1507WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1508DELETE FROM t1 1509WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1510CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1511BEGIN 1512SET new.f_int1 = old.f_int1 + @max_row, 1513new.f_int2 = old.f_int2 - @max_row, 1514new.f_charbig = '####updated per update trigger####'; 1515END| 1516UPDATE t1 1517SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1518f_charbig = '####updated per update statement itself####'; 1519Warnings: 1520Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1521 1522# check trigger-9 success: 1 1523DROP TRIGGER trg_2; 1524UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1525f_int2 = CAST(f_char1 AS SIGNED INT), 1526f_charbig = CONCAT('===',f_char1,'==='); 1527Warnings: 1528Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1529CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1530BEGIN 1531SET new.f_int1 = new.f_int1 + @max_row, 1532new.f_int2 = new.f_int2 - @max_row, 1533new.f_charbig = '####updated per update trigger####'; 1534END| 1535UPDATE t1 1536SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1537f_charbig = '####updated per update statement itself####'; 1538Warnings: 1539Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1540 1541# check trigger-10 success: 1 1542DROP TRIGGER trg_2; 1543UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1544f_int2 = CAST(f_char1 AS SIGNED INT), 1545f_charbig = CONCAT('===',f_char1,'==='); 1546Warnings: 1547Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1548CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1549BEGIN 1550SET new.f_int1 = @my_max1 + @counter, 1551new.f_int2 = @my_min2 - @counter, 1552new.f_charbig = '####updated per insert trigger####'; 1553SET @counter = @counter + 1; 1554END| 1555SET @counter = 1; 1556SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1557Warnings: 1558Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1559INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1560SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1561CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1563ORDER BY f_int1; 1564DROP TRIGGER trg_3; 1565 1566# check trigger-11 success: 1 1567Warnings: 1568Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1569DELETE FROM t1 1570WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1571AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1572AND f_charbig = '####updated per insert trigger####'; 1573CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1574BEGIN 1575SET new.f_int1 = @my_max1 + @counter, 1576new.f_int2 = @my_min2 - @counter, 1577new.f_charbig = '####updated per insert trigger####'; 1578SET @counter = @counter + 1; 1579END| 1580SET @counter = 1; 1581SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1582Warnings: 1583Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1584INSERT INTO t1 (f_char1, f_char2, f_charbig) 1585SELECT CAST(f_int1 AS CHAR), 1586CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1587WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1588ORDER BY f_int1; 1589DROP TRIGGER trg_3; 1590 1591# check trigger-12 success: 1 1592Warnings: 1593Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1594DELETE FROM t1 1595WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1596AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1597AND f_charbig = '####updated per insert trigger####'; 1598ANALYZE TABLE t1; 1599Table Op Msg_type Msg_text 1600test.t1 analyze status OK 1601test.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. 1602CHECK TABLE t1 EXTENDED; 1603Table Op Msg_type Msg_text 1604test.t1 check status OK 1605test.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. 1606CHECKSUM TABLE t1 EXTENDED; 1607Table Checksum 1608test.t1 <some_value> 1609OPTIMIZE TABLE t1; 1610Table Op Msg_type Msg_text 1611test.t1 optimize status OK 1612test.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. 1613# check layout success: 1 1614REPAIR TABLE t1 EXTENDED; 1615Table Op Msg_type Msg_text 1616test.t1 repair status OK 1617test.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. 1618# check layout success: 1 1619TRUNCATE t1; 1620Warnings: 1621Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1622 1623# check TRUNCATE success: 1 1624# check layout success: 1 1625# End usability test (inc/partition_check.inc) 1626DROP TABLE t1; 1627CREATE TABLE t1 ( 1628f_int1 INTEGER, 1629f_int2 INTEGER, 1630f_char1 CHAR(20), 1631f_char2 CHAR(20), 1632f_charbig VARCHAR(1000) 1633 1634) 1635PARTITION BY RANGE(f_int1) 1636(PARTITION parta VALUES LESS THAN (0) 1637DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1638INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1639PARTITION partb VALUES LESS THAN (5) 1640DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1641INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1642PARTITION partc VALUES LESS THAN (10) 1643DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1644INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1645PARTITION partd VALUES LESS THAN (10 + 5) 1646DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1647INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1648PARTITION parte VALUES LESS THAN (20) 1649DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1650INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 1651PARTITION partf VALUES LESS THAN (2147483646) 1652DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 1653INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 1654Warnings: 1655Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1656INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1657SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 1658Warnings: 1659Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 1660# Start usability test (inc/partition_check.inc) 1661create_command 1662SHOW CREATE TABLE t1; 1663Table Create Table 1664t1 CREATE TABLE `t1` ( 1665 `f_int1` int(11) DEFAULT NULL, 1666 `f_int2` int(11) DEFAULT NULL, 1667 `f_char1` char(20) DEFAULT NULL, 1668 `f_char2` char(20) DEFAULT NULL, 1669 `f_charbig` varchar(1000) DEFAULT NULL 1670) ENGINE=MyISAM DEFAULT CHARSET=latin1 1671/*!50100 PARTITION BY RANGE (f_int1) 1672(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1673 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1674 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1675 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1676 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 1677 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 1678 1679unified filelist 1680t1#P#parta.MYD 1681t1#P#parta.MYI 1682t1#P#partb.MYD 1683t1#P#partb.MYI 1684t1#P#partc.MYD 1685t1#P#partc.MYI 1686t1#P#partd.MYD 1687t1#P#partd.MYI 1688t1#P#parte.MYD 1689t1#P#parte.MYI 1690t1#P#partf.MYD 1691t1#P#partf.MYI 1692t1.frm 1693t1.par 1694t1#P#parta.MYD 1695t1#P#partb.MYD 1696t1#P#partc.MYD 1697t1#P#partd.MYD 1698t1#P#parte.MYD 1699t1#P#partf.MYD 1700t1#P#parta.MYI 1701t1#P#partb.MYI 1702t1#P#partc.MYI 1703t1#P#partd.MYI 1704t1#P#parte.MYI 1705t1#P#partf.MYI 1706 1707# check prerequisites-1 success: 1 1708# check COUNT(*) success: 1 1709# check MIN/MAX(f_int1) success: 1 1710# check MIN/MAX(f_int2) success: 1 1711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1712SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1713CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1714WHERE f_int1 IN (2,3); 1715# check prerequisites-3 success: 1 1716DELETE FROM t1 WHERE f_charbig = 'delete me'; 1717# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1718# check read via f_int1 success: 1 1719# check read via f_int2 success: 1 1720 1721# check multiple-1 success: 1 1722DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1723 1724# check multiple-2 success: 1 1725INSERT INTO t1 SELECT * FROM t0_template 1726WHERE MOD(f_int1,3) = 0; 1727 1728# check multiple-3 success: 1 1729UPDATE t1 SET f_int1 = f_int1 + @max_row 1730WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1731AND @max_row_div2 + @max_row_div4; 1732 1733# check multiple-4 success: 1 1734DELETE FROM t1 1735WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1736AND @max_row_div2 + @max_row_div4 + @max_row; 1737 1738# check multiple-5 success: 1 1739SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1740INSERT INTO t1 1741SET f_int1 = @cur_value , f_int2 = @cur_value, 1742f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1743f_charbig = '#SINGLE#'; 1744 1745# check single-1 success: 1 1746SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1747INSERT INTO t1 1748SET f_int1 = @cur_value , f_int2 = @cur_value, 1749f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1750f_charbig = '#SINGLE#'; 1751 1752# check single-2 success: 1 1753SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1754SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1755UPDATE t1 SET f_int1 = @cur_value2 1756WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1757 1758# check single-3 success: 1 1759SET @cur_value1= -1; 1760SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1761UPDATE t1 SET f_int1 = @cur_value1 1762WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1763 1764# check single-4 success: 1 1765SELECT MAX(f_int1) INTO @cur_value FROM t1; 1766DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1767 1768# check single-5 success: 1 1769DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1770 1771# check single-6 success: 1 1772INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1773ERROR HY000: Table has no partition for value 2147483647 1774DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1775INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1776f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1777f_charbig = '#NULL#'; 1778INSERT INTO t1 1779SET f_int1 = NULL , f_int2 = -@max_row, 1780f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1781f_charbig = '#NULL#'; 1782# check null success: 1 1783 1784# check null-1 success: 1 1785UPDATE t1 SET f_int1 = -@max_row 1786WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1787AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1788 1789# check null-2 success: 1 1790UPDATE t1 SET f_int1 = NULL 1791WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1792AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1793 1794# check null-3 success: 1 1795DELETE FROM t1 1796WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1797AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1798 1799# check null-4 success: 1 1800DELETE FROM t1 1801WHERE f_int1 = 0 AND f_int2 = 0 1802AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1803AND f_charbig = '#NULL#'; 1804SET AUTOCOMMIT= 0; 1805INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1806SELECT f_int1, f_int1, '', '', 'was inserted' 1807FROM t0_template source_tab 1808WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1809 1810# check transactions-1 success: 1 1811COMMIT WORK; 1812 1813# check transactions-2 success: 1 1814ROLLBACK WORK; 1815 1816# check transactions-3 success: 1 1817DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1818COMMIT WORK; 1819ROLLBACK WORK; 1820 1821# check transactions-4 success: 1 1822INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1823SELECT f_int1, f_int1, '', '', 'was inserted' 1824FROM t0_template source_tab 1825WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1826 1827# check transactions-5 success: 1 1828ROLLBACK WORK; 1829Warnings: 1830Warning 1196 Some non-transactional changed tables couldn't be rolled back 1831 1832# check transactions-6 success: 1 1833# INFO: Storage engine used for t1 seems to be not transactional. 1834COMMIT; 1835 1836# check transactions-7 success: 1 1837DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1838COMMIT WORK; 1839SET @@session.sql_mode = 'traditional'; 1840Warnings: 1841Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1842SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1843INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1844SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1845'', '', 'was inserted' FROM t0_template 1846WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1847ERROR 22012: Division by 0 1848COMMIT; 1849 1850# check transactions-8 success: 1 1851# INFO: Storage engine used for t1 seems to be unable to revert 1852# changes made by the failing statement. 1853SET @@session.sql_mode = ''; 1854Warnings: 1855Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1856SET AUTOCOMMIT= 1; 1857DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1858COMMIT WORK; 1859UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1860 1861# check special-1 success: 1 1862UPDATE t1 SET f_charbig = ''; 1863 1864# check special-2 success: 1 1865UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1866INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1867SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1869INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1870SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1871'just inserted' FROM t0_template 1872WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1873CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1874BEGIN 1875UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1876f_charbig = 'updated by trigger' 1877 WHERE f_int1 = new.f_int1; 1878END| 1879INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1880SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1881WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1882 1883# check trigger-1 success: 1 1884DROP TRIGGER trg_1; 1885UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1886f_int2 = CAST(f_char1 AS SIGNED INT), 1887f_charbig = 'just inserted' 1888 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1889DELETE FROM t0_aux 1890WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1891INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1892SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1893'just inserted' FROM t0_template 1894WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1895CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1896BEGIN 1897UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1898f_charbig = 'updated by trigger' 1899 WHERE f_int1 = new.f_int1; 1900END| 1901INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1902SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1903WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1904 1905# check trigger-2 success: 1 1906DROP TRIGGER trg_1; 1907UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1908f_int2 = CAST(f_char1 AS SIGNED INT), 1909f_charbig = 'just inserted' 1910 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1911DELETE FROM t0_aux 1912WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1913INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1914SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1915'just inserted' FROM t0_template 1916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1917CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1918BEGIN 1919UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1920f_charbig = 'updated by trigger' 1921 WHERE f_int1 = new.f_int1; 1922END| 1923UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1924WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1925 1926# check trigger-3 success: 1 1927DROP TRIGGER trg_1; 1928UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1929f_int2 = CAST(f_char1 AS SIGNED INT), 1930f_charbig = 'just inserted' 1931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1932DELETE FROM t0_aux 1933WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1935SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1936'just inserted' FROM t0_template 1937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1938CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1939BEGIN 1940UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1941f_charbig = 'updated by trigger' 1942 WHERE f_int1 = - old.f_int1; 1943END| 1944UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1945WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1946 1947# check trigger-4 success: 1 1948DROP TRIGGER trg_1; 1949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1950f_int2 = CAST(f_char1 AS SIGNED INT), 1951f_charbig = 'just inserted' 1952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1953DELETE FROM t0_aux 1954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1957'just inserted' FROM t0_template 1958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1959CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1960BEGIN 1961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1962f_charbig = 'updated by trigger' 1963 WHERE f_int1 = new.f_int1; 1964END| 1965UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1967 1968# check trigger-5 success: 1 1969DROP TRIGGER trg_1; 1970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1971f_int2 = CAST(f_char1 AS SIGNED INT), 1972f_charbig = 'just inserted' 1973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1974DELETE FROM t0_aux 1975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1978'just inserted' FROM t0_template 1979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1980CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1981BEGIN 1982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1983f_charbig = 'updated by trigger' 1984 WHERE f_int1 = - old.f_int1; 1985END| 1986UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1988 1989# check trigger-6 success: 1 1990DROP TRIGGER trg_1; 1991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1992f_int2 = CAST(f_char1 AS SIGNED INT), 1993f_charbig = 'just inserted' 1994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1995DELETE FROM t0_aux 1996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1999'just inserted' FROM t0_template 2000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2001CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2002BEGIN 2003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2004f_charbig = 'updated by trigger' 2005 WHERE f_int1 = - old.f_int1; 2006END| 2007DELETE FROM t0_aux 2008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2009 2010# check trigger-7 success: 1 2011DROP TRIGGER trg_1; 2012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2013f_int2 = CAST(f_char1 AS SIGNED INT), 2014f_charbig = 'just inserted' 2015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2016DELETE FROM t0_aux 2017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2018INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2019SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2020'just inserted' FROM t0_template 2021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2022CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2023BEGIN 2024UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2025f_charbig = 'updated by trigger' 2026 WHERE f_int1 = - old.f_int1; 2027END| 2028DELETE FROM t0_aux 2029WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2030 2031# check trigger-8 success: 1 2032DROP TRIGGER trg_1; 2033UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2034f_int2 = CAST(f_char1 AS SIGNED INT), 2035f_charbig = 'just inserted' 2036 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2037DELETE FROM t0_aux 2038WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2039DELETE FROM t1 2040WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2041CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2042BEGIN 2043SET new.f_int1 = old.f_int1 + @max_row, 2044new.f_int2 = old.f_int2 - @max_row, 2045new.f_charbig = '####updated per update trigger####'; 2046END| 2047UPDATE t1 2048SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2049f_charbig = '####updated per update statement itself####'; 2050Warnings: 2051Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2052 2053# check trigger-9 success: 1 2054DROP TRIGGER trg_2; 2055UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2056f_int2 = CAST(f_char1 AS SIGNED INT), 2057f_charbig = CONCAT('===',f_char1,'==='); 2058Warnings: 2059Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2060CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2061BEGIN 2062SET new.f_int1 = new.f_int1 + @max_row, 2063new.f_int2 = new.f_int2 - @max_row, 2064new.f_charbig = '####updated per update trigger####'; 2065END| 2066UPDATE t1 2067SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2068f_charbig = '####updated per update statement itself####'; 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. 2071 2072# check trigger-10 success: 1 2073DROP TRIGGER trg_2; 2074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2075f_int2 = CAST(f_char1 AS SIGNED INT), 2076f_charbig = CONCAT('===',f_char1,'==='); 2077Warnings: 2078Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2079CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2080BEGIN 2081SET new.f_int1 = @my_max1 + @counter, 2082new.f_int2 = @my_min2 - @counter, 2083new.f_charbig = '####updated per insert trigger####'; 2084SET @counter = @counter + 1; 2085END| 2086SET @counter = 1; 2087SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2088Warnings: 2089Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2090INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2091SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2092CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2094ORDER BY f_int1; 2095DROP TRIGGER trg_3; 2096 2097# check trigger-11 success: 1 2098Warnings: 2099Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2100DELETE FROM t1 2101WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2102AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2103AND f_charbig = '####updated per insert trigger####'; 2104CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2105BEGIN 2106SET new.f_int1 = @my_max1 + @counter, 2107new.f_int2 = @my_min2 - @counter, 2108new.f_charbig = '####updated per insert trigger####'; 2109SET @counter = @counter + 1; 2110END| 2111SET @counter = 1; 2112SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2113Warnings: 2114Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2115INSERT INTO t1 (f_char1, f_char2, f_charbig) 2116SELECT CAST(f_int1 AS CHAR), 2117CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2118WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2119ORDER BY f_int1; 2120DROP TRIGGER trg_3; 2121 2122# check trigger-12 success: 1 2123Warnings: 2124Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2125DELETE FROM t1 2126WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2127AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2128AND f_charbig = '####updated per insert trigger####'; 2129ANALYZE TABLE t1; 2130Table Op Msg_type Msg_text 2131test.t1 analyze status OK 2132test.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. 2133CHECK TABLE t1 EXTENDED; 2134Table Op Msg_type Msg_text 2135test.t1 check status OK 2136test.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. 2137CHECKSUM TABLE t1 EXTENDED; 2138Table Checksum 2139test.t1 <some_value> 2140OPTIMIZE TABLE t1; 2141Table Op Msg_type Msg_text 2142test.t1 optimize status OK 2143test.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. 2144# check layout success: 1 2145REPAIR TABLE t1 EXTENDED; 2146Table Op Msg_type Msg_text 2147test.t1 repair status OK 2148test.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. 2149# check layout success: 1 2150TRUNCATE t1; 2151Warnings: 2152Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2153 2154# check TRUNCATE success: 1 2155# check layout success: 1 2156# End usability test (inc/partition_check.inc) 2157DROP TABLE t1; 2158CREATE TABLE t1 ( 2159f_int1 INTEGER, 2160f_int2 INTEGER, 2161f_char1 CHAR(20), 2162f_char2 CHAR(20), 2163f_charbig VARCHAR(1000) 2164 2165) 2166PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 2167(PARTITION parta VALUES LESS THAN (0) 2168DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 2169INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2170PARTITION partb VALUES LESS THAN (5) 2171DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 2172INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2173PARTITION partc VALUES LESS THAN (10) 2174DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 2175INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2176PARTITION partd VALUES LESS THAN (2147483646) 2177DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 2178INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 2179Warnings: 2180Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2181INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2182SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 2183Warnings: 2184Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2185# Start usability test (inc/partition_check.inc) 2186create_command 2187SHOW CREATE TABLE t1; 2188Table Create Table 2189t1 CREATE TABLE `t1` ( 2190 `f_int1` int(11) DEFAULT NULL, 2191 `f_int2` int(11) DEFAULT NULL, 2192 `f_char1` char(20) DEFAULT NULL, 2193 `f_char2` char(20) DEFAULT NULL, 2194 `f_charbig` varchar(1000) DEFAULT NULL 2195) ENGINE=MyISAM DEFAULT CHARSET=latin1 2196/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 2197SUBPARTITION BY HASH (f_int1) 2198SUBPARTITIONS 2 2199(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2200 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2201 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2202 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 2203 2204unified filelist 2205t1#P#parta#SP#partasp0.MYD 2206t1#P#parta#SP#partasp0.MYI 2207t1#P#parta#SP#partasp1.MYD 2208t1#P#parta#SP#partasp1.MYI 2209t1#P#partb#SP#partbsp0.MYD 2210t1#P#partb#SP#partbsp0.MYI 2211t1#P#partb#SP#partbsp1.MYD 2212t1#P#partb#SP#partbsp1.MYI 2213t1#P#partc#SP#partcsp0.MYD 2214t1#P#partc#SP#partcsp0.MYI 2215t1#P#partc#SP#partcsp1.MYD 2216t1#P#partc#SP#partcsp1.MYI 2217t1#P#partd#SP#partdsp0.MYD 2218t1#P#partd#SP#partdsp0.MYI 2219t1#P#partd#SP#partdsp1.MYD 2220t1#P#partd#SP#partdsp1.MYI 2221t1.frm 2222t1.par 2223t1#P#parta#SP#partasp0.MYD 2224t1#P#parta#SP#partasp1.MYD 2225t1#P#partb#SP#partbsp0.MYD 2226t1#P#partb#SP#partbsp1.MYD 2227t1#P#partc#SP#partcsp0.MYD 2228t1#P#partc#SP#partcsp1.MYD 2229t1#P#partd#SP#partdsp0.MYD 2230t1#P#partd#SP#partdsp1.MYD 2231t1#P#parta#SP#partasp0.MYI 2232t1#P#parta#SP#partasp1.MYI 2233t1#P#partb#SP#partbsp0.MYI 2234t1#P#partb#SP#partbsp1.MYI 2235t1#P#partc#SP#partcsp0.MYI 2236t1#P#partc#SP#partcsp1.MYI 2237t1#P#partd#SP#partdsp0.MYI 2238t1#P#partd#SP#partdsp1.MYI 2239 2240# check prerequisites-1 success: 1 2241# check COUNT(*) success: 1 2242# check MIN/MAX(f_int1) success: 1 2243# check MIN/MAX(f_int2) success: 1 2244INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2245SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2246CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2247WHERE f_int1 IN (2,3); 2248# check prerequisites-3 success: 1 2249DELETE FROM t1 WHERE f_charbig = 'delete me'; 2250# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2251# check read via f_int1 success: 1 2252# check read via f_int2 success: 1 2253 2254# check multiple-1 success: 1 2255DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2256 2257# check multiple-2 success: 1 2258INSERT INTO t1 SELECT * FROM t0_template 2259WHERE MOD(f_int1,3) = 0; 2260 2261# check multiple-3 success: 1 2262UPDATE t1 SET f_int1 = f_int1 + @max_row 2263WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2264AND @max_row_div2 + @max_row_div4; 2265 2266# check multiple-4 success: 1 2267DELETE FROM t1 2268WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2269AND @max_row_div2 + @max_row_div4 + @max_row; 2270 2271# check multiple-5 success: 1 2272SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2273INSERT INTO t1 2274SET f_int1 = @cur_value , f_int2 = @cur_value, 2275f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2276f_charbig = '#SINGLE#'; 2277 2278# check single-1 success: 1 2279SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2280INSERT INTO t1 2281SET f_int1 = @cur_value , f_int2 = @cur_value, 2282f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2283f_charbig = '#SINGLE#'; 2284 2285# check single-2 success: 1 2286SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2287SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2288UPDATE t1 SET f_int1 = @cur_value2 2289WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2290 2291# check single-3 success: 1 2292SET @cur_value1= -1; 2293SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2294UPDATE t1 SET f_int1 = @cur_value1 2295WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2296 2297# check single-4 success: 1 2298SELECT MAX(f_int1) INTO @cur_value FROM t1; 2299DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2300 2301# check single-5 success: 1 2302DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2303 2304# check single-6 success: 1 2305INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2306 2307# check single-7 success: 1 2308DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 2309DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2310INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2311f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2312f_charbig = '#NULL#'; 2313INSERT INTO t1 2314SET f_int1 = NULL , f_int2 = -@max_row, 2315f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2316f_charbig = '#NULL#'; 2317# check null success: 1 2318 2319# check null-1 success: 1 2320UPDATE t1 SET f_int1 = -@max_row 2321WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2322AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2323 2324# check null-2 success: 1 2325UPDATE t1 SET f_int1 = NULL 2326WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2327AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2328 2329# check null-3 success: 1 2330DELETE FROM t1 2331WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2332AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2333 2334# check null-4 success: 1 2335DELETE FROM t1 2336WHERE f_int1 = 0 AND f_int2 = 0 2337AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2338AND f_charbig = '#NULL#'; 2339SET AUTOCOMMIT= 0; 2340INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2341SELECT f_int1, f_int1, '', '', 'was inserted' 2342FROM t0_template source_tab 2343WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2344 2345# check transactions-1 success: 1 2346COMMIT WORK; 2347 2348# check transactions-2 success: 1 2349ROLLBACK WORK; 2350 2351# check transactions-3 success: 1 2352DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2353COMMIT WORK; 2354ROLLBACK WORK; 2355 2356# check transactions-4 success: 1 2357INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2358SELECT f_int1, f_int1, '', '', 'was inserted' 2359FROM t0_template source_tab 2360WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2361 2362# check transactions-5 success: 1 2363ROLLBACK WORK; 2364Warnings: 2365Warning 1196 Some non-transactional changed tables couldn't be rolled back 2366 2367# check transactions-6 success: 1 2368# INFO: Storage engine used for t1 seems to be not transactional. 2369COMMIT; 2370 2371# check transactions-7 success: 1 2372DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2373COMMIT WORK; 2374SET @@session.sql_mode = 'traditional'; 2375Warnings: 2376Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2377SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2379SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2380'', '', 'was inserted' FROM t0_template 2381WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2382ERROR 22012: Division by 0 2383COMMIT; 2384 2385# check transactions-8 success: 1 2386# INFO: Storage engine used for t1 seems to be unable to revert 2387# changes made by the failing statement. 2388SET @@session.sql_mode = ''; 2389Warnings: 2390Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2391SET AUTOCOMMIT= 1; 2392DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2393COMMIT WORK; 2394UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2395 2396# check special-1 success: 1 2397UPDATE t1 SET f_charbig = ''; 2398 2399# check special-2 success: 1 2400UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2401INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2402SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2406'just inserted' FROM t0_template 2407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2408CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2409BEGIN 2410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2411f_charbig = 'updated by trigger' 2412 WHERE f_int1 = new.f_int1; 2413END| 2414INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2415SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2417 2418# check trigger-1 success: 1 2419DROP TRIGGER trg_1; 2420UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2421f_int2 = CAST(f_char1 AS SIGNED INT), 2422f_charbig = 'just inserted' 2423 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2424DELETE FROM t0_aux 2425WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2426INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2427SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2428'just inserted' FROM t0_template 2429WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2430CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2431BEGIN 2432UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2433f_charbig = 'updated by trigger' 2434 WHERE f_int1 = new.f_int1; 2435END| 2436INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2437SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2438WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2439 2440# check trigger-2 success: 1 2441DROP TRIGGER trg_1; 2442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2443f_int2 = CAST(f_char1 AS SIGNED INT), 2444f_charbig = 'just inserted' 2445 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2446DELETE FROM t0_aux 2447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2448INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2449SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2450'just inserted' FROM t0_template 2451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2452CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2453BEGIN 2454UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2455f_charbig = 'updated by trigger' 2456 WHERE f_int1 = new.f_int1; 2457END| 2458UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2459WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2460 2461# check trigger-3 success: 1 2462DROP TRIGGER trg_1; 2463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2464f_int2 = CAST(f_char1 AS SIGNED INT), 2465f_charbig = 'just inserted' 2466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2467DELETE FROM t0_aux 2468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2469INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2470SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2471'just inserted' FROM t0_template 2472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2473CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2474BEGIN 2475UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2476f_charbig = 'updated by trigger' 2477 WHERE f_int1 = - old.f_int1; 2478END| 2479UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2480WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2481 2482# check trigger-4 success: 1 2483DROP TRIGGER trg_1; 2484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2485f_int2 = CAST(f_char1 AS SIGNED INT), 2486f_charbig = 'just inserted' 2487 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2488DELETE FROM t0_aux 2489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2492'just inserted' FROM t0_template 2493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2494CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2495BEGIN 2496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2497f_charbig = 'updated by trigger' 2498 WHERE f_int1 = new.f_int1; 2499END| 2500UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2502 2503# check trigger-5 success: 1 2504DROP TRIGGER trg_1; 2505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2506f_int2 = CAST(f_char1 AS SIGNED INT), 2507f_charbig = 'just inserted' 2508 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2509DELETE FROM t0_aux 2510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2513'just inserted' FROM t0_template 2514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2515CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2516BEGIN 2517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2518f_charbig = 'updated by trigger' 2519 WHERE f_int1 = - old.f_int1; 2520END| 2521UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2523 2524# check trigger-6 success: 1 2525DROP TRIGGER trg_1; 2526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2527f_int2 = CAST(f_char1 AS SIGNED INT), 2528f_charbig = 'just inserted' 2529 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2530DELETE FROM t0_aux 2531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2534'just inserted' FROM t0_template 2535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2536CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2537BEGIN 2538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2539f_charbig = 'updated by trigger' 2540 WHERE f_int1 = - old.f_int1; 2541END| 2542DELETE FROM t0_aux 2543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2544 2545# check trigger-7 success: 1 2546DROP TRIGGER trg_1; 2547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2548f_int2 = CAST(f_char1 AS SIGNED INT), 2549f_charbig = 'just inserted' 2550 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2551DELETE FROM t0_aux 2552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2555'just inserted' FROM t0_template 2556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2557CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2558BEGIN 2559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2560f_charbig = 'updated by trigger' 2561 WHERE f_int1 = - old.f_int1; 2562END| 2563DELETE FROM t0_aux 2564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2565 2566# check trigger-8 success: 1 2567DROP TRIGGER trg_1; 2568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2569f_int2 = CAST(f_char1 AS SIGNED INT), 2570f_charbig = 'just inserted' 2571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2572DELETE FROM t0_aux 2573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2574DELETE FROM t1 2575WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2576CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2577BEGIN 2578SET new.f_int1 = old.f_int1 + @max_row, 2579new.f_int2 = old.f_int2 - @max_row, 2580new.f_charbig = '####updated per update trigger####'; 2581END| 2582UPDATE t1 2583SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2584f_charbig = '####updated per update statement itself####'; 2585Warnings: 2586Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2587 2588# check trigger-9 success: 1 2589DROP TRIGGER trg_2; 2590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2591f_int2 = CAST(f_char1 AS SIGNED INT), 2592f_charbig = CONCAT('===',f_char1,'==='); 2593Warnings: 2594Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2595CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2596BEGIN 2597SET new.f_int1 = new.f_int1 + @max_row, 2598new.f_int2 = new.f_int2 - @max_row, 2599new.f_charbig = '####updated per update trigger####'; 2600END| 2601UPDATE t1 2602SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2603f_charbig = '####updated per update statement itself####'; 2604Warnings: 2605Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2606 2607# check trigger-10 success: 1 2608DROP TRIGGER trg_2; 2609UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2610f_int2 = CAST(f_char1 AS SIGNED INT), 2611f_charbig = CONCAT('===',f_char1,'==='); 2612Warnings: 2613Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2614CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2615BEGIN 2616SET new.f_int1 = @my_max1 + @counter, 2617new.f_int2 = @my_min2 - @counter, 2618new.f_charbig = '####updated per insert trigger####'; 2619SET @counter = @counter + 1; 2620END| 2621SET @counter = 1; 2622SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2623Warnings: 2624Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2625INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2626SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2627CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2629ORDER BY f_int1; 2630DROP TRIGGER trg_3; 2631 2632# check trigger-11 success: 1 2633Warnings: 2634Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2635DELETE FROM t1 2636WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2637AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2638AND f_charbig = '####updated per insert trigger####'; 2639CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2640BEGIN 2641SET new.f_int1 = @my_max1 + @counter, 2642new.f_int2 = @my_min2 - @counter, 2643new.f_charbig = '####updated per insert trigger####'; 2644SET @counter = @counter + 1; 2645END| 2646SET @counter = 1; 2647SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 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. 2650INSERT INTO t1 (f_char1, f_char2, f_charbig) 2651SELECT CAST(f_int1 AS CHAR), 2652CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2654ORDER BY f_int1; 2655DROP TRIGGER trg_3; 2656 2657# check trigger-12 success: 1 2658Warnings: 2659Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2660DELETE FROM t1 2661WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2662AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2663AND f_charbig = '####updated per insert trigger####'; 2664ANALYZE TABLE t1; 2665Table Op Msg_type Msg_text 2666test.t1 analyze status OK 2667test.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. 2668CHECK TABLE t1 EXTENDED; 2669Table Op Msg_type Msg_text 2670test.t1 check status OK 2671test.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. 2672CHECKSUM TABLE t1 EXTENDED; 2673Table Checksum 2674test.t1 <some_value> 2675OPTIMIZE TABLE t1; 2676Table Op Msg_type Msg_text 2677test.t1 optimize status OK 2678test.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. 2679# check layout success: 1 2680REPAIR TABLE t1 EXTENDED; 2681Table Op Msg_type Msg_text 2682test.t1 repair status OK 2683test.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. 2684# check layout success: 1 2685TRUNCATE t1; 2686Warnings: 2687Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2688 2689# check TRUNCATE success: 1 2690# check layout success: 1 2691# End usability test (inc/partition_check.inc) 2692DROP TABLE t1; 2693CREATE TABLE t1 ( 2694f_int1 INTEGER, 2695f_int2 INTEGER, 2696f_char1 CHAR(20), 2697f_char2 CHAR(20), 2698f_charbig VARCHAR(1000) 2699 2700) 2701PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 2702(PARTITION part1 VALUES LESS THAN (0) 2703(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2704SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 2705PARTITION part2 VALUES LESS THAN (5) 2706(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2707SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 2708PARTITION part3 VALUES LESS THAN (10) 2709(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2710SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 2711PARTITION part4 VALUES LESS THAN (2147483646) 2712(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 2713SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 2714Warnings: 2715Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2716INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2717SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 2718Warnings: 2719Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 2720# Start usability test (inc/partition_check.inc) 2721create_command 2722SHOW CREATE TABLE t1; 2723Table Create Table 2724t1 CREATE TABLE `t1` ( 2725 `f_int1` int(11) DEFAULT NULL, 2726 `f_int2` int(11) DEFAULT NULL, 2727 `f_char1` char(20) DEFAULT NULL, 2728 `f_char2` char(20) DEFAULT NULL, 2729 `f_charbig` varchar(1000) DEFAULT NULL 2730) ENGINE=MyISAM DEFAULT CHARSET=latin1 2731/*!50100 PARTITION BY RANGE (f_int1) 2732SUBPARTITION BY KEY (f_int1) 2733(PARTITION part1 VALUES LESS THAN (0) 2734 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2735 SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 2736 PARTITION part2 VALUES LESS THAN (5) 2737 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2738 SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 2739 PARTITION part3 VALUES LESS THAN (10) 2740 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2741 SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 2742 PARTITION part4 VALUES LESS THAN (2147483646) 2743 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 2744 SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 2745 2746unified filelist 2747t1#P#part1#SP#subpart11.MYD 2748t1#P#part1#SP#subpart11.MYI 2749t1#P#part1#SP#subpart12.MYD 2750t1#P#part1#SP#subpart12.MYI 2751t1#P#part2#SP#subpart21.MYD 2752t1#P#part2#SP#subpart21.MYI 2753t1#P#part2#SP#subpart22.MYD 2754t1#P#part2#SP#subpart22.MYI 2755t1#P#part3#SP#subpart31.MYD 2756t1#P#part3#SP#subpart31.MYI 2757t1#P#part3#SP#subpart32.MYD 2758t1#P#part3#SP#subpart32.MYI 2759t1#P#part4#SP#subpart41.MYD 2760t1#P#part4#SP#subpart41.MYI 2761t1#P#part4#SP#subpart42.MYD 2762t1#P#part4#SP#subpart42.MYI 2763t1.frm 2764t1.par 2765t1#P#part1#SP#subpart11.MYD 2766t1#P#part1#SP#subpart12.MYD 2767t1#P#part2#SP#subpart21.MYD 2768t1#P#part2#SP#subpart22.MYD 2769t1#P#part3#SP#subpart31.MYD 2770t1#P#part3#SP#subpart32.MYD 2771t1#P#part4#SP#subpart41.MYD 2772t1#P#part4#SP#subpart42.MYD 2773t1#P#part1#SP#subpart11.MYI 2774t1#P#part1#SP#subpart12.MYI 2775t1#P#part2#SP#subpart21.MYI 2776t1#P#part2#SP#subpart22.MYI 2777t1#P#part3#SP#subpart31.MYI 2778t1#P#part3#SP#subpart32.MYI 2779t1#P#part4#SP#subpart41.MYI 2780t1#P#part4#SP#subpart42.MYI 2781 2782# check prerequisites-1 success: 1 2783# check COUNT(*) success: 1 2784# check MIN/MAX(f_int1) success: 1 2785# check MIN/MAX(f_int2) success: 1 2786INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2787SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2788CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2789WHERE f_int1 IN (2,3); 2790# check prerequisites-3 success: 1 2791DELETE FROM t1 WHERE f_charbig = 'delete me'; 2792# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2793# check read via f_int1 success: 1 2794# check read via f_int2 success: 1 2795 2796# check multiple-1 success: 1 2797DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2798 2799# check multiple-2 success: 1 2800INSERT INTO t1 SELECT * FROM t0_template 2801WHERE MOD(f_int1,3) = 0; 2802 2803# check multiple-3 success: 1 2804UPDATE t1 SET f_int1 = f_int1 + @max_row 2805WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2806AND @max_row_div2 + @max_row_div4; 2807 2808# check multiple-4 success: 1 2809DELETE FROM t1 2810WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2811AND @max_row_div2 + @max_row_div4 + @max_row; 2812 2813# check multiple-5 success: 1 2814SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2815INSERT INTO t1 2816SET f_int1 = @cur_value , f_int2 = @cur_value, 2817f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2818f_charbig = '#SINGLE#'; 2819 2820# check single-1 success: 1 2821SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2822INSERT INTO t1 2823SET f_int1 = @cur_value , f_int2 = @cur_value, 2824f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2825f_charbig = '#SINGLE#'; 2826 2827# check single-2 success: 1 2828SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2829SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2830UPDATE t1 SET f_int1 = @cur_value2 2831WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2832 2833# check single-3 success: 1 2834SET @cur_value1= -1; 2835SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2836UPDATE t1 SET f_int1 = @cur_value1 2837WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2838 2839# check single-4 success: 1 2840SELECT MAX(f_int1) INTO @cur_value FROM t1; 2841DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2842 2843# check single-5 success: 1 2844DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2845 2846# check single-6 success: 1 2847INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2848ERROR HY000: Table has no partition for value 2147483647 2849DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2850INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2851f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2852f_charbig = '#NULL#'; 2853INSERT INTO t1 2854SET f_int1 = NULL , f_int2 = -@max_row, 2855f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2856f_charbig = '#NULL#'; 2857# check null success: 1 2858 2859# check null-1 success: 1 2860UPDATE t1 SET f_int1 = -@max_row 2861WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2862AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2863 2864# check null-2 success: 1 2865UPDATE t1 SET f_int1 = NULL 2866WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2867AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2868 2869# check null-3 success: 1 2870DELETE FROM t1 2871WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2872AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2873 2874# check null-4 success: 1 2875DELETE FROM t1 2876WHERE f_int1 = 0 AND f_int2 = 0 2877AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2878AND f_charbig = '#NULL#'; 2879SET AUTOCOMMIT= 0; 2880INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2881SELECT f_int1, f_int1, '', '', 'was inserted' 2882FROM t0_template source_tab 2883WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2884 2885# check transactions-1 success: 1 2886COMMIT WORK; 2887 2888# check transactions-2 success: 1 2889ROLLBACK WORK; 2890 2891# check transactions-3 success: 1 2892DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2893COMMIT WORK; 2894ROLLBACK WORK; 2895 2896# check transactions-4 success: 1 2897INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2898SELECT f_int1, f_int1, '', '', 'was inserted' 2899FROM t0_template source_tab 2900WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2901 2902# check transactions-5 success: 1 2903ROLLBACK WORK; 2904Warnings: 2905Warning 1196 Some non-transactional changed tables couldn't be rolled back 2906 2907# check transactions-6 success: 1 2908# INFO: Storage engine used for t1 seems to be not transactional. 2909COMMIT; 2910 2911# check transactions-7 success: 1 2912DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2913COMMIT WORK; 2914SET @@session.sql_mode = 'traditional'; 2915Warnings: 2916Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2917SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2918INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2919SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2920'', '', 'was inserted' FROM t0_template 2921WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2922ERROR 22012: Division by 0 2923COMMIT; 2924 2925# check transactions-8 success: 1 2926# INFO: Storage engine used for t1 seems to be unable to revert 2927# changes made by the failing statement. 2928SET @@session.sql_mode = ''; 2929Warnings: 2930Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2931SET AUTOCOMMIT= 1; 2932DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2933COMMIT WORK; 2934UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2935 2936# check special-1 success: 1 2937UPDATE t1 SET f_charbig = ''; 2938 2939# check special-2 success: 1 2940UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2941INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2942SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2943WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2944INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2945SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2946'just inserted' FROM t0_template 2947WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2948CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2949BEGIN 2950UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2951f_charbig = 'updated by trigger' 2952 WHERE f_int1 = new.f_int1; 2953END| 2954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2955SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2956WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2957 2958# check trigger-1 success: 1 2959DROP TRIGGER trg_1; 2960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2961f_int2 = CAST(f_char1 AS SIGNED INT), 2962f_charbig = 'just inserted' 2963 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2964DELETE FROM t0_aux 2965WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2966INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2967SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2968'just inserted' FROM t0_template 2969WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2970CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2971BEGIN 2972UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2973f_charbig = 'updated by trigger' 2974 WHERE f_int1 = new.f_int1; 2975END| 2976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2977SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2978WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2979 2980# check trigger-2 success: 1 2981DROP TRIGGER trg_1; 2982UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2983f_int2 = CAST(f_char1 AS SIGNED INT), 2984f_charbig = 'just inserted' 2985 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2986DELETE FROM t0_aux 2987WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2988INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2989SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2990'just inserted' FROM t0_template 2991WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2992CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2993BEGIN 2994UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2995f_charbig = 'updated by trigger' 2996 WHERE f_int1 = new.f_int1; 2997END| 2998UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2999WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3000 3001# check trigger-3 success: 1 3002DROP TRIGGER trg_1; 3003UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3004f_int2 = CAST(f_char1 AS SIGNED INT), 3005f_charbig = 'just inserted' 3006 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3007DELETE FROM t0_aux 3008WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3009INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3010SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3011'just inserted' FROM t0_template 3012WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3013CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3014BEGIN 3015UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3016f_charbig = 'updated by trigger' 3017 WHERE f_int1 = - old.f_int1; 3018END| 3019UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3020WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3021 3022# check trigger-4 success: 1 3023DROP TRIGGER trg_1; 3024UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3025f_int2 = CAST(f_char1 AS SIGNED INT), 3026f_charbig = 'just inserted' 3027 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3028DELETE FROM t0_aux 3029WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3030INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3031SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3032'just inserted' FROM t0_template 3033WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3034CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3035BEGIN 3036UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3037f_charbig = 'updated by trigger' 3038 WHERE f_int1 = new.f_int1; 3039END| 3040UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3041WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3042 3043# check trigger-5 success: 1 3044DROP TRIGGER trg_1; 3045UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3046f_int2 = CAST(f_char1 AS SIGNED INT), 3047f_charbig = 'just inserted' 3048 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3049DELETE FROM t0_aux 3050WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3051INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3052SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3053'just inserted' FROM t0_template 3054WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3055CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3056BEGIN 3057UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3058f_charbig = 'updated by trigger' 3059 WHERE f_int1 = - old.f_int1; 3060END| 3061UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3062WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3063 3064# check trigger-6 success: 1 3065DROP TRIGGER trg_1; 3066UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3067f_int2 = CAST(f_char1 AS SIGNED INT), 3068f_charbig = 'just inserted' 3069 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3070DELETE FROM t0_aux 3071WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3072INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3073SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3074'just inserted' FROM t0_template 3075WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3076CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3077BEGIN 3078UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3079f_charbig = 'updated by trigger' 3080 WHERE f_int1 = - old.f_int1; 3081END| 3082DELETE FROM t0_aux 3083WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3084 3085# check trigger-7 success: 1 3086DROP TRIGGER trg_1; 3087UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3088f_int2 = CAST(f_char1 AS SIGNED INT), 3089f_charbig = 'just inserted' 3090 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3091DELETE FROM t0_aux 3092WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3093INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3094SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3095'just inserted' FROM t0_template 3096WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3097CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3098BEGIN 3099UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3100f_charbig = 'updated by trigger' 3101 WHERE f_int1 = - old.f_int1; 3102END| 3103DELETE FROM t0_aux 3104WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3105 3106# check trigger-8 success: 1 3107DROP TRIGGER trg_1; 3108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3109f_int2 = CAST(f_char1 AS SIGNED INT), 3110f_charbig = 'just inserted' 3111 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3112DELETE FROM t0_aux 3113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3114DELETE FROM t1 3115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3116CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3117BEGIN 3118SET new.f_int1 = old.f_int1 + @max_row, 3119new.f_int2 = old.f_int2 - @max_row, 3120new.f_charbig = '####updated per update trigger####'; 3121END| 3122UPDATE t1 3123SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3124f_charbig = '####updated per update statement itself####'; 3125Warnings: 3126Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3127 3128# check trigger-9 success: 1 3129DROP TRIGGER trg_2; 3130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3131f_int2 = CAST(f_char1 AS SIGNED INT), 3132f_charbig = CONCAT('===',f_char1,'==='); 3133Warnings: 3134Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3135CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3136BEGIN 3137SET new.f_int1 = new.f_int1 + @max_row, 3138new.f_int2 = new.f_int2 - @max_row, 3139new.f_charbig = '####updated per update trigger####'; 3140END| 3141UPDATE t1 3142SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3143f_charbig = '####updated per update statement itself####'; 3144Warnings: 3145Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3146 3147# check trigger-10 success: 1 3148DROP TRIGGER trg_2; 3149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3150f_int2 = CAST(f_char1 AS SIGNED INT), 3151f_charbig = CONCAT('===',f_char1,'==='); 3152Warnings: 3153Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3154CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3155BEGIN 3156SET new.f_int1 = @my_max1 + @counter, 3157new.f_int2 = @my_min2 - @counter, 3158new.f_charbig = '####updated per insert trigger####'; 3159SET @counter = @counter + 1; 3160END| 3161SET @counter = 1; 3162SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3163Warnings: 3164Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3165INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3166SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3167CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3169ORDER BY f_int1; 3170DROP TRIGGER trg_3; 3171 3172# check trigger-11 success: 1 3173Warnings: 3174Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3175DELETE FROM t1 3176WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3177AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3178AND f_charbig = '####updated per insert trigger####'; 3179CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3180BEGIN 3181SET new.f_int1 = @my_max1 + @counter, 3182new.f_int2 = @my_min2 - @counter, 3183new.f_charbig = '####updated per insert trigger####'; 3184SET @counter = @counter + 1; 3185END| 3186SET @counter = 1; 3187SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3188Warnings: 3189Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3190INSERT INTO t1 (f_char1, f_char2, f_charbig) 3191SELECT CAST(f_int1 AS CHAR), 3192CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3193WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3194ORDER BY f_int1; 3195DROP TRIGGER trg_3; 3196 3197# check trigger-12 success: 1 3198Warnings: 3199Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3200DELETE FROM t1 3201WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3202AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3203AND f_charbig = '####updated per insert trigger####'; 3204ANALYZE TABLE t1; 3205Table Op Msg_type Msg_text 3206test.t1 analyze status OK 3207test.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. 3208CHECK TABLE t1 EXTENDED; 3209Table Op Msg_type Msg_text 3210test.t1 check status OK 3211test.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. 3212CHECKSUM TABLE t1 EXTENDED; 3213Table Checksum 3214test.t1 <some_value> 3215OPTIMIZE TABLE t1; 3216Table Op Msg_type Msg_text 3217test.t1 optimize status OK 3218test.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. 3219# check layout success: 1 3220REPAIR TABLE t1 EXTENDED; 3221Table Op Msg_type Msg_text 3222test.t1 repair status OK 3223test.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. 3224# check layout success: 1 3225TRUNCATE t1; 3226Warnings: 3227Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3228 3229# check TRUNCATE success: 1 3230# check layout success: 1 3231# End usability test (inc/partition_check.inc) 3232DROP TABLE t1; 3233CREATE TABLE t1 ( 3234f_int1 INTEGER, 3235f_int2 INTEGER, 3236f_char1 CHAR(20), 3237f_char2 CHAR(20), 3238f_charbig VARCHAR(1000) 3239 3240) 3241PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 3242(PARTITION part1 VALUES IN (0) 3243DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3244INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 3245(SUBPARTITION sp11 3246DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3247INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 3248SUBPARTITION sp12 3249DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3250INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 3251PARTITION part2 VALUES IN (1) 3252DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3253INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 3254(SUBPARTITION sp21 3255DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3256INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 3257SUBPARTITION sp22 3258DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3259INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 3260PARTITION part3 VALUES IN (2) 3261DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3262INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 3263(SUBPARTITION sp31, 3264SUBPARTITION sp32), 3265PARTITION part4 VALUES IN (NULL) 3266DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3267INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 3268(SUBPARTITION sp41 3269DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3270INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 3271SUBPARTITION sp42 3272DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3273INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 3274Warnings: 3275Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3276INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3277SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 3278Warnings: 3279Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3280# Start usability test (inc/partition_check.inc) 3281create_command 3282SHOW CREATE TABLE t1; 3283Table Create Table 3284t1 CREATE TABLE `t1` ( 3285 `f_int1` int(11) DEFAULT NULL, 3286 `f_int2` int(11) DEFAULT NULL, 3287 `f_char1` char(20) DEFAULT NULL, 3288 `f_char2` char(20) DEFAULT NULL, 3289 `f_charbig` varchar(1000) DEFAULT NULL 3290) ENGINE=MyISAM DEFAULT CHARSET=latin1 3291/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 3292SUBPARTITION BY HASH (f_int1 + 1) 3293(PARTITION part1 VALUES IN (0) 3294 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3295 SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 3296 PARTITION part2 VALUES IN (1) 3297 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3298 SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 3299 PARTITION part3 VALUES IN (2) 3300 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3301 SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 3302 PARTITION part4 VALUES IN (NULL) 3303 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3304 SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 3305 3306unified filelist 3307t1#P#part1#SP#sp11.MYD 3308t1#P#part1#SP#sp11.MYI 3309t1#P#part1#SP#sp12.MYD 3310t1#P#part1#SP#sp12.MYI 3311t1#P#part2#SP#sp21.MYD 3312t1#P#part2#SP#sp21.MYI 3313t1#P#part2#SP#sp22.MYD 3314t1#P#part2#SP#sp22.MYI 3315t1#P#part3#SP#sp31.MYD 3316t1#P#part3#SP#sp31.MYI 3317t1#P#part3#SP#sp32.MYD 3318t1#P#part3#SP#sp32.MYI 3319t1#P#part4#SP#sp41.MYD 3320t1#P#part4#SP#sp41.MYI 3321t1#P#part4#SP#sp42.MYD 3322t1#P#part4#SP#sp42.MYI 3323t1.frm 3324t1.par 3325t1#P#part1#SP#sp11.MYD 3326t1#P#part1#SP#sp12.MYD 3327t1#P#part2#SP#sp21.MYD 3328t1#P#part2#SP#sp22.MYD 3329t1#P#part3#SP#sp31.MYD 3330t1#P#part3#SP#sp32.MYD 3331t1#P#part4#SP#sp41.MYD 3332t1#P#part4#SP#sp42.MYD 3333t1#P#part1#SP#sp11.MYI 3334t1#P#part1#SP#sp12.MYI 3335t1#P#part2#SP#sp21.MYI 3336t1#P#part2#SP#sp22.MYI 3337t1#P#part3#SP#sp31.MYI 3338t1#P#part3#SP#sp32.MYI 3339t1#P#part4#SP#sp41.MYI 3340t1#P#part4#SP#sp42.MYI 3341 3342# check prerequisites-1 success: 1 3343# check COUNT(*) success: 1 3344# check MIN/MAX(f_int1) success: 1 3345# check MIN/MAX(f_int2) success: 1 3346INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3347SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3348CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3349WHERE f_int1 IN (2,3); 3350# check prerequisites-3 success: 1 3351DELETE FROM t1 WHERE f_charbig = 'delete me'; 3352# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3353# check read via f_int1 success: 1 3354# check read via f_int2 success: 1 3355 3356# check multiple-1 success: 1 3357DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3358 3359# check multiple-2 success: 1 3360INSERT INTO t1 SELECT * FROM t0_template 3361WHERE MOD(f_int1,3) = 0; 3362 3363# check multiple-3 success: 1 3364UPDATE t1 SET f_int1 = f_int1 + @max_row 3365WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3366AND @max_row_div2 + @max_row_div4; 3367 3368# check multiple-4 success: 1 3369DELETE FROM t1 3370WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3371AND @max_row_div2 + @max_row_div4 + @max_row; 3372 3373# check multiple-5 success: 1 3374SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3375INSERT INTO t1 3376SET f_int1 = @cur_value , f_int2 = @cur_value, 3377f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3378f_charbig = '#SINGLE#'; 3379 3380# check single-1 success: 1 3381SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3382INSERT INTO t1 3383SET f_int1 = @cur_value , f_int2 = @cur_value, 3384f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3385f_charbig = '#SINGLE#'; 3386 3387# check single-2 success: 1 3388SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3389SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3390UPDATE t1 SET f_int1 = @cur_value2 3391WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3392 3393# check single-3 success: 1 3394SET @cur_value1= -1; 3395SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3396UPDATE t1 SET f_int1 = @cur_value1 3397WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3398 3399# check single-4 success: 1 3400SELECT MAX(f_int1) INTO @cur_value FROM t1; 3401DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3402 3403# check single-5 success: 1 3404DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3405 3406# check single-6 success: 1 3407INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3408 3409# check single-7 success: 1 3410DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3411DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3412INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3413f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3414f_charbig = '#NULL#'; 3415INSERT INTO t1 3416SET f_int1 = NULL , f_int2 = -@max_row, 3417f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3418f_charbig = '#NULL#'; 3419# check null success: 1 3420 3421# check null-1 success: 1 3422UPDATE t1 SET f_int1 = -@max_row 3423WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3424AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3425 3426# check null-2 success: 1 3427UPDATE t1 SET f_int1 = NULL 3428WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3429AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3430 3431# check null-3 success: 1 3432DELETE FROM t1 3433WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3434AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3435 3436# check null-4 success: 1 3437DELETE FROM t1 3438WHERE f_int1 = 0 AND f_int2 = 0 3439AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3440AND f_charbig = '#NULL#'; 3441SET AUTOCOMMIT= 0; 3442INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3443SELECT f_int1, f_int1, '', '', 'was inserted' 3444FROM t0_template source_tab 3445WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3446 3447# check transactions-1 success: 1 3448COMMIT WORK; 3449 3450# check transactions-2 success: 1 3451ROLLBACK WORK; 3452 3453# check transactions-3 success: 1 3454DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3455COMMIT WORK; 3456ROLLBACK WORK; 3457 3458# check transactions-4 success: 1 3459INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3460SELECT f_int1, f_int1, '', '', 'was inserted' 3461FROM t0_template source_tab 3462WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3463 3464# check transactions-5 success: 1 3465ROLLBACK WORK; 3466Warnings: 3467Warning 1196 Some non-transactional changed tables couldn't be rolled back 3468 3469# check transactions-6 success: 1 3470# INFO: Storage engine used for t1 seems to be not transactional. 3471COMMIT; 3472 3473# check transactions-7 success: 1 3474DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3475COMMIT WORK; 3476SET @@session.sql_mode = 'traditional'; 3477Warnings: 3478Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3479SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3480INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3481SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3482'', '', 'was inserted' FROM t0_template 3483WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3484ERROR 22012: Division by 0 3485COMMIT; 3486 3487# check transactions-8 success: 1 3488# INFO: Storage engine used for t1 seems to be unable to revert 3489# changes made by the failing statement. 3490SET @@session.sql_mode = ''; 3491Warnings: 3492Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3493SET AUTOCOMMIT= 1; 3494DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3495COMMIT WORK; 3496UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3497 3498# check special-1 success: 1 3499UPDATE t1 SET f_charbig = ''; 3500 3501# check special-2 success: 1 3502UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3503INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3504SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3505WHERE 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 BEFORE INSERT 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 = new.f_int1; 3515END| 3516INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3517SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3518WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3519 3520# check trigger-1 success: 1 3521DROP TRIGGER trg_1; 3522UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3523f_int2 = CAST(f_char1 AS SIGNED INT), 3524f_charbig = 'just inserted' 3525 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3526DELETE FROM t0_aux 3527WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3528INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3529SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3530'just inserted' FROM t0_template 3531WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3532CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3533BEGIN 3534UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3535f_charbig = 'updated by trigger' 3536 WHERE f_int1 = new.f_int1; 3537END| 3538INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3539SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3541 3542# check trigger-2 success: 1 3543DROP TRIGGER trg_1; 3544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3545f_int2 = CAST(f_char1 AS SIGNED INT), 3546f_charbig = 'just inserted' 3547 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3548DELETE FROM t0_aux 3549WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3550INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3551SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3552'just inserted' FROM t0_template 3553WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3554CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3555BEGIN 3556UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3557f_charbig = 'updated by trigger' 3558 WHERE f_int1 = new.f_int1; 3559END| 3560UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3561WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3562 3563# check trigger-3 success: 1 3564DROP TRIGGER trg_1; 3565UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3566f_int2 = CAST(f_char1 AS SIGNED INT), 3567f_charbig = 'just inserted' 3568 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3569DELETE FROM t0_aux 3570WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3571INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3572SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3573'just inserted' FROM t0_template 3574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3575CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3576BEGIN 3577UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3578f_charbig = 'updated by trigger' 3579 WHERE f_int1 = - old.f_int1; 3580END| 3581UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3582WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3583 3584# check trigger-4 success: 1 3585DROP TRIGGER trg_1; 3586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3587f_int2 = CAST(f_char1 AS SIGNED INT), 3588f_charbig = 'just inserted' 3589 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3590DELETE FROM t0_aux 3591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3594'just inserted' FROM t0_template 3595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3596CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3597BEGIN 3598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3599f_charbig = 'updated by trigger' 3600 WHERE f_int1 = new.f_int1; 3601END| 3602UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3603WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3604 3605# check trigger-5 success: 1 3606DROP TRIGGER trg_1; 3607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3608f_int2 = CAST(f_char1 AS SIGNED INT), 3609f_charbig = 'just inserted' 3610 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3611DELETE FROM t0_aux 3612WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3613INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3614SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3615'just inserted' FROM t0_template 3616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3617CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3618BEGIN 3619UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3620f_charbig = 'updated by trigger' 3621 WHERE f_int1 = - old.f_int1; 3622END| 3623UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3624WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3625 3626# check trigger-6 success: 1 3627DROP TRIGGER trg_1; 3628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3629f_int2 = CAST(f_char1 AS SIGNED INT), 3630f_charbig = 'just inserted' 3631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3632DELETE FROM t0_aux 3633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3636'just inserted' FROM t0_template 3637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3638CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3639BEGIN 3640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3641f_charbig = 'updated by trigger' 3642 WHERE f_int1 = - old.f_int1; 3643END| 3644DELETE FROM t0_aux 3645WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3646 3647# check trigger-7 success: 1 3648DROP TRIGGER trg_1; 3649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3650f_int2 = CAST(f_char1 AS SIGNED INT), 3651f_charbig = 'just inserted' 3652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3653DELETE FROM t0_aux 3654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3657'just inserted' FROM t0_template 3658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3659CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3660BEGIN 3661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3662f_charbig = 'updated by trigger' 3663 WHERE f_int1 = - old.f_int1; 3664END| 3665DELETE FROM t0_aux 3666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3667 3668# check trigger-8 success: 1 3669DROP TRIGGER trg_1; 3670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3671f_int2 = CAST(f_char1 AS SIGNED INT), 3672f_charbig = 'just inserted' 3673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3674DELETE FROM t0_aux 3675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3676DELETE FROM t1 3677WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3678CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3679BEGIN 3680SET new.f_int1 = old.f_int1 + @max_row, 3681new.f_int2 = old.f_int2 - @max_row, 3682new.f_charbig = '####updated per update trigger####'; 3683END| 3684UPDATE t1 3685SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3686f_charbig = '####updated per update statement itself####'; 3687Warnings: 3688Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3689 3690# check trigger-9 success: 1 3691DROP TRIGGER trg_2; 3692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3693f_int2 = CAST(f_char1 AS SIGNED INT), 3694f_charbig = CONCAT('===',f_char1,'==='); 3695Warnings: 3696Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3697CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3698BEGIN 3699SET new.f_int1 = new.f_int1 + @max_row, 3700new.f_int2 = new.f_int2 - @max_row, 3701new.f_charbig = '####updated per update trigger####'; 3702END| 3703UPDATE t1 3704SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3705f_charbig = '####updated per update statement itself####'; 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. 3708 3709# check trigger-10 success: 1 3710DROP TRIGGER trg_2; 3711UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3712f_int2 = CAST(f_char1 AS SIGNED INT), 3713f_charbig = CONCAT('===',f_char1,'==='); 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. 3716CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3717BEGIN 3718SET new.f_int1 = @my_max1 + @counter, 3719new.f_int2 = @my_min2 - @counter, 3720new.f_charbig = '####updated per insert trigger####'; 3721SET @counter = @counter + 1; 3722END| 3723SET @counter = 1; 3724SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3725Warnings: 3726Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3727INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3728SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3729CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3731ORDER BY f_int1; 3732DROP TRIGGER trg_3; 3733 3734# check trigger-11 success: 1 3735Warnings: 3736Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3737DELETE FROM t1 3738WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3739AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3740AND f_charbig = '####updated per insert trigger####'; 3741CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3742BEGIN 3743SET new.f_int1 = @my_max1 + @counter, 3744new.f_int2 = @my_min2 - @counter, 3745new.f_charbig = '####updated per insert trigger####'; 3746SET @counter = @counter + 1; 3747END| 3748SET @counter = 1; 3749SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3750Warnings: 3751Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3752INSERT INTO t1 (f_char1, f_char2, f_charbig) 3753SELECT CAST(f_int1 AS CHAR), 3754CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3755WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3756ORDER BY f_int1; 3757DROP TRIGGER trg_3; 3758 3759# check trigger-12 success: 1 3760Warnings: 3761Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3762DELETE FROM t1 3763WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3764AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3765AND f_charbig = '####updated per insert trigger####'; 3766ANALYZE TABLE t1; 3767Table Op Msg_type Msg_text 3768test.t1 analyze status OK 3769test.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. 3770CHECK TABLE t1 EXTENDED; 3771Table Op Msg_type Msg_text 3772test.t1 check status OK 3773test.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. 3774CHECKSUM TABLE t1 EXTENDED; 3775Table Checksum 3776test.t1 <some_value> 3777OPTIMIZE TABLE t1; 3778Table Op Msg_type Msg_text 3779test.t1 optimize status OK 3780test.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. 3781# check layout success: 1 3782REPAIR TABLE t1 EXTENDED; 3783Table Op Msg_type Msg_text 3784test.t1 repair status OK 3785test.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. 3786# check layout success: 1 3787TRUNCATE t1; 3788Warnings: 3789Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3790 3791# check TRUNCATE success: 1 3792# check layout success: 1 3793# End usability test (inc/partition_check.inc) 3794DROP TABLE t1; 3795CREATE TABLE t1 ( 3796f_int1 INTEGER, 3797f_int2 INTEGER, 3798f_char1 CHAR(20), 3799f_char2 CHAR(20), 3800f_charbig VARCHAR(1000) 3801 3802) 3803PARTITION BY LIST(ABS(MOD(f_int1,2))) 3804SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 3805(PARTITION part1 VALUES IN (0) 3806DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3807INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 3808PARTITION part2 VALUES IN (1) 3809DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3810INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 3811PARTITION part3 VALUES IN (NULL) 3812DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 3813INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 3814Warnings: 3815Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3816INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3817SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 3818Warnings: 3819Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 3820# Start usability test (inc/partition_check.inc) 3821create_command 3822SHOW CREATE TABLE t1; 3823Table Create Table 3824t1 CREATE TABLE `t1` ( 3825 `f_int1` int(11) DEFAULT NULL, 3826 `f_int2` int(11) DEFAULT NULL, 3827 `f_char1` char(20) DEFAULT NULL, 3828 `f_char2` char(20) DEFAULT NULL, 3829 `f_charbig` varchar(1000) DEFAULT NULL 3830) ENGINE=MyISAM DEFAULT CHARSET=latin1 3831/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 3832SUBPARTITION BY KEY (f_int1) 3833SUBPARTITIONS 3 3834(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3835 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 3836 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 3837 3838unified filelist 3839t1#P#part1#SP#part1sp0.MYD 3840t1#P#part1#SP#part1sp0.MYI 3841t1#P#part1#SP#part1sp1.MYD 3842t1#P#part1#SP#part1sp1.MYI 3843t1#P#part1#SP#part1sp2.MYD 3844t1#P#part1#SP#part1sp2.MYI 3845t1#P#part2#SP#part2sp0.MYD 3846t1#P#part2#SP#part2sp0.MYI 3847t1#P#part2#SP#part2sp1.MYD 3848t1#P#part2#SP#part2sp1.MYI 3849t1#P#part2#SP#part2sp2.MYD 3850t1#P#part2#SP#part2sp2.MYI 3851t1#P#part3#SP#part3sp0.MYD 3852t1#P#part3#SP#part3sp0.MYI 3853t1#P#part3#SP#part3sp1.MYD 3854t1#P#part3#SP#part3sp1.MYI 3855t1#P#part3#SP#part3sp2.MYD 3856t1#P#part3#SP#part3sp2.MYI 3857t1.frm 3858t1.par 3859t1#P#part1#SP#part1sp0.MYD 3860t1#P#part1#SP#part1sp1.MYD 3861t1#P#part1#SP#part1sp2.MYD 3862t1#P#part2#SP#part2sp0.MYD 3863t1#P#part2#SP#part2sp1.MYD 3864t1#P#part2#SP#part2sp2.MYD 3865t1#P#part3#SP#part3sp0.MYD 3866t1#P#part3#SP#part3sp1.MYD 3867t1#P#part3#SP#part3sp2.MYD 3868t1#P#part1#SP#part1sp0.MYI 3869t1#P#part1#SP#part1sp1.MYI 3870t1#P#part1#SP#part1sp2.MYI 3871t1#P#part2#SP#part2sp0.MYI 3872t1#P#part2#SP#part2sp1.MYI 3873t1#P#part2#SP#part2sp2.MYI 3874t1#P#part3#SP#part3sp0.MYI 3875t1#P#part3#SP#part3sp1.MYI 3876t1#P#part3#SP#part3sp2.MYI 3877 3878# check prerequisites-1 success: 1 3879# check COUNT(*) success: 1 3880# check MIN/MAX(f_int1) success: 1 3881# check MIN/MAX(f_int2) success: 1 3882INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3883SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3884CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3885WHERE f_int1 IN (2,3); 3886# check prerequisites-3 success: 1 3887DELETE FROM t1 WHERE f_charbig = 'delete me'; 3888# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3889# check read via f_int1 success: 1 3890# check read via f_int2 success: 1 3891 3892# check multiple-1 success: 1 3893DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3894 3895# check multiple-2 success: 1 3896INSERT INTO t1 SELECT * FROM t0_template 3897WHERE MOD(f_int1,3) = 0; 3898 3899# check multiple-3 success: 1 3900UPDATE t1 SET f_int1 = f_int1 + @max_row 3901WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3902AND @max_row_div2 + @max_row_div4; 3903 3904# check multiple-4 success: 1 3905DELETE FROM t1 3906WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3907AND @max_row_div2 + @max_row_div4 + @max_row; 3908 3909# check multiple-5 success: 1 3910SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3911INSERT INTO t1 3912SET f_int1 = @cur_value , f_int2 = @cur_value, 3913f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3914f_charbig = '#SINGLE#'; 3915 3916# check single-1 success: 1 3917SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3918INSERT INTO t1 3919SET f_int1 = @cur_value , f_int2 = @cur_value, 3920f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3921f_charbig = '#SINGLE#'; 3922 3923# check single-2 success: 1 3924SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3925SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3926UPDATE t1 SET f_int1 = @cur_value2 3927WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3928 3929# check single-3 success: 1 3930SET @cur_value1= -1; 3931SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3932UPDATE t1 SET f_int1 = @cur_value1 3933WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3934 3935# check single-4 success: 1 3936SELECT MAX(f_int1) INTO @cur_value FROM t1; 3937DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3938 3939# check single-5 success: 1 3940DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3941 3942# check single-6 success: 1 3943INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3944 3945# check single-7 success: 1 3946DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3947DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3948INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3949f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3950f_charbig = '#NULL#'; 3951INSERT INTO t1 3952SET f_int1 = NULL , f_int2 = -@max_row, 3953f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3954f_charbig = '#NULL#'; 3955# check null success: 1 3956 3957# check null-1 success: 1 3958UPDATE t1 SET f_int1 = -@max_row 3959WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3960AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3961 3962# check null-2 success: 1 3963UPDATE t1 SET f_int1 = NULL 3964WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3965AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3966 3967# check null-3 success: 1 3968DELETE FROM t1 3969WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3970AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3971 3972# check null-4 success: 1 3973DELETE FROM t1 3974WHERE f_int1 = 0 AND f_int2 = 0 3975AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3976AND f_charbig = '#NULL#'; 3977SET AUTOCOMMIT= 0; 3978INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3979SELECT f_int1, f_int1, '', '', 'was inserted' 3980FROM t0_template source_tab 3981WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3982 3983# check transactions-1 success: 1 3984COMMIT WORK; 3985 3986# check transactions-2 success: 1 3987ROLLBACK WORK; 3988 3989# check transactions-3 success: 1 3990DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3991COMMIT WORK; 3992ROLLBACK WORK; 3993 3994# check transactions-4 success: 1 3995INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3996SELECT f_int1, f_int1, '', '', 'was inserted' 3997FROM t0_template source_tab 3998WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3999 4000# check transactions-5 success: 1 4001ROLLBACK WORK; 4002Warnings: 4003Warning 1196 Some non-transactional changed tables couldn't be rolled back 4004 4005# check transactions-6 success: 1 4006# INFO: Storage engine used for t1 seems to be not transactional. 4007COMMIT; 4008 4009# check transactions-7 success: 1 4010DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4011COMMIT WORK; 4012SET @@session.sql_mode = 'traditional'; 4013Warnings: 4014Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4015SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4016INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4017SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4018'', '', 'was inserted' FROM t0_template 4019WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4020ERROR 22012: Division by 0 4021COMMIT; 4022 4023# check transactions-8 success: 1 4024# INFO: Storage engine used for t1 seems to be unable to revert 4025# changes made by the failing statement. 4026SET @@session.sql_mode = ''; 4027Warnings: 4028Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4029SET AUTOCOMMIT= 1; 4030DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4031COMMIT WORK; 4032UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4033 4034# check special-1 success: 1 4035UPDATE t1 SET f_charbig = ''; 4036 4037# check special-2 success: 1 4038UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4039INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4040SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4042INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4043SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4044'just inserted' FROM t0_template 4045WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4046CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4047BEGIN 4048UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4049f_charbig = 'updated by trigger' 4050 WHERE f_int1 = new.f_int1; 4051END| 4052INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4053SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4054WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4055 4056# check trigger-1 success: 1 4057DROP TRIGGER trg_1; 4058UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4059f_int2 = CAST(f_char1 AS SIGNED INT), 4060f_charbig = 'just inserted' 4061 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4062DELETE FROM t0_aux 4063WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4065SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4066'just inserted' FROM t0_template 4067WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4068CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4069BEGIN 4070UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4071f_charbig = 'updated by trigger' 4072 WHERE f_int1 = new.f_int1; 4073END| 4074INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4075SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4077 4078# check trigger-2 success: 1 4079DROP TRIGGER trg_1; 4080UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4081f_int2 = CAST(f_char1 AS SIGNED INT), 4082f_charbig = 'just inserted' 4083 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4084DELETE FROM t0_aux 4085WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4086INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4087SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4088'just inserted' FROM t0_template 4089WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4090CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4091BEGIN 4092UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4093f_charbig = 'updated by trigger' 4094 WHERE f_int1 = new.f_int1; 4095END| 4096UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4097WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4098 4099# check trigger-3 success: 1 4100DROP TRIGGER trg_1; 4101UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4102f_int2 = CAST(f_char1 AS SIGNED INT), 4103f_charbig = 'just inserted' 4104 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4105DELETE FROM t0_aux 4106WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4108SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4109'just inserted' FROM t0_template 4110WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4111CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4112BEGIN 4113UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4114f_charbig = 'updated by trigger' 4115 WHERE f_int1 = - old.f_int1; 4116END| 4117UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4118WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4119 4120# check trigger-4 success: 1 4121DROP TRIGGER trg_1; 4122UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4123f_int2 = CAST(f_char1 AS SIGNED INT), 4124f_charbig = 'just inserted' 4125 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4126DELETE FROM t0_aux 4127WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4128INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4129SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4130'just inserted' FROM t0_template 4131WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4132CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4133BEGIN 4134UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4135f_charbig = 'updated by trigger' 4136 WHERE f_int1 = new.f_int1; 4137END| 4138UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4139WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4140 4141# check trigger-5 success: 1 4142DROP TRIGGER trg_1; 4143UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4144f_int2 = CAST(f_char1 AS SIGNED INT), 4145f_charbig = 'just inserted' 4146 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4147DELETE FROM t0_aux 4148WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4149INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4150SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4151'just inserted' FROM t0_template 4152WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4153CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4154BEGIN 4155UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4156f_charbig = 'updated by trigger' 4157 WHERE f_int1 = - old.f_int1; 4158END| 4159UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4160WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4161 4162# check trigger-6 success: 1 4163DROP TRIGGER trg_1; 4164UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4165f_int2 = CAST(f_char1 AS SIGNED INT), 4166f_charbig = 'just inserted' 4167 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4168DELETE FROM t0_aux 4169WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4170INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4171SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4172'just inserted' FROM t0_template 4173WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4174CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4175BEGIN 4176UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4177f_charbig = 'updated by trigger' 4178 WHERE f_int1 = - old.f_int1; 4179END| 4180DELETE FROM t0_aux 4181WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4182 4183# check trigger-7 success: 1 4184DROP TRIGGER trg_1; 4185UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4186f_int2 = CAST(f_char1 AS SIGNED INT), 4187f_charbig = 'just inserted' 4188 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4189DELETE FROM t0_aux 4190WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4191INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4192SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4193'just inserted' FROM t0_template 4194WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4195CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4196BEGIN 4197UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4198f_charbig = 'updated by trigger' 4199 WHERE f_int1 = - old.f_int1; 4200END| 4201DELETE FROM t0_aux 4202WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4203 4204# check trigger-8 success: 1 4205DROP TRIGGER trg_1; 4206UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4207f_int2 = CAST(f_char1 AS SIGNED INT), 4208f_charbig = 'just inserted' 4209 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4210DELETE FROM t0_aux 4211WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4212DELETE FROM t1 4213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4214CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4215BEGIN 4216SET new.f_int1 = old.f_int1 + @max_row, 4217new.f_int2 = old.f_int2 - @max_row, 4218new.f_charbig = '####updated per update trigger####'; 4219END| 4220UPDATE t1 4221SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4222f_charbig = '####updated per update statement itself####'; 4223Warnings: 4224Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4225 4226# check trigger-9 success: 1 4227DROP TRIGGER trg_2; 4228UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4229f_int2 = CAST(f_char1 AS SIGNED INT), 4230f_charbig = CONCAT('===',f_char1,'==='); 4231Warnings: 4232Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4233CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4234BEGIN 4235SET new.f_int1 = new.f_int1 + @max_row, 4236new.f_int2 = new.f_int2 - @max_row, 4237new.f_charbig = '####updated per update trigger####'; 4238END| 4239UPDATE t1 4240SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4241f_charbig = '####updated per update statement itself####'; 4242Warnings: 4243Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4244 4245# check trigger-10 success: 1 4246DROP TRIGGER trg_2; 4247UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4248f_int2 = CAST(f_char1 AS SIGNED INT), 4249f_charbig = CONCAT('===',f_char1,'==='); 4250Warnings: 4251Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4252CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4253BEGIN 4254SET new.f_int1 = @my_max1 + @counter, 4255new.f_int2 = @my_min2 - @counter, 4256new.f_charbig = '####updated per insert trigger####'; 4257SET @counter = @counter + 1; 4258END| 4259SET @counter = 1; 4260SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4261Warnings: 4262Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4263INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4264SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4265CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4267ORDER BY f_int1; 4268DROP TRIGGER trg_3; 4269 4270# check trigger-11 success: 1 4271Warnings: 4272Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4273DELETE FROM t1 4274WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4275AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4276AND f_charbig = '####updated per insert trigger####'; 4277CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4278BEGIN 4279SET new.f_int1 = @my_max1 + @counter, 4280new.f_int2 = @my_min2 - @counter, 4281new.f_charbig = '####updated per insert trigger####'; 4282SET @counter = @counter + 1; 4283END| 4284SET @counter = 1; 4285SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4286Warnings: 4287Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4288INSERT INTO t1 (f_char1, f_char2, f_charbig) 4289SELECT CAST(f_int1 AS CHAR), 4290CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4291WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4292ORDER BY f_int1; 4293DROP TRIGGER trg_3; 4294 4295# check trigger-12 success: 1 4296Warnings: 4297Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4298DELETE FROM t1 4299WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4300AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4301AND f_charbig = '####updated per insert trigger####'; 4302ANALYZE TABLE t1; 4303Table Op Msg_type Msg_text 4304test.t1 analyze status OK 4305test.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. 4306CHECK TABLE t1 EXTENDED; 4307Table Op Msg_type Msg_text 4308test.t1 check status OK 4309test.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. 4310CHECKSUM TABLE t1 EXTENDED; 4311Table Checksum 4312test.t1 <some_value> 4313OPTIMIZE TABLE t1; 4314Table Op Msg_type Msg_text 4315test.t1 optimize status OK 4316test.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. 4317# check layout success: 1 4318REPAIR TABLE t1 EXTENDED; 4319Table Op Msg_type Msg_text 4320test.t1 repair status OK 4321test.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. 4322# check layout success: 1 4323TRUNCATE t1; 4324Warnings: 4325Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4326 4327# check TRUNCATE success: 1 4328# check layout success: 1 4329# End usability test (inc/partition_check.inc) 4330DROP TABLE t1; 4331# 1.2 The partitioning function contains two columns. 4332DROP TABLE IF EXISTS t1; 4333CREATE TABLE t1 ( 4334f_int1 INTEGER, 4335f_int2 INTEGER, 4336f_char1 CHAR(20), 4337f_char2 CHAR(20), 4338f_charbig VARCHAR(1000) 4339 4340) 4341PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2 4342(PARTITION p1 4343DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4344INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 4345PARTITION p2 4346DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4347INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 4348Warnings: 4349Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4350INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4351SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 4352Warnings: 4353Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4354# Start usability test (inc/partition_check.inc) 4355create_command 4356SHOW CREATE TABLE t1; 4357Table Create Table 4358t1 CREATE TABLE `t1` ( 4359 `f_int1` int(11) DEFAULT NULL, 4360 `f_int2` int(11) DEFAULT NULL, 4361 `f_char1` char(20) DEFAULT NULL, 4362 `f_char2` char(20) DEFAULT NULL, 4363 `f_charbig` varchar(1000) DEFAULT NULL 4364) ENGINE=MyISAM DEFAULT CHARSET=latin1 4365/*!50100 PARTITION BY HASH (f_int1 + f_int2) 4366(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 4367 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 4368 4369unified filelist 4370t1#P#p1.MYD 4371t1#P#p1.MYI 4372t1#P#p2.MYD 4373t1#P#p2.MYI 4374t1.frm 4375t1.par 4376t1#P#p1.MYD 4377t1#P#p2.MYD 4378t1#P#p1.MYI 4379t1#P#p2.MYI 4380 4381# check prerequisites-1 success: 1 4382# check COUNT(*) success: 1 4383# check MIN/MAX(f_int1) success: 1 4384# check MIN/MAX(f_int2) success: 1 4385INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4386SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4387CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4388WHERE f_int1 IN (2,3); 4389# check prerequisites-3 success: 1 4390DELETE FROM t1 WHERE f_charbig = 'delete me'; 4391# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 4392# check read via f_int1 success: 1 4393# check read via f_int2 success: 1 4394 4395# check multiple-1 success: 1 4396DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4397 4398# check multiple-2 success: 1 4399INSERT INTO t1 SELECT * FROM t0_template 4400WHERE MOD(f_int1,3) = 0; 4401 4402# check multiple-3 success: 1 4403UPDATE t1 SET f_int1 = f_int1 + @max_row 4404WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4405AND @max_row_div2 + @max_row_div4; 4406 4407# check multiple-4 success: 1 4408DELETE FROM t1 4409WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4410AND @max_row_div2 + @max_row_div4 + @max_row; 4411 4412# check multiple-5 success: 1 4413SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4414INSERT INTO t1 4415SET f_int1 = @cur_value , f_int2 = @cur_value, 4416f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4417f_charbig = '#SINGLE#'; 4418 4419# check single-1 success: 1 4420SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4421INSERT INTO t1 4422SET f_int1 = @cur_value , f_int2 = @cur_value, 4423f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4424f_charbig = '#SINGLE#'; 4425 4426# check single-2 success: 1 4427SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4428SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4429UPDATE t1 SET f_int1 = @cur_value2 4430WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4431 4432# check single-3 success: 1 4433SET @cur_value1= -1; 4434SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4435UPDATE t1 SET f_int1 = @cur_value1 4436WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4437 4438# check single-4 success: 1 4439SELECT MAX(f_int1) INTO @cur_value FROM t1; 4440DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4441 4442# check single-5 success: 1 4443DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4444 4445# check single-6 success: 1 4446INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4447 4448# check single-7 success: 1 4449DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4450DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4451INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4452f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4453f_charbig = '#NULL#'; 4454INSERT INTO t1 4455SET f_int1 = NULL , f_int2 = -@max_row, 4456f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4457f_charbig = '#NULL#'; 4458# check null success: 1 4459 4460# check null-1 success: 1 4461UPDATE t1 SET f_int1 = -@max_row 4462WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4463AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4464 4465# check null-2 success: 1 4466UPDATE t1 SET f_int1 = NULL 4467WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4468AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4469 4470# check null-3 success: 1 4471DELETE FROM t1 4472WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4473AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4474 4475# check null-4 success: 1 4476DELETE FROM t1 4477WHERE f_int1 = 0 AND f_int2 = 0 4478AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4479AND f_charbig = '#NULL#'; 4480SET AUTOCOMMIT= 0; 4481INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4482SELECT f_int1, f_int1, '', '', 'was inserted' 4483FROM t0_template source_tab 4484WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4485 4486# check transactions-1 success: 1 4487COMMIT WORK; 4488 4489# check transactions-2 success: 1 4490ROLLBACK WORK; 4491 4492# check transactions-3 success: 1 4493DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4494COMMIT WORK; 4495ROLLBACK WORK; 4496 4497# check transactions-4 success: 1 4498INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4499SELECT f_int1, f_int1, '', '', 'was inserted' 4500FROM t0_template source_tab 4501WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4502 4503# check transactions-5 success: 1 4504ROLLBACK WORK; 4505Warnings: 4506Warning 1196 Some non-transactional changed tables couldn't be rolled back 4507 4508# check transactions-6 success: 1 4509# INFO: Storage engine used for t1 seems to be not transactional. 4510COMMIT; 4511 4512# check transactions-7 success: 1 4513DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4514COMMIT WORK; 4515SET @@session.sql_mode = 'traditional'; 4516Warnings: 4517Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4518SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4519INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4520SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4521'', '', 'was inserted' FROM t0_template 4522WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4523ERROR 22012: Division by 0 4524COMMIT; 4525 4526# check transactions-8 success: 1 4527# INFO: Storage engine used for t1 seems to be unable to revert 4528# changes made by the failing statement. 4529SET @@session.sql_mode = ''; 4530Warnings: 4531Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4532SET AUTOCOMMIT= 1; 4533DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4534COMMIT WORK; 4535UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4536 4537# check special-1 success: 1 4538UPDATE t1 SET f_charbig = ''; 4539 4540# check special-2 success: 1 4541UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4542INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4543SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4544WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4545INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4546SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4547'just inserted' FROM t0_template 4548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4549CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4550BEGIN 4551UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4552f_charbig = 'updated by trigger' 4553 WHERE f_int1 = new.f_int1; 4554END| 4555INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4556SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4558 4559# check trigger-1 success: 1 4560DROP TRIGGER trg_1; 4561UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4562f_int2 = CAST(f_char1 AS SIGNED INT), 4563f_charbig = 'just inserted' 4564 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4565DELETE FROM t0_aux 4566WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4567INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4568SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4569'just inserted' FROM t0_template 4570WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4571CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4572BEGIN 4573UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4574f_charbig = 'updated by trigger' 4575 WHERE f_int1 = new.f_int1; 4576END| 4577INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4578SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4580 4581# check trigger-2 success: 1 4582DROP TRIGGER trg_1; 4583UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4584f_int2 = CAST(f_char1 AS SIGNED INT), 4585f_charbig = 'just inserted' 4586 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4587DELETE FROM t0_aux 4588WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4589INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4590SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4591'just inserted' FROM t0_template 4592WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4593CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4594BEGIN 4595UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4596f_charbig = 'updated by trigger' 4597 WHERE f_int1 = new.f_int1; 4598END| 4599UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4600WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4601 4602# check trigger-3 success: 1 4603DROP TRIGGER trg_1; 4604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4605f_int2 = CAST(f_char1 AS SIGNED INT), 4606f_charbig = 'just inserted' 4607 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4608DELETE FROM t0_aux 4609WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4610INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4611SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4612'just inserted' FROM t0_template 4613WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4614CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4615BEGIN 4616UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4617f_charbig = 'updated by trigger' 4618 WHERE f_int1 = - old.f_int1; 4619END| 4620UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4621WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4622 4623# check trigger-4 success: 1 4624DROP TRIGGER trg_1; 4625UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4626f_int2 = CAST(f_char1 AS SIGNED INT), 4627f_charbig = 'just inserted' 4628 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4629DELETE FROM t0_aux 4630WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4631INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4632SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4633'just inserted' FROM t0_template 4634WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4635CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4636BEGIN 4637UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4638f_charbig = 'updated by trigger' 4639 WHERE f_int1 = new.f_int1; 4640END| 4641UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4642WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4643 4644# check trigger-5 success: 1 4645DROP TRIGGER trg_1; 4646UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4647f_int2 = CAST(f_char1 AS SIGNED INT), 4648f_charbig = 'just inserted' 4649 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4650DELETE FROM t0_aux 4651WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4652INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4653SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4654'just inserted' FROM t0_template 4655WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4656CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4657BEGIN 4658UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4659f_charbig = 'updated by trigger' 4660 WHERE f_int1 = - old.f_int1; 4661END| 4662UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4663WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4664 4665# check trigger-6 success: 1 4666DROP TRIGGER trg_1; 4667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4668f_int2 = CAST(f_char1 AS SIGNED INT), 4669f_charbig = 'just inserted' 4670 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4671DELETE FROM t0_aux 4672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4675'just inserted' FROM t0_template 4676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4677CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4678BEGIN 4679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4680f_charbig = 'updated by trigger' 4681 WHERE f_int1 = - old.f_int1; 4682END| 4683DELETE FROM t0_aux 4684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4685 4686# check trigger-7 success: 1 4687DROP TRIGGER trg_1; 4688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4689f_int2 = CAST(f_char1 AS SIGNED INT), 4690f_charbig = 'just inserted' 4691 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4692DELETE FROM t0_aux 4693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4696'just inserted' FROM t0_template 4697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4698CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4699BEGIN 4700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4701f_charbig = 'updated by trigger' 4702 WHERE f_int1 = - old.f_int1; 4703END| 4704DELETE FROM t0_aux 4705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4706 4707# check trigger-8 success: 1 4708DROP TRIGGER trg_1; 4709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4710f_int2 = CAST(f_char1 AS SIGNED INT), 4711f_charbig = 'just inserted' 4712 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4713DELETE FROM t0_aux 4714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4715DELETE FROM t1 4716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4717CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4718BEGIN 4719SET new.f_int1 = old.f_int1 + @max_row, 4720new.f_int2 = old.f_int2 - @max_row, 4721new.f_charbig = '####updated per update trigger####'; 4722END| 4723UPDATE t1 4724SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4725f_charbig = '####updated per update statement itself####'; 4726Warnings: 4727Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4728 4729# check trigger-9 success: 1 4730DROP TRIGGER trg_2; 4731UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4732f_int2 = CAST(f_char1 AS SIGNED INT), 4733f_charbig = CONCAT('===',f_char1,'==='); 4734Warnings: 4735Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4736CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4737BEGIN 4738SET new.f_int1 = new.f_int1 + @max_row, 4739new.f_int2 = new.f_int2 - @max_row, 4740new.f_charbig = '####updated per update trigger####'; 4741END| 4742UPDATE t1 4743SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4744f_charbig = '####updated per update statement itself####'; 4745Warnings: 4746Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4747 4748# check trigger-10 success: 1 4749DROP TRIGGER trg_2; 4750UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4751f_int2 = CAST(f_char1 AS SIGNED INT), 4752f_charbig = CONCAT('===',f_char1,'==='); 4753Warnings: 4754Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4755CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4756BEGIN 4757SET new.f_int1 = @my_max1 + @counter, 4758new.f_int2 = @my_min2 - @counter, 4759new.f_charbig = '####updated per insert trigger####'; 4760SET @counter = @counter + 1; 4761END| 4762SET @counter = 1; 4763SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4764Warnings: 4765Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4766INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4767SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4768CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4769WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4770ORDER BY f_int1; 4771DROP TRIGGER trg_3; 4772 4773# check trigger-11 success: 1 4774Warnings: 4775Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4776DELETE FROM t1 4777WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4778AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4779AND f_charbig = '####updated per insert trigger####'; 4780CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4781BEGIN 4782SET new.f_int1 = @my_max1 + @counter, 4783new.f_int2 = @my_min2 - @counter, 4784new.f_charbig = '####updated per insert trigger####'; 4785SET @counter = @counter + 1; 4786END| 4787SET @counter = 1; 4788SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4789Warnings: 4790Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4791INSERT INTO t1 (f_char1, f_char2, f_charbig) 4792SELECT CAST(f_int1 AS CHAR), 4793CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4795ORDER BY f_int1; 4796DROP TRIGGER trg_3; 4797 4798# check trigger-12 success: 1 4799Warnings: 4800Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4801DELETE FROM t1 4802WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4803AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4804AND f_charbig = '####updated per insert trigger####'; 4805ANALYZE TABLE t1; 4806Table Op Msg_type Msg_text 4807test.t1 analyze status OK 4808test.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. 4809CHECK TABLE t1 EXTENDED; 4810Table Op Msg_type Msg_text 4811test.t1 check status OK 4812test.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. 4813CHECKSUM TABLE t1 EXTENDED; 4814Table Checksum 4815test.t1 <some_value> 4816OPTIMIZE TABLE t1; 4817Table Op Msg_type Msg_text 4818test.t1 optimize status OK 4819test.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. 4820# check layout success: 1 4821REPAIR TABLE t1 EXTENDED; 4822Table Op Msg_type Msg_text 4823test.t1 repair status OK 4824test.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. 4825# check layout success: 1 4826TRUNCATE t1; 4827Warnings: 4828Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4829 4830# check TRUNCATE success: 1 4831# check layout success: 1 4832# End usability test (inc/partition_check.inc) 4833DROP TABLE t1; 4834CREATE TABLE t1 ( 4835f_int1 INTEGER, 4836f_int2 INTEGER, 4837f_char1 CHAR(20), 4838f_char2 CHAR(20), 4839f_charbig VARCHAR(1000) 4840 4841) 4842PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5 4843(PARTITION p1 4844DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4845INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 4846PARTITION p2 4847DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4848INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 4849PARTITION p3 4850DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4851INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 4852PARTITION p4 4853DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4854INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 4855PARTITION p5 4856DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 4857INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 4858Warnings: 4859Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4860INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4861SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 4862Warnings: 4863Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 4864# Start usability test (inc/partition_check.inc) 4865create_command 4866SHOW CREATE TABLE t1; 4867Table Create Table 4868t1 CREATE TABLE `t1` ( 4869 `f_int1` int(11) DEFAULT NULL, 4870 `f_int2` int(11) DEFAULT NULL, 4871 `f_char1` char(20) DEFAULT NULL, 4872 `f_char2` char(20) DEFAULT NULL, 4873 `f_charbig` varchar(1000) DEFAULT NULL 4874) ENGINE=MyISAM DEFAULT CHARSET=latin1 4875/*!50100 PARTITION BY KEY (f_int1,f_int2) 4876(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 4877 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 4878 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 4879 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 4880 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 4881 4882unified filelist 4883t1#P#p1.MYD 4884t1#P#p1.MYI 4885t1#P#p2.MYD 4886t1#P#p2.MYI 4887t1#P#p3.MYD 4888t1#P#p3.MYI 4889t1#P#p4.MYD 4890t1#P#p4.MYI 4891t1#P#p5.MYD 4892t1#P#p5.MYI 4893t1.frm 4894t1.par 4895t1#P#p1.MYD 4896t1#P#p2.MYD 4897t1#P#p3.MYD 4898t1#P#p4.MYD 4899t1#P#p5.MYD 4900t1#P#p1.MYI 4901t1#P#p2.MYI 4902t1#P#p3.MYI 4903t1#P#p4.MYI 4904t1#P#p5.MYI 4905 4906# check prerequisites-1 success: 1 4907# check COUNT(*) success: 1 4908# check MIN/MAX(f_int1) success: 1 4909# check MIN/MAX(f_int2) success: 1 4910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4911SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4912CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4913WHERE f_int1 IN (2,3); 4914# check prerequisites-3 success: 1 4915DELETE FROM t1 WHERE f_charbig = 'delete me'; 4916# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 4917# check read via f_int1 success: 1 4918# check read via f_int2 success: 1 4919 4920# check multiple-1 success: 1 4921DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4922 4923# check multiple-2 success: 1 4924INSERT INTO t1 SELECT * FROM t0_template 4925WHERE MOD(f_int1,3) = 0; 4926 4927# check multiple-3 success: 1 4928UPDATE t1 SET f_int1 = f_int1 + @max_row 4929WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4930AND @max_row_div2 + @max_row_div4; 4931 4932# check multiple-4 success: 1 4933DELETE FROM t1 4934WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4935AND @max_row_div2 + @max_row_div4 + @max_row; 4936 4937# check multiple-5 success: 1 4938SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4939INSERT INTO t1 4940SET f_int1 = @cur_value , f_int2 = @cur_value, 4941f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4942f_charbig = '#SINGLE#'; 4943 4944# check single-1 success: 1 4945SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4946INSERT INTO t1 4947SET f_int1 = @cur_value , f_int2 = @cur_value, 4948f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4949f_charbig = '#SINGLE#'; 4950 4951# check single-2 success: 1 4952SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4953SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4954UPDATE t1 SET f_int1 = @cur_value2 4955WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4956 4957# check single-3 success: 1 4958SET @cur_value1= -1; 4959SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4960UPDATE t1 SET f_int1 = @cur_value1 4961WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4962 4963# check single-4 success: 1 4964SELECT MAX(f_int1) INTO @cur_value FROM t1; 4965DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4966 4967# check single-5 success: 1 4968DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4969 4970# check single-6 success: 1 4971INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4972 4973# check single-7 success: 1 4974DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4975DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4976INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4977f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4978f_charbig = '#NULL#'; 4979INSERT INTO t1 4980SET f_int1 = NULL , f_int2 = -@max_row, 4981f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4982f_charbig = '#NULL#'; 4983# check null success: 1 4984 4985# check null-1 success: 1 4986UPDATE t1 SET f_int1 = -@max_row 4987WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4988AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4989 4990# check null-2 success: 1 4991UPDATE t1 SET f_int1 = NULL 4992WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4993AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4994 4995# check null-3 success: 1 4996DELETE FROM t1 4997WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 4998AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 4999 5000# check null-4 success: 1 5001DELETE FROM t1 5002WHERE f_int1 = 0 AND f_int2 = 0 5003AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5004AND f_charbig = '#NULL#'; 5005SET AUTOCOMMIT= 0; 5006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5007SELECT f_int1, f_int1, '', '', 'was inserted' 5008FROM t0_template source_tab 5009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5010 5011# check transactions-1 success: 1 5012COMMIT WORK; 5013 5014# check transactions-2 success: 1 5015ROLLBACK WORK; 5016 5017# check transactions-3 success: 1 5018DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5019COMMIT WORK; 5020ROLLBACK WORK; 5021 5022# check transactions-4 success: 1 5023INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5024SELECT f_int1, f_int1, '', '', 'was inserted' 5025FROM t0_template source_tab 5026WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5027 5028# check transactions-5 success: 1 5029ROLLBACK WORK; 5030Warnings: 5031Warning 1196 Some non-transactional changed tables couldn't be rolled back 5032 5033# check transactions-6 success: 1 5034# INFO: Storage engine used for t1 seems to be not transactional. 5035COMMIT; 5036 5037# check transactions-7 success: 1 5038DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5039COMMIT WORK; 5040SET @@session.sql_mode = 'traditional'; 5041Warnings: 5042Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5043SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5044INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5045SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5046'', '', 'was inserted' FROM t0_template 5047WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5048ERROR 22012: Division by 0 5049COMMIT; 5050 5051# check transactions-8 success: 1 5052# INFO: Storage engine used for t1 seems to be unable to revert 5053# changes made by the failing statement. 5054SET @@session.sql_mode = ''; 5055Warnings: 5056Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5057SET AUTOCOMMIT= 1; 5058DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5059COMMIT WORK; 5060UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5061 5062# check special-1 success: 1 5063UPDATE t1 SET f_charbig = ''; 5064 5065# check special-2 success: 1 5066UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5067INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5068SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5069WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5070INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5071SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5072'just inserted' FROM t0_template 5073WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5074CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5075BEGIN 5076UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5077f_charbig = 'updated by trigger' 5078 WHERE f_int1 = new.f_int1; 5079END| 5080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5081SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5083 5084# check trigger-1 success: 1 5085DROP TRIGGER trg_1; 5086UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5087f_int2 = CAST(f_char1 AS SIGNED INT), 5088f_charbig = 'just inserted' 5089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5090DELETE FROM t0_aux 5091WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5093SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5094'just inserted' FROM t0_template 5095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5096CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5097BEGIN 5098UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5099f_charbig = 'updated by trigger' 5100 WHERE f_int1 = new.f_int1; 5101END| 5102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5103SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5105 5106# check trigger-2 success: 1 5107DROP TRIGGER trg_1; 5108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5109f_int2 = CAST(f_char1 AS SIGNED INT), 5110f_charbig = 'just inserted' 5111 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5112DELETE FROM t0_aux 5113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5115SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5116'just inserted' FROM t0_template 5117WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5118CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5119BEGIN 5120UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5121f_charbig = 'updated by trigger' 5122 WHERE f_int1 = new.f_int1; 5123END| 5124UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5125WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5126 5127# check trigger-3 success: 1 5128DROP TRIGGER trg_1; 5129UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5130f_int2 = CAST(f_char1 AS SIGNED INT), 5131f_charbig = 'just inserted' 5132 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5133DELETE FROM t0_aux 5134WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5135INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5136SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5137'just inserted' FROM t0_template 5138WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5139CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5140BEGIN 5141UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5142f_charbig = 'updated by trigger' 5143 WHERE f_int1 = - old.f_int1; 5144END| 5145UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5146WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5147 5148# check trigger-4 success: 1 5149DROP TRIGGER trg_1; 5150UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5151f_int2 = CAST(f_char1 AS SIGNED INT), 5152f_charbig = 'just inserted' 5153 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5154DELETE FROM t0_aux 5155WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5157SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5158'just inserted' FROM t0_template 5159WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5160CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5161BEGIN 5162UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5163f_charbig = 'updated by trigger' 5164 WHERE f_int1 = new.f_int1; 5165END| 5166UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5167WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5168 5169# check trigger-5 success: 1 5170DROP TRIGGER trg_1; 5171UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5172f_int2 = CAST(f_char1 AS SIGNED INT), 5173f_charbig = 'just inserted' 5174 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5175DELETE FROM t0_aux 5176WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5177INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5178SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5179'just inserted' FROM t0_template 5180WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5181CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5182BEGIN 5183UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5184f_charbig = 'updated by trigger' 5185 WHERE f_int1 = - old.f_int1; 5186END| 5187UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5188WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5189 5190# check trigger-6 success: 1 5191DROP TRIGGER trg_1; 5192UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5193f_int2 = CAST(f_char1 AS SIGNED INT), 5194f_charbig = 'just inserted' 5195 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5196DELETE FROM t0_aux 5197WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5198INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5199SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5200'just inserted' FROM t0_template 5201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5202CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5203BEGIN 5204UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5205f_charbig = 'updated by trigger' 5206 WHERE f_int1 = - old.f_int1; 5207END| 5208DELETE FROM t0_aux 5209WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5210 5211# check trigger-7 success: 1 5212DROP TRIGGER trg_1; 5213UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5214f_int2 = CAST(f_char1 AS SIGNED INT), 5215f_charbig = 'just inserted' 5216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5217DELETE FROM t0_aux 5218WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5219INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5220SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5221'just inserted' FROM t0_template 5222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5223CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5224BEGIN 5225UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5226f_charbig = 'updated by trigger' 5227 WHERE f_int1 = - old.f_int1; 5228END| 5229DELETE FROM t0_aux 5230WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5231 5232# check trigger-8 success: 1 5233DROP TRIGGER trg_1; 5234UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5235f_int2 = CAST(f_char1 AS SIGNED INT), 5236f_charbig = 'just inserted' 5237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5238DELETE FROM t0_aux 5239WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5240DELETE FROM t1 5241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5242CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5243BEGIN 5244SET new.f_int1 = old.f_int1 + @max_row, 5245new.f_int2 = old.f_int2 - @max_row, 5246new.f_charbig = '####updated per update trigger####'; 5247END| 5248UPDATE t1 5249SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5250f_charbig = '####updated per update statement itself####'; 5251Warnings: 5252Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5253 5254# check trigger-9 success: 1 5255DROP TRIGGER trg_2; 5256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5257f_int2 = CAST(f_char1 AS SIGNED INT), 5258f_charbig = CONCAT('===',f_char1,'==='); 5259Warnings: 5260Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5261CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5262BEGIN 5263SET new.f_int1 = new.f_int1 + @max_row, 5264new.f_int2 = new.f_int2 - @max_row, 5265new.f_charbig = '####updated per update trigger####'; 5266END| 5267UPDATE t1 5268SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5269f_charbig = '####updated per update statement itself####'; 5270Warnings: 5271Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5272 5273# check trigger-10 success: 1 5274DROP TRIGGER trg_2; 5275UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5276f_int2 = CAST(f_char1 AS SIGNED INT), 5277f_charbig = CONCAT('===',f_char1,'==='); 5278Warnings: 5279Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5280CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5281BEGIN 5282SET new.f_int1 = @my_max1 + @counter, 5283new.f_int2 = @my_min2 - @counter, 5284new.f_charbig = '####updated per insert trigger####'; 5285SET @counter = @counter + 1; 5286END| 5287SET @counter = 1; 5288SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5289Warnings: 5290Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5291INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5292SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5293CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5295ORDER BY f_int1; 5296DROP TRIGGER trg_3; 5297 5298# check trigger-11 success: 1 5299Warnings: 5300Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5301DELETE FROM t1 5302WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5303AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5304AND f_charbig = '####updated per insert trigger####'; 5305CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5306BEGIN 5307SET new.f_int1 = @my_max1 + @counter, 5308new.f_int2 = @my_min2 - @counter, 5309new.f_charbig = '####updated per insert trigger####'; 5310SET @counter = @counter + 1; 5311END| 5312SET @counter = 1; 5313SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5314Warnings: 5315Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5316INSERT INTO t1 (f_char1, f_char2, f_charbig) 5317SELECT CAST(f_int1 AS CHAR), 5318CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5320ORDER BY f_int1; 5321DROP TRIGGER trg_3; 5322 5323# check trigger-12 success: 1 5324Warnings: 5325Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5326DELETE FROM t1 5327WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5328AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5329AND f_charbig = '####updated per insert trigger####'; 5330ANALYZE TABLE t1; 5331Table Op Msg_type Msg_text 5332test.t1 analyze status OK 5333test.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. 5334CHECK TABLE t1 EXTENDED; 5335Table Op Msg_type Msg_text 5336test.t1 check status OK 5337test.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. 5338CHECKSUM TABLE t1 EXTENDED; 5339Table Checksum 5340test.t1 <some_value> 5341OPTIMIZE TABLE t1; 5342Table Op Msg_type Msg_text 5343test.t1 optimize status OK 5344test.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. 5345# check layout success: 1 5346REPAIR TABLE t1 EXTENDED; 5347Table Op Msg_type Msg_text 5348test.t1 repair status OK 5349test.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. 5350# check layout success: 1 5351TRUNCATE t1; 5352Warnings: 5353Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5354 5355# check TRUNCATE success: 1 5356# check layout success: 1 5357# End usability test (inc/partition_check.inc) 5358DROP TABLE t1; 5359CREATE TABLE t1 ( 5360f_int1 INTEGER, 5361f_int2 INTEGER, 5362f_char1 CHAR(20), 5363f_char2 CHAR(20), 5364f_charbig VARCHAR(1000) 5365 5366) 5367PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 5368(PARTITION part_3 VALUES IN (-3) 5369DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5370PARTITION part_2 VALUES IN (-2) 5371DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5372PARTITION part_1 VALUES IN (-1) 5373DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5374PARTITION part_N VALUES IN (NULL) 5375DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5376PARTITION part0 VALUES IN (0) 5377DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5378PARTITION part1 VALUES IN (1) 5379DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5380PARTITION part2 VALUES IN (2) 5381DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5382PARTITION part3 VALUES IN (3) 5383DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 5384Warnings: 5385Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5386INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5387SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 5388Warnings: 5389Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5390# Start usability test (inc/partition_check.inc) 5391create_command 5392SHOW CREATE TABLE t1; 5393Table Create Table 5394t1 CREATE TABLE `t1` ( 5395 `f_int1` int(11) DEFAULT NULL, 5396 `f_int2` int(11) DEFAULT NULL, 5397 `f_char1` char(20) DEFAULT NULL, 5398 `f_char2` char(20) DEFAULT NULL, 5399 `f_charbig` varchar(1000) DEFAULT NULL 5400) ENGINE=MyISAM DEFAULT CHARSET=latin1 5401/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 5402(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5403 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5404 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5405 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5406 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5407 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5408 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5409 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 5410 5411unified filelist 5412t1#P#part0.MYD 5413t1#P#part0.MYI 5414t1#P#part1.MYD 5415t1#P#part1.MYI 5416t1#P#part2.MYD 5417t1#P#part2.MYI 5418t1#P#part3.MYD 5419t1#P#part3.MYI 5420t1#P#part_1.MYD 5421t1#P#part_1.MYI 5422t1#P#part_2.MYD 5423t1#P#part_2.MYI 5424t1#P#part_3.MYD 5425t1#P#part_3.MYI 5426t1#P#part_N.MYD 5427t1#P#part_N.MYI 5428t1.frm 5429t1.par 5430t1#P#part0.MYD 5431t1#P#part1.MYD 5432t1#P#part2.MYD 5433t1#P#part3.MYD 5434t1#P#part_1.MYD 5435t1#P#part_2.MYD 5436t1#P#part_3.MYD 5437t1#P#part_N.MYD 5438t1#P#part0.MYI 5439t1#P#part1.MYI 5440t1#P#part2.MYI 5441t1#P#part3.MYI 5442t1#P#part_1.MYI 5443t1#P#part_2.MYI 5444t1#P#part_3.MYI 5445t1#P#part_N.MYI 5446 5447# check prerequisites-1 success: 1 5448# check COUNT(*) success: 1 5449# check MIN/MAX(f_int1) success: 1 5450# check MIN/MAX(f_int2) success: 1 5451INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5452SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5453CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5454WHERE f_int1 IN (2,3); 5455# check prerequisites-3 success: 1 5456DELETE FROM t1 WHERE f_charbig = 'delete me'; 5457# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 5458# check read via f_int1 success: 1 5459# check read via f_int2 success: 1 5460 5461# check multiple-1 success: 1 5462DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5463 5464# check multiple-2 success: 1 5465INSERT INTO t1 SELECT * FROM t0_template 5466WHERE MOD(f_int1,3) = 0; 5467 5468# check multiple-3 success: 1 5469UPDATE t1 SET f_int1 = f_int1 + @max_row 5470WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5471AND @max_row_div2 + @max_row_div4; 5472 5473# check multiple-4 success: 1 5474DELETE FROM t1 5475WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5476AND @max_row_div2 + @max_row_div4 + @max_row; 5477 5478# check multiple-5 success: 1 5479SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5480INSERT INTO t1 5481SET f_int1 = @cur_value , f_int2 = @cur_value, 5482f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5483f_charbig = '#SINGLE#'; 5484 5485# check single-1 success: 1 5486SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5487INSERT INTO t1 5488SET f_int1 = @cur_value , f_int2 = @cur_value, 5489f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5490f_charbig = '#SINGLE#'; 5491 5492# check single-2 success: 1 5493SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5494SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5495UPDATE t1 SET f_int1 = @cur_value2 5496WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5497 5498# check single-3 success: 1 5499SET @cur_value1= -1; 5500SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5501UPDATE t1 SET f_int1 = @cur_value1 5502WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5503 5504# check single-4 success: 1 5505SELECT MAX(f_int1) INTO @cur_value FROM t1; 5506DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5507 5508# check single-5 success: 1 5509DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5510 5511# check single-6 success: 1 5512INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5513 5514# check single-7 success: 1 5515DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 5516DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5517INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5518f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5519f_charbig = '#NULL#'; 5520INSERT INTO t1 5521SET f_int1 = NULL , f_int2 = -@max_row, 5522f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5523f_charbig = '#NULL#'; 5524# check null success: 1 5525 5526# check null-1 success: 1 5527UPDATE t1 SET f_int1 = -@max_row 5528WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5529AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5530 5531# check null-2 success: 1 5532UPDATE t1 SET f_int1 = NULL 5533WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5534AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5535 5536# check null-3 success: 1 5537DELETE FROM t1 5538WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 5539AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 5540 5541# check null-4 success: 1 5542DELETE FROM t1 5543WHERE f_int1 = 0 AND f_int2 = 0 5544AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5545AND f_charbig = '#NULL#'; 5546SET AUTOCOMMIT= 0; 5547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5548SELECT f_int1, f_int1, '', '', 'was inserted' 5549FROM t0_template source_tab 5550WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5551 5552# check transactions-1 success: 1 5553COMMIT WORK; 5554 5555# check transactions-2 success: 1 5556ROLLBACK WORK; 5557 5558# check transactions-3 success: 1 5559DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5560COMMIT WORK; 5561ROLLBACK WORK; 5562 5563# check transactions-4 success: 1 5564INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5565SELECT f_int1, f_int1, '', '', 'was inserted' 5566FROM t0_template source_tab 5567WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5568 5569# check transactions-5 success: 1 5570ROLLBACK WORK; 5571Warnings: 5572Warning 1196 Some non-transactional changed tables couldn't be rolled back 5573 5574# check transactions-6 success: 1 5575# INFO: Storage engine used for t1 seems to be not transactional. 5576COMMIT; 5577 5578# check transactions-7 success: 1 5579DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5580COMMIT WORK; 5581SET @@session.sql_mode = 'traditional'; 5582Warnings: 5583Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5584SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5585INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5586SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5587'', '', 'was inserted' FROM t0_template 5588WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5589ERROR 22012: Division by 0 5590COMMIT; 5591 5592# check transactions-8 success: 1 5593# INFO: Storage engine used for t1 seems to be unable to revert 5594# changes made by the failing statement. 5595SET @@session.sql_mode = ''; 5596Warnings: 5597Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5598SET AUTOCOMMIT= 1; 5599DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5600COMMIT WORK; 5601UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5602 5603# check special-1 success: 1 5604UPDATE t1 SET f_charbig = ''; 5605 5606# check special-2 success: 1 5607UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5608INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5609SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5610WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5612SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5613'just inserted' FROM t0_template 5614WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5615CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5616BEGIN 5617UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5618f_charbig = 'updated by trigger' 5619 WHERE f_int1 = new.f_int1; 5620END| 5621INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5622SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5624 5625# check trigger-1 success: 1 5626DROP TRIGGER trg_1; 5627UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5628f_int2 = CAST(f_char1 AS SIGNED INT), 5629f_charbig = 'just inserted' 5630 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5631DELETE FROM t0_aux 5632WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5633INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5634SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5635'just inserted' FROM t0_template 5636WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5637CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5638BEGIN 5639UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5640f_charbig = 'updated by trigger' 5641 WHERE f_int1 = new.f_int1; 5642END| 5643INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5644SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5645WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5646 5647# check trigger-2 success: 1 5648DROP TRIGGER trg_1; 5649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5650f_int2 = CAST(f_char1 AS SIGNED INT), 5651f_charbig = 'just inserted' 5652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5653DELETE FROM t0_aux 5654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5657'just inserted' FROM t0_template 5658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5659CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5660BEGIN 5661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5662f_charbig = 'updated by trigger' 5663 WHERE f_int1 = new.f_int1; 5664END| 5665UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5667 5668# check trigger-3 success: 1 5669DROP TRIGGER trg_1; 5670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5671f_int2 = CAST(f_char1 AS SIGNED INT), 5672f_charbig = 'just inserted' 5673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5674DELETE FROM t0_aux 5675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5676INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5677SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5678'just inserted' FROM t0_template 5679WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5680CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5681BEGIN 5682UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5683f_charbig = 'updated by trigger' 5684 WHERE f_int1 = - old.f_int1; 5685END| 5686UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5687WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5688 5689# check trigger-4 success: 1 5690DROP TRIGGER trg_1; 5691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5692f_int2 = CAST(f_char1 AS SIGNED INT), 5693f_charbig = 'just inserted' 5694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5695DELETE FROM t0_aux 5696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5699'just inserted' FROM t0_template 5700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5701CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5702BEGIN 5703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5704f_charbig = 'updated by trigger' 5705 WHERE f_int1 = new.f_int1; 5706END| 5707UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5708WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5709 5710# check trigger-5 success: 1 5711DROP TRIGGER trg_1; 5712UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5713f_int2 = CAST(f_char1 AS SIGNED INT), 5714f_charbig = 'just inserted' 5715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5716DELETE FROM t0_aux 5717WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5718INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5719SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5720'just inserted' FROM t0_template 5721WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5722CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5723BEGIN 5724UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5725f_charbig = 'updated by trigger' 5726 WHERE f_int1 = - old.f_int1; 5727END| 5728UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5729WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5730 5731# check trigger-6 success: 1 5732DROP TRIGGER trg_1; 5733UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5734f_int2 = CAST(f_char1 AS SIGNED INT), 5735f_charbig = 'just inserted' 5736 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5737DELETE FROM t0_aux 5738WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5739INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5740SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5741'just inserted' FROM t0_template 5742WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5743CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5744BEGIN 5745UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5746f_charbig = 'updated by trigger' 5747 WHERE f_int1 = - old.f_int1; 5748END| 5749DELETE FROM t0_aux 5750WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5751 5752# check trigger-7 success: 1 5753DROP TRIGGER trg_1; 5754UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5755f_int2 = CAST(f_char1 AS SIGNED INT), 5756f_charbig = 'just inserted' 5757 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5758DELETE FROM t0_aux 5759WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5760INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5761SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5762'just inserted' FROM t0_template 5763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5764CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5765BEGIN 5766UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5767f_charbig = 'updated by trigger' 5768 WHERE f_int1 = - old.f_int1; 5769END| 5770DELETE FROM t0_aux 5771WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5772 5773# check trigger-8 success: 1 5774DROP TRIGGER trg_1; 5775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5776f_int2 = CAST(f_char1 AS SIGNED INT), 5777f_charbig = 'just inserted' 5778 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5779DELETE FROM t0_aux 5780WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5781DELETE FROM t1 5782WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5783CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5784BEGIN 5785SET new.f_int1 = old.f_int1 + @max_row, 5786new.f_int2 = old.f_int2 - @max_row, 5787new.f_charbig = '####updated per update trigger####'; 5788END| 5789UPDATE t1 5790SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5791f_charbig = '####updated per update statement itself####'; 5792Warnings: 5793Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5794 5795# check trigger-9 success: 1 5796DROP TRIGGER trg_2; 5797UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5798f_int2 = CAST(f_char1 AS SIGNED INT), 5799f_charbig = CONCAT('===',f_char1,'==='); 5800Warnings: 5801Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5802CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5803BEGIN 5804SET new.f_int1 = new.f_int1 + @max_row, 5805new.f_int2 = new.f_int2 - @max_row, 5806new.f_charbig = '####updated per update trigger####'; 5807END| 5808UPDATE t1 5809SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5810f_charbig = '####updated per update statement itself####'; 5811Warnings: 5812Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5813 5814# check trigger-10 success: 1 5815DROP TRIGGER trg_2; 5816UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5817f_int2 = CAST(f_char1 AS SIGNED INT), 5818f_charbig = CONCAT('===',f_char1,'==='); 5819Warnings: 5820Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5821CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5822BEGIN 5823SET new.f_int1 = @my_max1 + @counter, 5824new.f_int2 = @my_min2 - @counter, 5825new.f_charbig = '####updated per insert trigger####'; 5826SET @counter = @counter + 1; 5827END| 5828SET @counter = 1; 5829SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5830Warnings: 5831Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5832INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5833SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5834CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5836ORDER BY f_int1; 5837DROP TRIGGER trg_3; 5838 5839# check trigger-11 success: 1 5840Warnings: 5841Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5842DELETE FROM t1 5843WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5844AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5845AND f_charbig = '####updated per insert trigger####'; 5846CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5847BEGIN 5848SET new.f_int1 = @my_max1 + @counter, 5849new.f_int2 = @my_min2 - @counter, 5850new.f_charbig = '####updated per insert trigger####'; 5851SET @counter = @counter + 1; 5852END| 5853SET @counter = 1; 5854SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5855Warnings: 5856Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5857INSERT INTO t1 (f_char1, f_char2, f_charbig) 5858SELECT CAST(f_int1 AS CHAR), 5859CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5861ORDER BY f_int1; 5862DROP TRIGGER trg_3; 5863 5864# check trigger-12 success: 1 5865Warnings: 5866Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5867DELETE FROM t1 5868WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5869AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5870AND f_charbig = '####updated per insert trigger####'; 5871ANALYZE TABLE t1; 5872Table Op Msg_type Msg_text 5873test.t1 analyze status OK 5874test.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. 5875CHECK TABLE t1 EXTENDED; 5876Table Op Msg_type Msg_text 5877test.t1 check status OK 5878test.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. 5879CHECKSUM TABLE t1 EXTENDED; 5880Table Checksum 5881test.t1 <some_value> 5882OPTIMIZE TABLE t1; 5883Table Op Msg_type Msg_text 5884test.t1 optimize status OK 5885test.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. 5886# check layout success: 1 5887REPAIR TABLE t1 EXTENDED; 5888Table Op Msg_type Msg_text 5889test.t1 repair status OK 5890test.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. 5891# check layout success: 1 5892TRUNCATE t1; 5893Warnings: 5894Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5895 5896# check TRUNCATE success: 1 5897# check layout success: 1 5898# End usability test (inc/partition_check.inc) 5899DROP TABLE t1; 5900CREATE TABLE t1 ( 5901f_int1 INTEGER, 5902f_int2 INTEGER, 5903f_char1 CHAR(20), 5904f_char2 CHAR(20), 5905f_charbig VARCHAR(1000) 5906 5907) 5908PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 5909(PARTITION parta VALUES LESS THAN (0) 5910DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5911INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5912PARTITION partb VALUES LESS THAN (5) 5913DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5914INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5915PARTITION partc VALUES LESS THAN (10) 5916DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5917INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5918PARTITION partd VALUES LESS THAN (10 + 5) 5919DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5920INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5921PARTITION parte VALUES LESS THAN (20) 5922DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5923INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 5924PARTITION partf VALUES LESS THAN (2147483646) 5925DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 5926INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 5927Warnings: 5928Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5929INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5930SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 5931Warnings: 5932Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 5933# Start usability test (inc/partition_check.inc) 5934create_command 5935SHOW CREATE TABLE t1; 5936Table Create Table 5937t1 CREATE TABLE `t1` ( 5938 `f_int1` int(11) DEFAULT NULL, 5939 `f_int2` int(11) DEFAULT NULL, 5940 `f_char1` char(20) DEFAULT NULL, 5941 `f_char2` char(20) DEFAULT NULL, 5942 `f_charbig` varchar(1000) DEFAULT NULL 5943) ENGINE=MyISAM DEFAULT CHARSET=latin1 5944/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 5945(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5946 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5947 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5948 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5949 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 5950 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 5951 5952unified filelist 5953t1#P#parta.MYD 5954t1#P#parta.MYI 5955t1#P#partb.MYD 5956t1#P#partb.MYI 5957t1#P#partc.MYD 5958t1#P#partc.MYI 5959t1#P#partd.MYD 5960t1#P#partd.MYI 5961t1#P#parte.MYD 5962t1#P#parte.MYI 5963t1#P#partf.MYD 5964t1#P#partf.MYI 5965t1.frm 5966t1.par 5967t1#P#parta.MYD 5968t1#P#partb.MYD 5969t1#P#partc.MYD 5970t1#P#partd.MYD 5971t1#P#parte.MYD 5972t1#P#partf.MYD 5973t1#P#parta.MYI 5974t1#P#partb.MYI 5975t1#P#partc.MYI 5976t1#P#partd.MYI 5977t1#P#parte.MYI 5978t1#P#partf.MYI 5979 5980# check prerequisites-1 success: 1 5981# check COUNT(*) success: 1 5982# check MIN/MAX(f_int1) success: 1 5983# check MIN/MAX(f_int2) success: 1 5984INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5985SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5986CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5987WHERE f_int1 IN (2,3); 5988# check prerequisites-3 success: 1 5989DELETE FROM t1 WHERE f_charbig = 'delete me'; 5990# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 5991# check read via f_int1 success: 1 5992# check read via f_int2 success: 1 5993 5994# check multiple-1 success: 1 5995DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5996 5997# check multiple-2 success: 1 5998INSERT INTO t1 SELECT * FROM t0_template 5999WHERE MOD(f_int1,3) = 0; 6000 6001# check multiple-3 success: 1 6002UPDATE t1 SET f_int1 = f_int1 + @max_row 6003WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6004AND @max_row_div2 + @max_row_div4; 6005 6006# check multiple-4 success: 1 6007DELETE FROM t1 6008WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6009AND @max_row_div2 + @max_row_div4 + @max_row; 6010 6011# check multiple-5 success: 1 6012SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6013INSERT INTO t1 6014SET f_int1 = @cur_value , f_int2 = @cur_value, 6015f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6016f_charbig = '#SINGLE#'; 6017 6018# check single-1 success: 1 6019SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6020INSERT INTO t1 6021SET f_int1 = @cur_value , f_int2 = @cur_value, 6022f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6023f_charbig = '#SINGLE#'; 6024 6025# check single-2 success: 1 6026SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6027SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6028UPDATE t1 SET f_int1 = @cur_value2 6029WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6030 6031# check single-3 success: 1 6032SET @cur_value1= -1; 6033SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6034UPDATE t1 SET f_int1 = @cur_value1 6035WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6036 6037# check single-4 success: 1 6038SELECT MAX(f_int1) INTO @cur_value FROM t1; 6039DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6040 6041# check single-5 success: 1 6042DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6043 6044# check single-6 success: 1 6045INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6046ERROR HY000: Table has no partition for value 2147483647 6047DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6048INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6049f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6050f_charbig = '#NULL#'; 6051INSERT INTO t1 6052SET f_int1 = NULL , f_int2 = -@max_row, 6053f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6054f_charbig = '#NULL#'; 6055# check null success: 1 6056 6057# check null-1 success: 1 6058UPDATE t1 SET f_int1 = -@max_row 6059WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6060AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6061 6062# check null-2 success: 1 6063UPDATE t1 SET f_int1 = NULL 6064WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6065AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6066 6067# check null-3 success: 1 6068DELETE FROM t1 6069WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6070AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6071 6072# check null-4 success: 1 6073DELETE FROM t1 6074WHERE f_int1 = 0 AND f_int2 = 0 6075AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6076AND f_charbig = '#NULL#'; 6077SET AUTOCOMMIT= 0; 6078INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6079SELECT f_int1, f_int1, '', '', 'was inserted' 6080FROM t0_template source_tab 6081WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6082 6083# check transactions-1 success: 1 6084COMMIT WORK; 6085 6086# check transactions-2 success: 1 6087ROLLBACK WORK; 6088 6089# check transactions-3 success: 1 6090DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6091COMMIT WORK; 6092ROLLBACK WORK; 6093 6094# check transactions-4 success: 1 6095INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6096SELECT f_int1, f_int1, '', '', 'was inserted' 6097FROM t0_template source_tab 6098WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6099 6100# check transactions-5 success: 1 6101ROLLBACK WORK; 6102Warnings: 6103Warning 1196 Some non-transactional changed tables couldn't be rolled back 6104 6105# check transactions-6 success: 1 6106# INFO: Storage engine used for t1 seems to be not transactional. 6107COMMIT; 6108 6109# check transactions-7 success: 1 6110DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6111COMMIT WORK; 6112SET @@session.sql_mode = 'traditional'; 6113Warnings: 6114Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6115SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6116INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6117SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6118'', '', 'was inserted' FROM t0_template 6119WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6120ERROR 22012: Division by 0 6121COMMIT; 6122 6123# check transactions-8 success: 1 6124# INFO: Storage engine used for t1 seems to be unable to revert 6125# changes made by the failing statement. 6126SET @@session.sql_mode = ''; 6127Warnings: 6128Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6129SET AUTOCOMMIT= 1; 6130DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6131COMMIT WORK; 6132UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6133 6134# check special-1 success: 1 6135UPDATE t1 SET f_charbig = ''; 6136 6137# check special-2 success: 1 6138UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6139INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6140SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6141WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6142INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6143SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6144'just inserted' FROM t0_template 6145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6146CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6147BEGIN 6148UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6149f_charbig = 'updated by trigger' 6150 WHERE f_int1 = new.f_int1; 6151END| 6152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6153SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6154WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6155 6156# check trigger-1 success: 1 6157DROP TRIGGER trg_1; 6158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6159f_int2 = CAST(f_char1 AS SIGNED INT), 6160f_charbig = 'just inserted' 6161 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6162DELETE FROM t0_aux 6163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6164INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6165SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6166'just inserted' FROM t0_template 6167WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6168CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6169BEGIN 6170UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6171f_charbig = 'updated by trigger' 6172 WHERE f_int1 = new.f_int1; 6173END| 6174INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6175SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6177 6178# check trigger-2 success: 1 6179DROP TRIGGER trg_1; 6180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6181f_int2 = CAST(f_char1 AS SIGNED INT), 6182f_charbig = 'just inserted' 6183 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6184DELETE FROM t0_aux 6185WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6186INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6187SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6188'just inserted' FROM t0_template 6189WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6190CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6191BEGIN 6192UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6193f_charbig = 'updated by trigger' 6194 WHERE f_int1 = new.f_int1; 6195END| 6196UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6197WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6198 6199# check trigger-3 success: 1 6200DROP TRIGGER trg_1; 6201UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6202f_int2 = CAST(f_char1 AS SIGNED INT), 6203f_charbig = 'just inserted' 6204 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6205DELETE FROM t0_aux 6206WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6208SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6209'just inserted' FROM t0_template 6210WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6211CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6212BEGIN 6213UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6214f_charbig = 'updated by trigger' 6215 WHERE f_int1 = - old.f_int1; 6216END| 6217UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6218WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6219 6220# check trigger-4 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 AFTER 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-5 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 AFTER 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-6 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 BEFORE DELETE 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 = - old.f_int1; 6279END| 6280DELETE FROM t0_aux 6281WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6282 6283# check trigger-7 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 DELETE 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| 6301DELETE FROM t0_aux 6302WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6303 6304# check trigger-8 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; 6312DELETE FROM t1 6313WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6314CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6315BEGIN 6316SET new.f_int1 = old.f_int1 + @max_row, 6317new.f_int2 = old.f_int2 - @max_row, 6318new.f_charbig = '####updated per update trigger####'; 6319END| 6320UPDATE t1 6321SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6322f_charbig = '####updated per update statement itself####'; 6323Warnings: 6324Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6325 6326# check trigger-9 success: 1 6327DROP TRIGGER trg_2; 6328UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6329f_int2 = CAST(f_char1 AS SIGNED INT), 6330f_charbig = CONCAT('===',f_char1,'==='); 6331Warnings: 6332Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6333CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6334BEGIN 6335SET new.f_int1 = new.f_int1 + @max_row, 6336new.f_int2 = new.f_int2 - @max_row, 6337new.f_charbig = '####updated per update trigger####'; 6338END| 6339UPDATE t1 6340SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6341f_charbig = '####updated per update statement itself####'; 6342Warnings: 6343Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6344 6345# check trigger-10 success: 1 6346DROP TRIGGER trg_2; 6347UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6348f_int2 = CAST(f_char1 AS SIGNED INT), 6349f_charbig = CONCAT('===',f_char1,'==='); 6350Warnings: 6351Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6352CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6353BEGIN 6354SET new.f_int1 = @my_max1 + @counter, 6355new.f_int2 = @my_min2 - @counter, 6356new.f_charbig = '####updated per insert trigger####'; 6357SET @counter = @counter + 1; 6358END| 6359SET @counter = 1; 6360SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6361Warnings: 6362Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6364SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6365CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6367ORDER BY f_int1; 6368DROP TRIGGER trg_3; 6369 6370# check trigger-11 success: 1 6371Warnings: 6372Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6373DELETE FROM t1 6374WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6375AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6376AND f_charbig = '####updated per insert trigger####'; 6377CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6378BEGIN 6379SET new.f_int1 = @my_max1 + @counter, 6380new.f_int2 = @my_min2 - @counter, 6381new.f_charbig = '####updated per insert trigger####'; 6382SET @counter = @counter + 1; 6383END| 6384SET @counter = 1; 6385SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6386Warnings: 6387Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6388INSERT INTO t1 (f_char1, f_char2, f_charbig) 6389SELECT CAST(f_int1 AS CHAR), 6390CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6391WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6392ORDER BY f_int1; 6393DROP TRIGGER trg_3; 6394 6395# check trigger-12 success: 1 6396Warnings: 6397Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6398DELETE FROM t1 6399WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6400AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6401AND f_charbig = '####updated per insert trigger####'; 6402ANALYZE TABLE t1; 6403Table Op Msg_type Msg_text 6404test.t1 analyze status OK 6405test.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. 6406CHECK TABLE t1 EXTENDED; 6407Table Op Msg_type Msg_text 6408test.t1 check status OK 6409test.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. 6410CHECKSUM TABLE t1 EXTENDED; 6411Table Checksum 6412test.t1 <some_value> 6413OPTIMIZE TABLE t1; 6414Table Op Msg_type Msg_text 6415test.t1 optimize status OK 6416test.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. 6417# check layout success: 1 6418REPAIR TABLE t1 EXTENDED; 6419Table Op Msg_type Msg_text 6420test.t1 repair status OK 6421test.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. 6422# check layout success: 1 6423TRUNCATE t1; 6424Warnings: 6425Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6426 6427# check TRUNCATE success: 1 6428# check layout success: 1 6429# End usability test (inc/partition_check.inc) 6430DROP TABLE t1; 6431CREATE TABLE t1 ( 6432f_int1 INTEGER, 6433f_int2 INTEGER, 6434f_char1 CHAR(20), 6435f_char2 CHAR(20), 6436f_charbig VARCHAR(1000) 6437 6438) 6439PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 6440(PARTITION parta VALUES LESS THAN (0) 6441DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 6442INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6443PARTITION partb VALUES LESS THAN (5) 6444DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 6445INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6446PARTITION partc VALUES LESS THAN (10) 6447DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 6448INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6449PARTITION partd VALUES LESS THAN (2147483646) 6450DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 6451INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 6452Warnings: 6453Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6454INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6455SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 6456Warnings: 6457Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6458# Start usability test (inc/partition_check.inc) 6459create_command 6460SHOW CREATE TABLE t1; 6461Table Create Table 6462t1 CREATE TABLE `t1` ( 6463 `f_int1` int(11) DEFAULT NULL, 6464 `f_int2` int(11) DEFAULT NULL, 6465 `f_char1` char(20) DEFAULT NULL, 6466 `f_char2` char(20) DEFAULT NULL, 6467 `f_charbig` varchar(1000) DEFAULT NULL 6468) ENGINE=MyISAM DEFAULT CHARSET=latin1 6469/*!50100 PARTITION BY RANGE (f_int1) 6470SUBPARTITION BY HASH (f_int2) 6471SUBPARTITIONS 2 6472(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 6473 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 6474 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 6475 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 6476 6477unified filelist 6478t1#P#parta#SP#partasp0.MYD 6479t1#P#parta#SP#partasp0.MYI 6480t1#P#parta#SP#partasp1.MYD 6481t1#P#parta#SP#partasp1.MYI 6482t1#P#partb#SP#partbsp0.MYD 6483t1#P#partb#SP#partbsp0.MYI 6484t1#P#partb#SP#partbsp1.MYD 6485t1#P#partb#SP#partbsp1.MYI 6486t1#P#partc#SP#partcsp0.MYD 6487t1#P#partc#SP#partcsp0.MYI 6488t1#P#partc#SP#partcsp1.MYD 6489t1#P#partc#SP#partcsp1.MYI 6490t1#P#partd#SP#partdsp0.MYD 6491t1#P#partd#SP#partdsp0.MYI 6492t1#P#partd#SP#partdsp1.MYD 6493t1#P#partd#SP#partdsp1.MYI 6494t1.frm 6495t1.par 6496t1#P#parta#SP#partasp0.MYD 6497t1#P#parta#SP#partasp1.MYD 6498t1#P#partb#SP#partbsp0.MYD 6499t1#P#partb#SP#partbsp1.MYD 6500t1#P#partc#SP#partcsp0.MYD 6501t1#P#partc#SP#partcsp1.MYD 6502t1#P#partd#SP#partdsp0.MYD 6503t1#P#partd#SP#partdsp1.MYD 6504t1#P#parta#SP#partasp0.MYI 6505t1#P#parta#SP#partasp1.MYI 6506t1#P#partb#SP#partbsp0.MYI 6507t1#P#partb#SP#partbsp1.MYI 6508t1#P#partc#SP#partcsp0.MYI 6509t1#P#partc#SP#partcsp1.MYI 6510t1#P#partd#SP#partdsp0.MYI 6511t1#P#partd#SP#partdsp1.MYI 6512 6513# check prerequisites-1 success: 1 6514# check COUNT(*) success: 1 6515# check MIN/MAX(f_int1) success: 1 6516# check MIN/MAX(f_int2) success: 1 6517INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6518SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6519CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6520WHERE f_int1 IN (2,3); 6521# check prerequisites-3 success: 1 6522DELETE FROM t1 WHERE f_charbig = 'delete me'; 6523# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 6524# check read via f_int1 success: 1 6525# check read via f_int2 success: 1 6526 6527# check multiple-1 success: 1 6528DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6529 6530# check multiple-2 success: 1 6531INSERT INTO t1 SELECT * FROM t0_template 6532WHERE MOD(f_int1,3) = 0; 6533 6534# check multiple-3 success: 1 6535UPDATE t1 SET f_int1 = f_int1 + @max_row 6536WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6537AND @max_row_div2 + @max_row_div4; 6538 6539# check multiple-4 success: 1 6540DELETE FROM t1 6541WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6542AND @max_row_div2 + @max_row_div4 + @max_row; 6543 6544# check multiple-5 success: 1 6545SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6546INSERT INTO t1 6547SET f_int1 = @cur_value , f_int2 = @cur_value, 6548f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6549f_charbig = '#SINGLE#'; 6550 6551# check single-1 success: 1 6552SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6553INSERT INTO t1 6554SET f_int1 = @cur_value , f_int2 = @cur_value, 6555f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6556f_charbig = '#SINGLE#'; 6557 6558# check single-2 success: 1 6559SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6560SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6561UPDATE t1 SET f_int1 = @cur_value2 6562WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6563 6564# check single-3 success: 1 6565SET @cur_value1= -1; 6566SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6567UPDATE t1 SET f_int1 = @cur_value1 6568WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6569 6570# check single-4 success: 1 6571SELECT MAX(f_int1) INTO @cur_value FROM t1; 6572DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6573 6574# check single-5 success: 1 6575DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6576 6577# check single-6 success: 1 6578INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6579ERROR HY000: Table has no partition for value 2147483647 6580DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6581INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6582f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6583f_charbig = '#NULL#'; 6584INSERT INTO t1 6585SET f_int1 = NULL , f_int2 = -@max_row, 6586f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6587f_charbig = '#NULL#'; 6588# check null success: 1 6589 6590# check null-1 success: 1 6591UPDATE t1 SET f_int1 = -@max_row 6592WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6593AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6594 6595# check null-2 success: 1 6596UPDATE t1 SET f_int1 = NULL 6597WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6598AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6599 6600# check null-3 success: 1 6601DELETE FROM t1 6602WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 6603AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 6604 6605# check null-4 success: 1 6606DELETE FROM t1 6607WHERE f_int1 = 0 AND f_int2 = 0 6608AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6609AND f_charbig = '#NULL#'; 6610SET AUTOCOMMIT= 0; 6611INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6612SELECT f_int1, f_int1, '', '', 'was inserted' 6613FROM t0_template source_tab 6614WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6615 6616# check transactions-1 success: 1 6617COMMIT WORK; 6618 6619# check transactions-2 success: 1 6620ROLLBACK WORK; 6621 6622# check transactions-3 success: 1 6623DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6624COMMIT WORK; 6625ROLLBACK WORK; 6626 6627# check transactions-4 success: 1 6628INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6629SELECT f_int1, f_int1, '', '', 'was inserted' 6630FROM t0_template source_tab 6631WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6632 6633# check transactions-5 success: 1 6634ROLLBACK WORK; 6635Warnings: 6636Warning 1196 Some non-transactional changed tables couldn't be rolled back 6637 6638# check transactions-6 success: 1 6639# INFO: Storage engine used for t1 seems to be not transactional. 6640COMMIT; 6641 6642# check transactions-7 success: 1 6643DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6644COMMIT WORK; 6645SET @@session.sql_mode = 'traditional'; 6646Warnings: 6647Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6648SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6650SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6651'', '', 'was inserted' FROM t0_template 6652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6653ERROR 22012: Division by 0 6654COMMIT; 6655 6656# check transactions-8 success: 1 6657# INFO: Storage engine used for t1 seems to be unable to revert 6658# changes made by the failing statement. 6659SET @@session.sql_mode = ''; 6660Warnings: 6661Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6662SET AUTOCOMMIT= 1; 6663DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6664COMMIT WORK; 6665UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6666 6667# check special-1 success: 1 6668UPDATE t1 SET f_charbig = ''; 6669 6670# check special-2 success: 1 6671UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6672INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6673SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6675INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6676SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6677'just inserted' FROM t0_template 6678WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6679CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6680BEGIN 6681UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6682f_charbig = 'updated by trigger' 6683 WHERE f_int1 = new.f_int1; 6684END| 6685INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6686SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6688 6689# check trigger-1 success: 1 6690DROP TRIGGER trg_1; 6691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6692f_int2 = CAST(f_char1 AS SIGNED INT), 6693f_charbig = 'just inserted' 6694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6695DELETE FROM t0_aux 6696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6699'just inserted' FROM t0_template 6700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6701CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6702BEGIN 6703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6704f_charbig = 'updated by trigger' 6705 WHERE f_int1 = new.f_int1; 6706END| 6707INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6708SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6709WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6710 6711# check trigger-2 success: 1 6712DROP TRIGGER trg_1; 6713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6714f_int2 = CAST(f_char1 AS SIGNED INT), 6715f_charbig = 'just inserted' 6716 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6717DELETE FROM t0_aux 6718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6721'just inserted' FROM t0_template 6722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6723CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6724BEGIN 6725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6726f_charbig = 'updated by trigger' 6727 WHERE f_int1 = new.f_int1; 6728END| 6729UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6731 6732# check trigger-3 success: 1 6733DROP TRIGGER trg_1; 6734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6735f_int2 = CAST(f_char1 AS SIGNED INT), 6736f_charbig = 'just inserted' 6737 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6738DELETE FROM t0_aux 6739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6740INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6741SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6742'just inserted' FROM t0_template 6743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6744CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6745BEGIN 6746UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6747f_charbig = 'updated by trigger' 6748 WHERE f_int1 = - old.f_int1; 6749END| 6750UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6751WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6752 6753# check trigger-4 success: 1 6754DROP TRIGGER trg_1; 6755UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6756f_int2 = CAST(f_char1 AS SIGNED INT), 6757f_charbig = 'just inserted' 6758 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6759DELETE FROM t0_aux 6760WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6761INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6762SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6763'just inserted' FROM t0_template 6764WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6765CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6766BEGIN 6767UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6768f_charbig = 'updated by trigger' 6769 WHERE f_int1 = new.f_int1; 6770END| 6771UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6772WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6773 6774# check trigger-5 success: 1 6775DROP TRIGGER trg_1; 6776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6777f_int2 = CAST(f_char1 AS SIGNED INT), 6778f_charbig = 'just inserted' 6779 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6780DELETE FROM t0_aux 6781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6782INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6783SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6784'just inserted' FROM t0_template 6785WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6786CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6787BEGIN 6788UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6789f_charbig = 'updated by trigger' 6790 WHERE f_int1 = - old.f_int1; 6791END| 6792UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6793WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6794 6795# check trigger-6 success: 1 6796DROP TRIGGER trg_1; 6797UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6798f_int2 = CAST(f_char1 AS SIGNED INT), 6799f_charbig = 'just inserted' 6800 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6801DELETE FROM t0_aux 6802WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6803INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6804SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6805'just inserted' FROM t0_template 6806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6807CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6808BEGIN 6809UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6810f_charbig = 'updated by trigger' 6811 WHERE f_int1 = - old.f_int1; 6812END| 6813DELETE FROM t0_aux 6814WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6815 6816# check trigger-7 success: 1 6817DROP TRIGGER trg_1; 6818UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6819f_int2 = CAST(f_char1 AS SIGNED INT), 6820f_charbig = 'just inserted' 6821 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6822DELETE FROM t0_aux 6823WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6824INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6825SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6826'just inserted' FROM t0_template 6827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6828CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6829BEGIN 6830UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6831f_charbig = 'updated by trigger' 6832 WHERE f_int1 = - old.f_int1; 6833END| 6834DELETE FROM t0_aux 6835WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6836 6837# check trigger-8 success: 1 6838DROP TRIGGER trg_1; 6839UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6840f_int2 = CAST(f_char1 AS SIGNED INT), 6841f_charbig = 'just inserted' 6842 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6843DELETE FROM t0_aux 6844WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6845DELETE FROM t1 6846WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6847CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6848BEGIN 6849SET new.f_int1 = old.f_int1 + @max_row, 6850new.f_int2 = old.f_int2 - @max_row, 6851new.f_charbig = '####updated per update trigger####'; 6852END| 6853UPDATE t1 6854SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6855f_charbig = '####updated per update statement itself####'; 6856Warnings: 6857Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6858 6859# check trigger-9 success: 1 6860DROP TRIGGER trg_2; 6861UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6862f_int2 = CAST(f_char1 AS SIGNED INT), 6863f_charbig = CONCAT('===',f_char1,'==='); 6864Warnings: 6865Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6866CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6867BEGIN 6868SET new.f_int1 = new.f_int1 + @max_row, 6869new.f_int2 = new.f_int2 - @max_row, 6870new.f_charbig = '####updated per update trigger####'; 6871END| 6872UPDATE t1 6873SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6874f_charbig = '####updated per update statement itself####'; 6875Warnings: 6876Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6877 6878# check trigger-10 success: 1 6879DROP TRIGGER trg_2; 6880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6881f_int2 = CAST(f_char1 AS SIGNED INT), 6882f_charbig = CONCAT('===',f_char1,'==='); 6883Warnings: 6884Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6885CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6886BEGIN 6887SET new.f_int1 = @my_max1 + @counter, 6888new.f_int2 = @my_min2 - @counter, 6889new.f_charbig = '####updated per insert trigger####'; 6890SET @counter = @counter + 1; 6891END| 6892SET @counter = 1; 6893SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6894Warnings: 6895Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6897SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6898CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6899WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6900ORDER BY f_int1; 6901DROP TRIGGER trg_3; 6902 6903# check trigger-11 success: 1 6904Warnings: 6905Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6906DELETE FROM t1 6907WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6908AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6909AND f_charbig = '####updated per insert trigger####'; 6910CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6911BEGIN 6912SET new.f_int1 = @my_max1 + @counter, 6913new.f_int2 = @my_min2 - @counter, 6914new.f_charbig = '####updated per insert trigger####'; 6915SET @counter = @counter + 1; 6916END| 6917SET @counter = 1; 6918SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6919Warnings: 6920Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6921INSERT INTO t1 (f_char1, f_char2, f_charbig) 6922SELECT CAST(f_int1 AS CHAR), 6923CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6924WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6925ORDER BY f_int1; 6926DROP TRIGGER trg_3; 6927 6928# check trigger-12 success: 1 6929Warnings: 6930Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6931DELETE FROM t1 6932WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6933AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6934AND f_charbig = '####updated per insert trigger####'; 6935ANALYZE TABLE t1; 6936Table Op Msg_type Msg_text 6937test.t1 analyze status OK 6938test.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. 6939CHECK TABLE t1 EXTENDED; 6940Table Op Msg_type Msg_text 6941test.t1 check status OK 6942test.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. 6943CHECKSUM TABLE t1 EXTENDED; 6944Table Checksum 6945test.t1 <some_value> 6946OPTIMIZE TABLE t1; 6947Table Op Msg_type Msg_text 6948test.t1 optimize status OK 6949test.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. 6950# check layout success: 1 6951REPAIR TABLE t1 EXTENDED; 6952Table Op Msg_type Msg_text 6953test.t1 repair status OK 6954test.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. 6955# check layout success: 1 6956TRUNCATE t1; 6957Warnings: 6958Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6959 6960# check TRUNCATE success: 1 6961# check layout success: 1 6962# End usability test (inc/partition_check.inc) 6963DROP TABLE t1; 6964CREATE TABLE t1 ( 6965f_int1 INTEGER, 6966f_int2 INTEGER, 6967f_char1 CHAR(20), 6968f_char2 CHAR(20), 6969f_charbig VARCHAR(1000) 6970 6971) 6972PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 6973(PARTITION part1 VALUES LESS THAN (0) 6974(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6975SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 6976PARTITION part2 VALUES LESS THAN (5) 6977(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6978SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 6979PARTITION part3 VALUES LESS THAN (10) 6980(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6981SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 6982PARTITION part4 VALUES LESS THAN (2147483646) 6983(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 6984SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 6985Warnings: 6986Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6987INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6988SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 6989Warnings: 6990Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 6991# Start usability test (inc/partition_check.inc) 6992create_command 6993SHOW CREATE TABLE t1; 6994Table Create Table 6995t1 CREATE TABLE `t1` ( 6996 `f_int1` int(11) DEFAULT NULL, 6997 `f_int2` int(11) DEFAULT NULL, 6998 `f_char1` char(20) DEFAULT NULL, 6999 `f_char2` char(20) DEFAULT NULL, 7000 `f_charbig` varchar(1000) DEFAULT NULL 7001) ENGINE=MyISAM DEFAULT CHARSET=latin1 7002/*!50100 PARTITION BY RANGE (f_int1) 7003SUBPARTITION BY KEY (f_int2) 7004(PARTITION part1 VALUES LESS THAN (0) 7005 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7006 SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7007 PARTITION part2 VALUES LESS THAN (5) 7008 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7009 SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7010 PARTITION part3 VALUES LESS THAN (10) 7011 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7012 SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7013 PARTITION part4 VALUES LESS THAN (2147483646) 7014 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7015 SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 7016 7017unified filelist 7018t1#P#part1#SP#subpart11.MYD 7019t1#P#part1#SP#subpart11.MYI 7020t1#P#part1#SP#subpart12.MYD 7021t1#P#part1#SP#subpart12.MYI 7022t1#P#part2#SP#subpart21.MYD 7023t1#P#part2#SP#subpart21.MYI 7024t1#P#part2#SP#subpart22.MYD 7025t1#P#part2#SP#subpart22.MYI 7026t1#P#part3#SP#subpart31.MYD 7027t1#P#part3#SP#subpart31.MYI 7028t1#P#part3#SP#subpart32.MYD 7029t1#P#part3#SP#subpart32.MYI 7030t1#P#part4#SP#subpart41.MYD 7031t1#P#part4#SP#subpart41.MYI 7032t1#P#part4#SP#subpart42.MYD 7033t1#P#part4#SP#subpart42.MYI 7034t1.frm 7035t1.par 7036t1#P#part1#SP#subpart11.MYD 7037t1#P#part1#SP#subpart12.MYD 7038t1#P#part2#SP#subpart21.MYD 7039t1#P#part2#SP#subpart22.MYD 7040t1#P#part3#SP#subpart31.MYD 7041t1#P#part3#SP#subpart32.MYD 7042t1#P#part4#SP#subpart41.MYD 7043t1#P#part4#SP#subpart42.MYD 7044t1#P#part1#SP#subpart11.MYI 7045t1#P#part1#SP#subpart12.MYI 7046t1#P#part2#SP#subpart21.MYI 7047t1#P#part2#SP#subpart22.MYI 7048t1#P#part3#SP#subpart31.MYI 7049t1#P#part3#SP#subpart32.MYI 7050t1#P#part4#SP#subpart41.MYI 7051t1#P#part4#SP#subpart42.MYI 7052 7053# check prerequisites-1 success: 1 7054# check COUNT(*) success: 1 7055# check MIN/MAX(f_int1) success: 1 7056# check MIN/MAX(f_int2) success: 1 7057INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7058SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7059CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7060WHERE f_int1 IN (2,3); 7061# check prerequisites-3 success: 1 7062DELETE FROM t1 WHERE f_charbig = 'delete me'; 7063# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 7064# check read via f_int1 success: 1 7065# check read via f_int2 success: 1 7066 7067# check multiple-1 success: 1 7068DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7069 7070# check multiple-2 success: 1 7071INSERT INTO t1 SELECT * FROM t0_template 7072WHERE MOD(f_int1,3) = 0; 7073 7074# check multiple-3 success: 1 7075UPDATE t1 SET f_int1 = f_int1 + @max_row 7076WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7077AND @max_row_div2 + @max_row_div4; 7078 7079# check multiple-4 success: 1 7080DELETE FROM t1 7081WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7082AND @max_row_div2 + @max_row_div4 + @max_row; 7083 7084# check multiple-5 success: 1 7085SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7086INSERT INTO t1 7087SET f_int1 = @cur_value , f_int2 = @cur_value, 7088f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7089f_charbig = '#SINGLE#'; 7090 7091# check single-1 success: 1 7092SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7093INSERT INTO t1 7094SET f_int1 = @cur_value , f_int2 = @cur_value, 7095f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7096f_charbig = '#SINGLE#'; 7097 7098# check single-2 success: 1 7099SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7100SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7101UPDATE t1 SET f_int1 = @cur_value2 7102WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7103 7104# check single-3 success: 1 7105SET @cur_value1= -1; 7106SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7107UPDATE t1 SET f_int1 = @cur_value1 7108WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7109 7110# check single-4 success: 1 7111SELECT MAX(f_int1) INTO @cur_value FROM t1; 7112DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7113 7114# check single-5 success: 1 7115DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7116 7117# check single-6 success: 1 7118INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7119ERROR HY000: Table has no partition for value 2147483647 7120DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7121INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7122f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7123f_charbig = '#NULL#'; 7124INSERT INTO t1 7125SET f_int1 = NULL , f_int2 = -@max_row, 7126f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7127f_charbig = '#NULL#'; 7128# check null success: 1 7129 7130# check null-1 success: 1 7131UPDATE t1 SET f_int1 = -@max_row 7132WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7133AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7134 7135# check null-2 success: 1 7136UPDATE t1 SET f_int1 = NULL 7137WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7138AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7139 7140# check null-3 success: 1 7141DELETE FROM t1 7142WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7143AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7144 7145# check null-4 success: 1 7146DELETE FROM t1 7147WHERE f_int1 = 0 AND f_int2 = 0 7148AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7149AND f_charbig = '#NULL#'; 7150SET AUTOCOMMIT= 0; 7151INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7152SELECT f_int1, f_int1, '', '', 'was inserted' 7153FROM t0_template source_tab 7154WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7155 7156# check transactions-1 success: 1 7157COMMIT WORK; 7158 7159# check transactions-2 success: 1 7160ROLLBACK WORK; 7161 7162# check transactions-3 success: 1 7163DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7164COMMIT WORK; 7165ROLLBACK WORK; 7166 7167# check transactions-4 success: 1 7168INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7169SELECT f_int1, f_int1, '', '', 'was inserted' 7170FROM t0_template source_tab 7171WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7172 7173# check transactions-5 success: 1 7174ROLLBACK WORK; 7175Warnings: 7176Warning 1196 Some non-transactional changed tables couldn't be rolled back 7177 7178# check transactions-6 success: 1 7179# INFO: Storage engine used for t1 seems to be not transactional. 7180COMMIT; 7181 7182# check transactions-7 success: 1 7183DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7184COMMIT WORK; 7185SET @@session.sql_mode = 'traditional'; 7186Warnings: 7187Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7188SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7189INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7190SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7191'', '', 'was inserted' FROM t0_template 7192WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7193ERROR 22012: Division by 0 7194COMMIT; 7195 7196# check transactions-8 success: 1 7197# INFO: Storage engine used for t1 seems to be unable to revert 7198# changes made by the failing statement. 7199SET @@session.sql_mode = ''; 7200Warnings: 7201Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7202SET AUTOCOMMIT= 1; 7203DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7204COMMIT WORK; 7205UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7206 7207# check special-1 success: 1 7208UPDATE t1 SET f_charbig = ''; 7209 7210# check special-2 success: 1 7211UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7212INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7213SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7214WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7215INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7216SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7217'just inserted' FROM t0_template 7218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7219CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7220BEGIN 7221UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7222f_charbig = 'updated by trigger' 7223 WHERE f_int1 = new.f_int1; 7224END| 7225INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7226SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7228 7229# check trigger-1 success: 1 7230DROP TRIGGER trg_1; 7231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7232f_int2 = CAST(f_char1 AS SIGNED INT), 7233f_charbig = 'just inserted' 7234 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7235DELETE FROM t0_aux 7236WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7237INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7238SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7239'just inserted' FROM t0_template 7240WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7241CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7242BEGIN 7243UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7244f_charbig = 'updated by trigger' 7245 WHERE f_int1 = new.f_int1; 7246END| 7247INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7248SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7249WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7250 7251# check trigger-2 success: 1 7252DROP TRIGGER trg_1; 7253UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7254f_int2 = CAST(f_char1 AS SIGNED INT), 7255f_charbig = 'just inserted' 7256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7257DELETE FROM t0_aux 7258WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7259INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7260SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7261'just inserted' FROM t0_template 7262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7263CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7264BEGIN 7265UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7266f_charbig = 'updated by trigger' 7267 WHERE f_int1 = new.f_int1; 7268END| 7269UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7270WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7271 7272# check trigger-3 success: 1 7273DROP TRIGGER trg_1; 7274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7275f_int2 = CAST(f_char1 AS SIGNED INT), 7276f_charbig = 'just inserted' 7277 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7278DELETE FROM t0_aux 7279WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7280INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7281SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7282'just inserted' FROM t0_template 7283WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7284CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7285BEGIN 7286UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7287f_charbig = 'updated by trigger' 7288 WHERE f_int1 = - old.f_int1; 7289END| 7290UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7291WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7292 7293# check trigger-4 success: 1 7294DROP TRIGGER trg_1; 7295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7296f_int2 = CAST(f_char1 AS SIGNED INT), 7297f_charbig = 'just inserted' 7298 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7299DELETE FROM t0_aux 7300WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7301INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7302SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7303'just inserted' FROM t0_template 7304WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7305CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7306BEGIN 7307UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7308f_charbig = 'updated by trigger' 7309 WHERE f_int1 = new.f_int1; 7310END| 7311UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7312WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7313 7314# check trigger-5 success: 1 7315DROP TRIGGER trg_1; 7316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7317f_int2 = CAST(f_char1 AS SIGNED INT), 7318f_charbig = 'just inserted' 7319 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7320DELETE FROM t0_aux 7321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7322INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7323SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7324'just inserted' FROM t0_template 7325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7326CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7327BEGIN 7328UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7329f_charbig = 'updated by trigger' 7330 WHERE f_int1 = - old.f_int1; 7331END| 7332UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7333WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7334 7335# check trigger-6 success: 1 7336DROP TRIGGER trg_1; 7337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7338f_int2 = CAST(f_char1 AS SIGNED INT), 7339f_charbig = 'just inserted' 7340 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7341DELETE FROM t0_aux 7342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7345'just inserted' FROM t0_template 7346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7347CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7348BEGIN 7349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7350f_charbig = 'updated by trigger' 7351 WHERE f_int1 = - old.f_int1; 7352END| 7353DELETE FROM t0_aux 7354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7355 7356# check trigger-7 success: 1 7357DROP TRIGGER trg_1; 7358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7359f_int2 = CAST(f_char1 AS SIGNED INT), 7360f_charbig = 'just inserted' 7361 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7362DELETE FROM t0_aux 7363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7366'just inserted' FROM t0_template 7367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7368CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7369BEGIN 7370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7371f_charbig = 'updated by trigger' 7372 WHERE f_int1 = - old.f_int1; 7373END| 7374DELETE FROM t0_aux 7375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7376 7377# check trigger-8 success: 1 7378DROP TRIGGER trg_1; 7379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7380f_int2 = CAST(f_char1 AS SIGNED INT), 7381f_charbig = 'just inserted' 7382 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7383DELETE FROM t0_aux 7384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7385DELETE FROM t1 7386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7387CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7388BEGIN 7389SET new.f_int1 = old.f_int1 + @max_row, 7390new.f_int2 = old.f_int2 - @max_row, 7391new.f_charbig = '####updated per update trigger####'; 7392END| 7393UPDATE t1 7394SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7395f_charbig = '####updated per update statement itself####'; 7396Warnings: 7397Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7398 7399# check trigger-9 success: 1 7400DROP TRIGGER trg_2; 7401UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7402f_int2 = CAST(f_char1 AS SIGNED INT), 7403f_charbig = CONCAT('===',f_char1,'==='); 7404Warnings: 7405Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7406CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7407BEGIN 7408SET new.f_int1 = new.f_int1 + @max_row, 7409new.f_int2 = new.f_int2 - @max_row, 7410new.f_charbig = '####updated per update trigger####'; 7411END| 7412UPDATE t1 7413SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7414f_charbig = '####updated per update statement itself####'; 7415Warnings: 7416Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7417 7418# check trigger-10 success: 1 7419DROP TRIGGER trg_2; 7420UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7421f_int2 = CAST(f_char1 AS SIGNED INT), 7422f_charbig = CONCAT('===',f_char1,'==='); 7423Warnings: 7424Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7425CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7426BEGIN 7427SET new.f_int1 = @my_max1 + @counter, 7428new.f_int2 = @my_min2 - @counter, 7429new.f_charbig = '####updated per insert trigger####'; 7430SET @counter = @counter + 1; 7431END| 7432SET @counter = 1; 7433SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7434Warnings: 7435Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7436INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7437SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7438CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7440ORDER BY f_int1; 7441DROP TRIGGER trg_3; 7442 7443# check trigger-11 success: 1 7444Warnings: 7445Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7446DELETE FROM t1 7447WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7448AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7449AND f_charbig = '####updated per insert trigger####'; 7450CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7451BEGIN 7452SET new.f_int1 = @my_max1 + @counter, 7453new.f_int2 = @my_min2 - @counter, 7454new.f_charbig = '####updated per insert trigger####'; 7455SET @counter = @counter + 1; 7456END| 7457SET @counter = 1; 7458SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7459Warnings: 7460Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7461INSERT INTO t1 (f_char1, f_char2, f_charbig) 7462SELECT CAST(f_int1 AS CHAR), 7463CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7464WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7465ORDER BY f_int1; 7466DROP TRIGGER trg_3; 7467 7468# check trigger-12 success: 1 7469Warnings: 7470Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7471DELETE FROM t1 7472WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7473AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7474AND f_charbig = '####updated per insert trigger####'; 7475ANALYZE TABLE t1; 7476Table Op Msg_type Msg_text 7477test.t1 analyze status OK 7478test.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. 7479CHECK TABLE t1 EXTENDED; 7480Table Op Msg_type Msg_text 7481test.t1 check status OK 7482test.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. 7483CHECKSUM TABLE t1 EXTENDED; 7484Table Checksum 7485test.t1 <some_value> 7486OPTIMIZE TABLE t1; 7487Table Op Msg_type Msg_text 7488test.t1 optimize status OK 7489test.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. 7490# check layout success: 1 7491REPAIR TABLE t1 EXTENDED; 7492Table Op Msg_type Msg_text 7493test.t1 repair status OK 7494test.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. 7495# check layout success: 1 7496TRUNCATE t1; 7497Warnings: 7498Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7499 7500# check TRUNCATE success: 1 7501# check layout success: 1 7502# End usability test (inc/partition_check.inc) 7503DROP TABLE t1; 7504CREATE TABLE t1 ( 7505f_int1 INTEGER, 7506f_int2 INTEGER, 7507f_char1 CHAR(20), 7508f_char2 CHAR(20), 7509f_charbig VARCHAR(1000) 7510 7511) 7512PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 7513(PARTITION part1 VALUES IN (0) 7514DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7515INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 7516(SUBPARTITION sp11 7517DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7518INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 7519SUBPARTITION sp12 7520DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7521INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 7522PARTITION part2 VALUES IN (1) 7523DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7524INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 7525(SUBPARTITION sp21 7526DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7527INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 7528SUBPARTITION sp22 7529DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7530INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 7531PARTITION part3 VALUES IN (2) 7532DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7533INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 7534(SUBPARTITION sp31, 7535SUBPARTITION sp32), 7536PARTITION part4 VALUES IN (NULL) 7537DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7538INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 7539(SUBPARTITION sp41 7540DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7541INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 7542SUBPARTITION sp42 7543DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 7544INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 7545Warnings: 7546Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7547INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7548SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 7549Warnings: 7550Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7551# Start usability test (inc/partition_check.inc) 7552create_command 7553SHOW CREATE TABLE t1; 7554Table Create Table 7555t1 CREATE TABLE `t1` ( 7556 `f_int1` int(11) DEFAULT NULL, 7557 `f_int2` int(11) DEFAULT NULL, 7558 `f_char1` char(20) DEFAULT NULL, 7559 `f_char2` char(20) DEFAULT NULL, 7560 `f_charbig` varchar(1000) DEFAULT NULL 7561) ENGINE=MyISAM DEFAULT CHARSET=latin1 7562/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 7563SUBPARTITION BY HASH (f_int2 + 1) 7564(PARTITION part1 VALUES IN (0) 7565 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7566 SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7567 PARTITION part2 VALUES IN (1) 7568 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7569 SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7570 PARTITION part3 VALUES IN (2) 7571 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7572 SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 7573 PARTITION part4 VALUES IN (NULL) 7574 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 7575 SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 7576 7577unified filelist 7578t1#P#part1#SP#sp11.MYD 7579t1#P#part1#SP#sp11.MYI 7580t1#P#part1#SP#sp12.MYD 7581t1#P#part1#SP#sp12.MYI 7582t1#P#part2#SP#sp21.MYD 7583t1#P#part2#SP#sp21.MYI 7584t1#P#part2#SP#sp22.MYD 7585t1#P#part2#SP#sp22.MYI 7586t1#P#part3#SP#sp31.MYD 7587t1#P#part3#SP#sp31.MYI 7588t1#P#part3#SP#sp32.MYD 7589t1#P#part3#SP#sp32.MYI 7590t1#P#part4#SP#sp41.MYD 7591t1#P#part4#SP#sp41.MYI 7592t1#P#part4#SP#sp42.MYD 7593t1#P#part4#SP#sp42.MYI 7594t1.frm 7595t1.par 7596t1#P#part1#SP#sp11.MYD 7597t1#P#part1#SP#sp12.MYD 7598t1#P#part2#SP#sp21.MYD 7599t1#P#part2#SP#sp22.MYD 7600t1#P#part3#SP#sp31.MYD 7601t1#P#part3#SP#sp32.MYD 7602t1#P#part4#SP#sp41.MYD 7603t1#P#part4#SP#sp42.MYD 7604t1#P#part1#SP#sp11.MYI 7605t1#P#part1#SP#sp12.MYI 7606t1#P#part2#SP#sp21.MYI 7607t1#P#part2#SP#sp22.MYI 7608t1#P#part3#SP#sp31.MYI 7609t1#P#part3#SP#sp32.MYI 7610t1#P#part4#SP#sp41.MYI 7611t1#P#part4#SP#sp42.MYI 7612 7613# check prerequisites-1 success: 1 7614# check COUNT(*) success: 1 7615# check MIN/MAX(f_int1) success: 1 7616# check MIN/MAX(f_int2) success: 1 7617INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7618SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7619CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7620WHERE f_int1 IN (2,3); 7621# check prerequisites-3 success: 1 7622DELETE FROM t1 WHERE f_charbig = 'delete me'; 7623# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 7624# check read via f_int1 success: 1 7625# check read via f_int2 success: 1 7626 7627# check multiple-1 success: 1 7628DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7629 7630# check multiple-2 success: 1 7631INSERT INTO t1 SELECT * FROM t0_template 7632WHERE MOD(f_int1,3) = 0; 7633 7634# check multiple-3 success: 1 7635UPDATE t1 SET f_int1 = f_int1 + @max_row 7636WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7637AND @max_row_div2 + @max_row_div4; 7638 7639# check multiple-4 success: 1 7640DELETE FROM t1 7641WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7642AND @max_row_div2 + @max_row_div4 + @max_row; 7643 7644# check multiple-5 success: 1 7645SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7646INSERT INTO t1 7647SET f_int1 = @cur_value , f_int2 = @cur_value, 7648f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7649f_charbig = '#SINGLE#'; 7650 7651# check single-1 success: 1 7652SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7653INSERT INTO t1 7654SET f_int1 = @cur_value , f_int2 = @cur_value, 7655f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7656f_charbig = '#SINGLE#'; 7657 7658# check single-2 success: 1 7659SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7660SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7661UPDATE t1 SET f_int1 = @cur_value2 7662WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7663 7664# check single-3 success: 1 7665SET @cur_value1= -1; 7666SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7667UPDATE t1 SET f_int1 = @cur_value1 7668WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7669 7670# check single-4 success: 1 7671SELECT MAX(f_int1) INTO @cur_value FROM t1; 7672DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7673 7674# check single-5 success: 1 7675DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7676 7677# check single-6 success: 1 7678INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7679 7680# check single-7 success: 1 7681DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7682DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7683INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7684f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7685f_charbig = '#NULL#'; 7686INSERT INTO t1 7687SET f_int1 = NULL , f_int2 = -@max_row, 7688f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7689f_charbig = '#NULL#'; 7690# check null success: 1 7691 7692# check null-1 success: 1 7693UPDATE t1 SET f_int1 = -@max_row 7694WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7695AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7696 7697# check null-2 success: 1 7698UPDATE t1 SET f_int1 = NULL 7699WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7700AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7701 7702# check null-3 success: 1 7703DELETE FROM t1 7704WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 7705AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 7706 7707# check null-4 success: 1 7708DELETE FROM t1 7709WHERE f_int1 = 0 AND f_int2 = 0 7710AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7711AND f_charbig = '#NULL#'; 7712SET AUTOCOMMIT= 0; 7713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7714SELECT f_int1, f_int1, '', '', 'was inserted' 7715FROM t0_template source_tab 7716WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7717 7718# check transactions-1 success: 1 7719COMMIT WORK; 7720 7721# check transactions-2 success: 1 7722ROLLBACK WORK; 7723 7724# check transactions-3 success: 1 7725DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7726COMMIT WORK; 7727ROLLBACK WORK; 7728 7729# check transactions-4 success: 1 7730INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7731SELECT f_int1, f_int1, '', '', 'was inserted' 7732FROM t0_template source_tab 7733WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7734 7735# check transactions-5 success: 1 7736ROLLBACK WORK; 7737Warnings: 7738Warning 1196 Some non-transactional changed tables couldn't be rolled back 7739 7740# check transactions-6 success: 1 7741# INFO: Storage engine used for t1 seems to be not transactional. 7742COMMIT; 7743 7744# check transactions-7 success: 1 7745DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7746COMMIT WORK; 7747SET @@session.sql_mode = 'traditional'; 7748Warnings: 7749Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7750SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7751INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7752SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7753'', '', 'was inserted' FROM t0_template 7754WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7755ERROR 22012: Division by 0 7756COMMIT; 7757 7758# check transactions-8 success: 1 7759# INFO: Storage engine used for t1 seems to be unable to revert 7760# changes made by the failing statement. 7761SET @@session.sql_mode = ''; 7762Warnings: 7763Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7764SET AUTOCOMMIT= 1; 7765DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7766COMMIT WORK; 7767UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7768 7769# check special-1 success: 1 7770UPDATE t1 SET f_charbig = ''; 7771 7772# check special-2 success: 1 7773UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7774INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7775SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7776WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7777INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7778SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7779'just inserted' FROM t0_template 7780WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7781CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7782BEGIN 7783UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7784f_charbig = 'updated by trigger' 7785 WHERE f_int1 = new.f_int1; 7786END| 7787INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7788SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7789WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7790 7791# check trigger-1 success: 1 7792DROP TRIGGER trg_1; 7793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7794f_int2 = CAST(f_char1 AS SIGNED INT), 7795f_charbig = 'just inserted' 7796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7797DELETE FROM t0_aux 7798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7801'just inserted' FROM t0_template 7802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7803CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7804BEGIN 7805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7806f_charbig = 'updated by trigger' 7807 WHERE f_int1 = new.f_int1; 7808END| 7809INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7810SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7811WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7812 7813# check trigger-2 success: 1 7814DROP TRIGGER trg_1; 7815UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7816f_int2 = CAST(f_char1 AS SIGNED INT), 7817f_charbig = 'just inserted' 7818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7819DELETE FROM t0_aux 7820WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7821INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7822SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7823'just inserted' FROM t0_template 7824WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7825CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7826BEGIN 7827UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7828f_charbig = 'updated by trigger' 7829 WHERE f_int1 = new.f_int1; 7830END| 7831UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7832WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7833 7834# check trigger-3 success: 1 7835DROP TRIGGER trg_1; 7836UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7837f_int2 = CAST(f_char1 AS SIGNED INT), 7838f_charbig = 'just inserted' 7839 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7840DELETE FROM t0_aux 7841WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7843SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7844'just inserted' FROM t0_template 7845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7846CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7847BEGIN 7848UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7849f_charbig = 'updated by trigger' 7850 WHERE f_int1 = - old.f_int1; 7851END| 7852UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7853WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7854 7855# check trigger-4 success: 1 7856DROP TRIGGER trg_1; 7857UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7858f_int2 = CAST(f_char1 AS SIGNED INT), 7859f_charbig = 'just inserted' 7860 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7861DELETE FROM t0_aux 7862WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7863INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7864SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7865'just inserted' FROM t0_template 7866WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7867CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7868BEGIN 7869UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7870f_charbig = 'updated by trigger' 7871 WHERE f_int1 = new.f_int1; 7872END| 7873UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7874WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7875 7876# check trigger-5 success: 1 7877DROP TRIGGER trg_1; 7878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7879f_int2 = CAST(f_char1 AS SIGNED INT), 7880f_charbig = 'just inserted' 7881 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7882DELETE FROM t0_aux 7883WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7884INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7885SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7886'just inserted' FROM t0_template 7887WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7888CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7889BEGIN 7890UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7891f_charbig = 'updated by trigger' 7892 WHERE f_int1 = - old.f_int1; 7893END| 7894UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7895WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7896 7897# check trigger-6 success: 1 7898DROP TRIGGER trg_1; 7899UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7900f_int2 = CAST(f_char1 AS SIGNED INT), 7901f_charbig = 'just inserted' 7902 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7903DELETE FROM t0_aux 7904WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7905INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7906SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7907'just inserted' FROM t0_template 7908WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7909CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7910BEGIN 7911UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7912f_charbig = 'updated by trigger' 7913 WHERE f_int1 = - old.f_int1; 7914END| 7915DELETE FROM t0_aux 7916WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7917 7918# check trigger-7 success: 1 7919DROP TRIGGER trg_1; 7920UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7921f_int2 = CAST(f_char1 AS SIGNED INT), 7922f_charbig = 'just inserted' 7923 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7924DELETE FROM t0_aux 7925WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7926INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7927SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7928'just inserted' FROM t0_template 7929WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7930CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7931BEGIN 7932UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7933f_charbig = 'updated by trigger' 7934 WHERE f_int1 = - old.f_int1; 7935END| 7936DELETE FROM t0_aux 7937WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7938 7939# check trigger-8 success: 1 7940DROP TRIGGER trg_1; 7941UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7942f_int2 = CAST(f_char1 AS SIGNED INT), 7943f_charbig = 'just inserted' 7944 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7945DELETE FROM t0_aux 7946WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7947DELETE FROM t1 7948WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7949CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7950BEGIN 7951SET new.f_int1 = old.f_int1 + @max_row, 7952new.f_int2 = old.f_int2 - @max_row, 7953new.f_charbig = '####updated per update trigger####'; 7954END| 7955UPDATE t1 7956SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7957f_charbig = '####updated per update statement itself####'; 7958Warnings: 7959Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7960 7961# check trigger-9 success: 1 7962DROP TRIGGER trg_2; 7963UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7964f_int2 = CAST(f_char1 AS SIGNED INT), 7965f_charbig = CONCAT('===',f_char1,'==='); 7966Warnings: 7967Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7968CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7969BEGIN 7970SET new.f_int1 = new.f_int1 + @max_row, 7971new.f_int2 = new.f_int2 - @max_row, 7972new.f_charbig = '####updated per update trigger####'; 7973END| 7974UPDATE t1 7975SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7976f_charbig = '####updated per update statement itself####'; 7977Warnings: 7978Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7979 7980# check trigger-10 success: 1 7981DROP TRIGGER trg_2; 7982UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7983f_int2 = CAST(f_char1 AS SIGNED INT), 7984f_charbig = CONCAT('===',f_char1,'==='); 7985Warnings: 7986Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7987CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7988BEGIN 7989SET new.f_int1 = @my_max1 + @counter, 7990new.f_int2 = @my_min2 - @counter, 7991new.f_charbig = '####updated per insert trigger####'; 7992SET @counter = @counter + 1; 7993END| 7994SET @counter = 1; 7995SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7996Warnings: 7997Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 7998INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7999SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8000CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8001WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8002ORDER BY f_int1; 8003DROP TRIGGER trg_3; 8004 8005# check trigger-11 success: 1 8006Warnings: 8007Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8008DELETE FROM t1 8009WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8010AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8011AND f_charbig = '####updated per insert trigger####'; 8012CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8013BEGIN 8014SET new.f_int1 = @my_max1 + @counter, 8015new.f_int2 = @my_min2 - @counter, 8016new.f_charbig = '####updated per insert trigger####'; 8017SET @counter = @counter + 1; 8018END| 8019SET @counter = 1; 8020SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8021Warnings: 8022Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8023INSERT INTO t1 (f_char1, f_char2, f_charbig) 8024SELECT CAST(f_int1 AS CHAR), 8025CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8027ORDER BY f_int1; 8028DROP TRIGGER trg_3; 8029 8030# check trigger-12 success: 1 8031Warnings: 8032Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8033DELETE FROM t1 8034WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8035AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8036AND f_charbig = '####updated per insert trigger####'; 8037ANALYZE TABLE t1; 8038Table Op Msg_type Msg_text 8039test.t1 analyze status OK 8040test.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. 8041CHECK TABLE t1 EXTENDED; 8042Table Op Msg_type Msg_text 8043test.t1 check status OK 8044test.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. 8045CHECKSUM TABLE t1 EXTENDED; 8046Table Checksum 8047test.t1 <some_value> 8048OPTIMIZE TABLE t1; 8049Table Op Msg_type Msg_text 8050test.t1 optimize status OK 8051test.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. 8052# check layout success: 1 8053REPAIR TABLE t1 EXTENDED; 8054Table Op Msg_type Msg_text 8055test.t1 repair status OK 8056test.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. 8057# check layout success: 1 8058TRUNCATE t1; 8059Warnings: 8060Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8061 8062# check TRUNCATE success: 1 8063# check layout success: 1 8064# End usability test (inc/partition_check.inc) 8065DROP TABLE t1; 8066CREATE TABLE t1 ( 8067f_int1 INTEGER, 8068f_int2 INTEGER, 8069f_char1 CHAR(20), 8070f_char2 CHAR(20), 8071f_charbig VARCHAR(1000) 8072 8073) 8074PARTITION BY LIST(ABS(MOD(f_int1,2))) 8075SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 8076(PARTITION part1 VALUES IN (0) 8077DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 8078INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 8079PARTITION part2 VALUES IN (1) 8080DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 8081INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 8082PARTITION part3 VALUES IN (NULL) 8083DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 8084INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 8085Warnings: 8086Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8088SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 8089Warnings: 8090Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8091# Start usability test (inc/partition_check.inc) 8092create_command 8093SHOW CREATE TABLE t1; 8094Table Create Table 8095t1 CREATE TABLE `t1` ( 8096 `f_int1` int(11) DEFAULT NULL, 8097 `f_int2` int(11) DEFAULT NULL, 8098 `f_char1` char(20) DEFAULT NULL, 8099 `f_char2` char(20) DEFAULT NULL, 8100 `f_charbig` varchar(1000) DEFAULT NULL 8101) ENGINE=MyISAM DEFAULT CHARSET=latin1 8102/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 8103SUBPARTITION BY KEY (f_int2) 8104SUBPARTITIONS 3 8105(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 8106 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 8107 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 8108 8109unified filelist 8110t1#P#part1#SP#part1sp0.MYD 8111t1#P#part1#SP#part1sp0.MYI 8112t1#P#part1#SP#part1sp1.MYD 8113t1#P#part1#SP#part1sp1.MYI 8114t1#P#part1#SP#part1sp2.MYD 8115t1#P#part1#SP#part1sp2.MYI 8116t1#P#part2#SP#part2sp0.MYD 8117t1#P#part2#SP#part2sp0.MYI 8118t1#P#part2#SP#part2sp1.MYD 8119t1#P#part2#SP#part2sp1.MYI 8120t1#P#part2#SP#part2sp2.MYD 8121t1#P#part2#SP#part2sp2.MYI 8122t1#P#part3#SP#part3sp0.MYD 8123t1#P#part3#SP#part3sp0.MYI 8124t1#P#part3#SP#part3sp1.MYD 8125t1#P#part3#SP#part3sp1.MYI 8126t1#P#part3#SP#part3sp2.MYD 8127t1#P#part3#SP#part3sp2.MYI 8128t1.frm 8129t1.par 8130t1#P#part1#SP#part1sp0.MYD 8131t1#P#part1#SP#part1sp1.MYD 8132t1#P#part1#SP#part1sp2.MYD 8133t1#P#part2#SP#part2sp0.MYD 8134t1#P#part2#SP#part2sp1.MYD 8135t1#P#part2#SP#part2sp2.MYD 8136t1#P#part3#SP#part3sp0.MYD 8137t1#P#part3#SP#part3sp1.MYD 8138t1#P#part3#SP#part3sp2.MYD 8139t1#P#part1#SP#part1sp0.MYI 8140t1#P#part1#SP#part1sp1.MYI 8141t1#P#part1#SP#part1sp2.MYI 8142t1#P#part2#SP#part2sp0.MYI 8143t1#P#part2#SP#part2sp1.MYI 8144t1#P#part2#SP#part2sp2.MYI 8145t1#P#part3#SP#part3sp0.MYI 8146t1#P#part3#SP#part3sp1.MYI 8147t1#P#part3#SP#part3sp2.MYI 8148 8149# check prerequisites-1 success: 1 8150# check COUNT(*) success: 1 8151# check MIN/MAX(f_int1) success: 1 8152# check MIN/MAX(f_int2) success: 1 8153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8154SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8155CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8156WHERE f_int1 IN (2,3); 8157# check prerequisites-3 success: 1 8158DELETE FROM t1 WHERE f_charbig = 'delete me'; 8159# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 8160# check read via f_int1 success: 1 8161# check read via f_int2 success: 1 8162 8163# check multiple-1 success: 1 8164DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8165 8166# check multiple-2 success: 1 8167INSERT INTO t1 SELECT * FROM t0_template 8168WHERE MOD(f_int1,3) = 0; 8169 8170# check multiple-3 success: 1 8171UPDATE t1 SET f_int1 = f_int1 + @max_row 8172WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8173AND @max_row_div2 + @max_row_div4; 8174 8175# check multiple-4 success: 1 8176DELETE FROM t1 8177WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8178AND @max_row_div2 + @max_row_div4 + @max_row; 8179 8180# check multiple-5 success: 1 8181SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8182INSERT INTO t1 8183SET f_int1 = @cur_value , f_int2 = @cur_value, 8184f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8185f_charbig = '#SINGLE#'; 8186 8187# check single-1 success: 1 8188SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8189INSERT INTO t1 8190SET f_int1 = @cur_value , f_int2 = @cur_value, 8191f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8192f_charbig = '#SINGLE#'; 8193 8194# check single-2 success: 1 8195SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8196SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8197UPDATE t1 SET f_int1 = @cur_value2 8198WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8199 8200# check single-3 success: 1 8201SET @cur_value1= -1; 8202SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8203UPDATE t1 SET f_int1 = @cur_value1 8204WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8205 8206# check single-4 success: 1 8207SELECT MAX(f_int1) INTO @cur_value FROM t1; 8208DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8209 8210# check single-5 success: 1 8211DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8212 8213# check single-6 success: 1 8214INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8215 8216# check single-7 success: 1 8217DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8218DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8219INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8220f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8221f_charbig = '#NULL#'; 8222INSERT INTO t1 8223SET f_int1 = NULL , f_int2 = -@max_row, 8224f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8225f_charbig = '#NULL#'; 8226# check null success: 1 8227 8228# check null-1 success: 1 8229UPDATE t1 SET f_int1 = -@max_row 8230WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8231AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8232 8233# check null-2 success: 1 8234UPDATE t1 SET f_int1 = NULL 8235WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8236AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8237 8238# check null-3 success: 1 8239DELETE FROM t1 8240WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8241AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8242 8243# check null-4 success: 1 8244DELETE FROM t1 8245WHERE f_int1 = 0 AND f_int2 = 0 8246AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8247AND f_charbig = '#NULL#'; 8248SET AUTOCOMMIT= 0; 8249INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8250SELECT f_int1, f_int1, '', '', 'was inserted' 8251FROM t0_template source_tab 8252WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8253 8254# check transactions-1 success: 1 8255COMMIT WORK; 8256 8257# check transactions-2 success: 1 8258ROLLBACK WORK; 8259 8260# check transactions-3 success: 1 8261DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8262COMMIT WORK; 8263ROLLBACK WORK; 8264 8265# check transactions-4 success: 1 8266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8267SELECT f_int1, f_int1, '', '', 'was inserted' 8268FROM t0_template source_tab 8269WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8270 8271# check transactions-5 success: 1 8272ROLLBACK WORK; 8273Warnings: 8274Warning 1196 Some non-transactional changed tables couldn't be rolled back 8275 8276# check transactions-6 success: 1 8277# INFO: Storage engine used for t1 seems to be not transactional. 8278COMMIT; 8279 8280# check transactions-7 success: 1 8281DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8282COMMIT WORK; 8283SET @@session.sql_mode = 'traditional'; 8284Warnings: 8285Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8286SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8288SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8289'', '', 'was inserted' FROM t0_template 8290WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8291ERROR 22012: Division by 0 8292COMMIT; 8293 8294# check transactions-8 success: 1 8295# INFO: Storage engine used for t1 seems to be unable to revert 8296# changes made by the failing statement. 8297SET @@session.sql_mode = ''; 8298Warnings: 8299Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8300SET AUTOCOMMIT= 1; 8301DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8302COMMIT WORK; 8303UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8304 8305# check special-1 success: 1 8306UPDATE t1 SET f_charbig = ''; 8307 8308# check special-2 success: 1 8309UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8310INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8311SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8312WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8313INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8314SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8315'just inserted' FROM t0_template 8316WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8317CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8318BEGIN 8319UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8320f_charbig = 'updated by trigger' 8321 WHERE f_int1 = new.f_int1; 8322END| 8323INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8324SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8326 8327# check trigger-1 success: 1 8328DROP TRIGGER trg_1; 8329UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8330f_int2 = CAST(f_char1 AS SIGNED INT), 8331f_charbig = 'just inserted' 8332 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8333DELETE FROM t0_aux 8334WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8335INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8336SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8337'just inserted' FROM t0_template 8338WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8339CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8340BEGIN 8341UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8342f_charbig = 'updated by trigger' 8343 WHERE f_int1 = new.f_int1; 8344END| 8345INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8346SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8347WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8348 8349# check trigger-2 success: 1 8350DROP TRIGGER trg_1; 8351UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8352f_int2 = CAST(f_char1 AS SIGNED INT), 8353f_charbig = 'just inserted' 8354 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8355DELETE FROM t0_aux 8356WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8357INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8358SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8359'just inserted' FROM t0_template 8360WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8361CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8362BEGIN 8363UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8364f_charbig = 'updated by trigger' 8365 WHERE f_int1 = new.f_int1; 8366END| 8367UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8368WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8369 8370# check trigger-3 success: 1 8371DROP TRIGGER trg_1; 8372UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8373f_int2 = CAST(f_char1 AS SIGNED INT), 8374f_charbig = 'just inserted' 8375 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8376DELETE FROM t0_aux 8377WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8378INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8379SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8380'just inserted' FROM t0_template 8381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8382CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8383BEGIN 8384UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8385f_charbig = 'updated by trigger' 8386 WHERE f_int1 = - old.f_int1; 8387END| 8388UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8389WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8390 8391# check trigger-4 success: 1 8392DROP TRIGGER trg_1; 8393UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8394f_int2 = CAST(f_char1 AS SIGNED INT), 8395f_charbig = 'just inserted' 8396 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8397DELETE FROM t0_aux 8398WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8401'just inserted' FROM t0_template 8402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8403CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8404BEGIN 8405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8406f_charbig = 'updated by trigger' 8407 WHERE f_int1 = new.f_int1; 8408END| 8409UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8410WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8411 8412# check trigger-5 success: 1 8413DROP TRIGGER trg_1; 8414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8415f_int2 = CAST(f_char1 AS SIGNED INT), 8416f_charbig = 'just inserted' 8417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8418DELETE FROM t0_aux 8419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8422'just inserted' FROM t0_template 8423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8424CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8425BEGIN 8426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8427f_charbig = 'updated by trigger' 8428 WHERE f_int1 = - old.f_int1; 8429END| 8430UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8431WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8432 8433# check trigger-6 success: 1 8434DROP TRIGGER trg_1; 8435UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8436f_int2 = CAST(f_char1 AS SIGNED INT), 8437f_charbig = 'just inserted' 8438 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8439DELETE FROM t0_aux 8440WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8441INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8442SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8443'just inserted' FROM t0_template 8444WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8445CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8446BEGIN 8447UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8448f_charbig = 'updated by trigger' 8449 WHERE f_int1 = - old.f_int1; 8450END| 8451DELETE FROM t0_aux 8452WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8453 8454# check trigger-7 success: 1 8455DROP TRIGGER trg_1; 8456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8457f_int2 = CAST(f_char1 AS SIGNED INT), 8458f_charbig = 'just inserted' 8459 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8460DELETE FROM t0_aux 8461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8464'just inserted' FROM t0_template 8465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8466CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8467BEGIN 8468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8469f_charbig = 'updated by trigger' 8470 WHERE f_int1 = - old.f_int1; 8471END| 8472DELETE FROM t0_aux 8473WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8474 8475# check trigger-8 success: 1 8476DROP TRIGGER trg_1; 8477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8478f_int2 = CAST(f_char1 AS SIGNED INT), 8479f_charbig = 'just inserted' 8480 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8481DELETE FROM t0_aux 8482WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8483DELETE FROM t1 8484WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8485CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8486BEGIN 8487SET new.f_int1 = old.f_int1 + @max_row, 8488new.f_int2 = old.f_int2 - @max_row, 8489new.f_charbig = '####updated per update trigger####'; 8490END| 8491UPDATE t1 8492SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8493f_charbig = '####updated per update statement itself####'; 8494Warnings: 8495Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8496 8497# check trigger-9 success: 1 8498DROP TRIGGER trg_2; 8499UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8500f_int2 = CAST(f_char1 AS SIGNED INT), 8501f_charbig = CONCAT('===',f_char1,'==='); 8502Warnings: 8503Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8504CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8505BEGIN 8506SET new.f_int1 = new.f_int1 + @max_row, 8507new.f_int2 = new.f_int2 - @max_row, 8508new.f_charbig = '####updated per update trigger####'; 8509END| 8510UPDATE t1 8511SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8512f_charbig = '####updated per update statement itself####'; 8513Warnings: 8514Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8515 8516# check trigger-10 success: 1 8517DROP TRIGGER trg_2; 8518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8519f_int2 = CAST(f_char1 AS SIGNED INT), 8520f_charbig = CONCAT('===',f_char1,'==='); 8521Warnings: 8522Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8523CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8524BEGIN 8525SET new.f_int1 = @my_max1 + @counter, 8526new.f_int2 = @my_min2 - @counter, 8527new.f_charbig = '####updated per insert trigger####'; 8528SET @counter = @counter + 1; 8529END| 8530SET @counter = 1; 8531SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8532Warnings: 8533Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8534INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8535SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8536CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8537WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8538ORDER BY f_int1; 8539DROP TRIGGER trg_3; 8540 8541# check trigger-11 success: 1 8542Warnings: 8543Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8544DELETE FROM t1 8545WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8546AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8547AND f_charbig = '####updated per insert trigger####'; 8548CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8549BEGIN 8550SET new.f_int1 = @my_max1 + @counter, 8551new.f_int2 = @my_min2 - @counter, 8552new.f_charbig = '####updated per insert trigger####'; 8553SET @counter = @counter + 1; 8554END| 8555SET @counter = 1; 8556SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8557Warnings: 8558Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8559INSERT INTO t1 (f_char1, f_char2, f_charbig) 8560SELECT CAST(f_int1 AS CHAR), 8561CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8563ORDER BY f_int1; 8564DROP TRIGGER trg_3; 8565 8566# check trigger-12 success: 1 8567Warnings: 8568Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8569DELETE FROM t1 8570WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8571AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8572AND f_charbig = '####updated per insert trigger####'; 8573ANALYZE TABLE t1; 8574Table Op Msg_type Msg_text 8575test.t1 analyze status OK 8576test.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. 8577CHECK TABLE t1 EXTENDED; 8578Table Op Msg_type Msg_text 8579test.t1 check status OK 8580test.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. 8581CHECKSUM TABLE t1 EXTENDED; 8582Table Checksum 8583test.t1 <some_value> 8584OPTIMIZE TABLE t1; 8585Table Op Msg_type Msg_text 8586test.t1 optimize status OK 8587test.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. 8588# check layout success: 1 8589REPAIR TABLE t1 EXTENDED; 8590Table Op Msg_type Msg_text 8591test.t1 repair status OK 8592test.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. 8593# check layout success: 1 8594TRUNCATE t1; 8595Warnings: 8596Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8597 8598# check TRUNCATE success: 1 8599# check layout success: 1 8600# End usability test (inc/partition_check.inc) 8601DROP TABLE t1; 8602#------------------------------------------------------------------------ 8603# 2 Tables with PRIMARY KEY and/or UNIQUE INDEXes 8604# The partitioning function contains one column. 8605#------------------------------------------------------------------------ 8606# 2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns 8607DROP TABLE IF EXISTS t1; 8608CREATE TABLE t1 ( 8609f_int1 INTEGER, 8610f_int2 INTEGER, 8611f_char1 CHAR(20), 8612f_char2 CHAR(20), 8613f_charbig VARCHAR(1000) 8614, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 8615) 8616PARTITION BY HASH(f_int1) PARTITIONS 2 8617(PARTITION p1 8618DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 8619INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 8620PARTITION p2 8621DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 8622INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 8623Warnings: 8624Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8625INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8626SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 8627Warnings: 8628Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 8629# Start usability test (inc/partition_check.inc) 8630create_command 8631SHOW CREATE TABLE t1; 8632Table Create Table 8633t1 CREATE TABLE `t1` ( 8634 `f_int1` int(11) DEFAULT NULL, 8635 `f_int2` int(11) DEFAULT NULL, 8636 `f_char1` char(20) DEFAULT NULL, 8637 `f_char2` char(20) DEFAULT NULL, 8638 `f_charbig` varchar(1000) DEFAULT NULL, 8639 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 8640 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 8641) ENGINE=MyISAM DEFAULT CHARSET=latin1 8642/*!50100 PARTITION BY HASH (f_int1) 8643(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 8644 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 8645 8646unified filelist 8647t1#P#p1.MYD 8648t1#P#p1.MYI 8649t1#P#p2.MYD 8650t1#P#p2.MYI 8651t1.frm 8652t1.par 8653t1#P#p1.MYD 8654t1#P#p2.MYD 8655t1#P#p1.MYI 8656t1#P#p2.MYI 8657 8658# check prerequisites-1 success: 1 8659# check COUNT(*) success: 1 8660# check MIN/MAX(f_int1) success: 1 8661# check MIN/MAX(f_int2) success: 1 8662INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8663SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8664CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8665WHERE f_int1 IN (2,3); 8666ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 8667# check prerequisites-3 success: 1 8668# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8669INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8670SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8671CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8672WHERE f_int1 IN (2,3); 8673DELETE FROM t1 WHERE f_charbig = 'delete me'; 8674INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8675SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8676CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8677WHERE f_int1 IN (2,3); 8678DELETE FROM t1 WHERE f_charbig = 'delete me'; 8679# check read via f_int1 success: 1 8680# check read via f_int2 success: 1 8681 8682# check multiple-1 success: 1 8683DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8684 8685# check multiple-2 success: 1 8686INSERT INTO t1 SELECT * FROM t0_template 8687WHERE MOD(f_int1,3) = 0; 8688 8689# check multiple-3 success: 1 8690UPDATE t1 SET f_int1 = f_int1 + @max_row 8691WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8692AND @max_row_div2 + @max_row_div4; 8693 8694# check multiple-4 success: 1 8695DELETE FROM t1 8696WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8697AND @max_row_div2 + @max_row_div4 + @max_row; 8698 8699# check multiple-5 success: 1 8700SELECT COUNT(*) INTO @try_count FROM t0_template 8701WHERE MOD(f_int1,3) = 0 8702AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8703SELECT COUNT(*) INTO @clash_count 8704FROM t1 INNER JOIN t0_template USING(f_int1) 8705WHERE MOD(f_int1,3) = 0 8706AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8707SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8708INSERT INTO t1 8709SET f_int1 = @cur_value , f_int2 = @cur_value, 8710f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8711f_charbig = '#SINGLE#'; 8712 8713# check single-1 success: 1 8714SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8715INSERT INTO t1 8716SET f_int1 = @cur_value , f_int2 = @cur_value, 8717f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8718f_charbig = '#SINGLE#'; 8719 8720# check single-2 success: 1 8721SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8722SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8723UPDATE t1 SET f_int1 = @cur_value2 8724WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8725 8726# check single-3 success: 1 8727SET @cur_value1= -1; 8728SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8729UPDATE t1 SET f_int1 = @cur_value1 8730WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8731 8732# check single-4 success: 1 8733SELECT MAX(f_int1) INTO @cur_value FROM t1; 8734DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8735 8736# check single-5 success: 1 8737DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8738 8739# check single-6 success: 1 8740INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8741 8742# check single-7 success: 1 8743DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8744DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8745INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8746f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8747f_charbig = '#NULL#'; 8748INSERT INTO t1 8749SET f_int1 = NULL , f_int2 = -@max_row, 8750f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8751f_charbig = '#NULL#'; 8752# check null success: 1 8753 8754# check null-1 success: 1 8755UPDATE t1 SET f_int1 = -@max_row 8756WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8757AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8758 8759# check null-2 success: 1 8760UPDATE t1 SET f_int1 = NULL 8761WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8762AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8763 8764# check null-3 success: 1 8765DELETE FROM t1 8766WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 8767AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 8768 8769# check null-4 success: 1 8770DELETE FROM t1 8771WHERE f_int1 = 0 AND f_int2 = 0 8772AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8773AND f_charbig = '#NULL#'; 8774INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8775SELECT f_int1, f_int1, '', '', 'was inserted' 8776 FROM t0_template source_tab 8777WHERE MOD(f_int1,3) = 0 8778AND f_int1 BETWEEN @max_row_div2 AND @max_row 8779ON DUPLICATE KEY 8780UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8781f_int2 = 2 * @max_row + source_tab.f_int1, 8782f_charbig = 'was updated'; 8783 8784# check unique-1-a success: 1 8785 8786# check unique-1-b success: 1 8787DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8788UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8789f_int2 = CAST(f_char1 AS SIGNED INT), 8790f_charbig = CONCAT('===',f_char1,'===') 8791WHERE f_charbig = 'was updated'; 8792REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8793SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8794 FROM t0_template source_tab 8795WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8796 8797# check replace success: 1 8798DELETE FROM t1 8799WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8800DELETE FROM t1 8801WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8802f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8803UPDATE t1 SET f_int2 = f_int1, 8804f_char1 = CAST(f_int1 AS CHAR), 8805f_char2 = CAST(f_int1 AS CHAR), 8806f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8807WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8808SET AUTOCOMMIT= 0; 8809INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8810SELECT f_int1, f_int1, '', '', 'was inserted' 8811FROM t0_template source_tab 8812WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8813 8814# check transactions-1 success: 1 8815COMMIT WORK; 8816 8817# check transactions-2 success: 1 8818ROLLBACK WORK; 8819 8820# check transactions-3 success: 1 8821DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8822COMMIT WORK; 8823ROLLBACK WORK; 8824 8825# check transactions-4 success: 1 8826INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8827SELECT f_int1, f_int1, '', '', 'was inserted' 8828FROM t0_template source_tab 8829WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8830 8831# check transactions-5 success: 1 8832ROLLBACK WORK; 8833Warnings: 8834Warning 1196 Some non-transactional changed tables couldn't be rolled back 8835 8836# check transactions-6 success: 1 8837# INFO: Storage engine used for t1 seems to be not transactional. 8838COMMIT; 8839 8840# check transactions-7 success: 1 8841DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8842COMMIT WORK; 8843SET @@session.sql_mode = 'traditional'; 8844Warnings: 8845Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8846SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8847INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8848SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8849'', '', 'was inserted' FROM t0_template 8850WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8851ERROR 22012: Division by 0 8852COMMIT; 8853 8854# check transactions-8 success: 1 8855# INFO: Storage engine used for t1 seems to be unable to revert 8856# changes made by the failing statement. 8857SET @@session.sql_mode = ''; 8858Warnings: 8859Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8860SET AUTOCOMMIT= 1; 8861DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8862COMMIT WORK; 8863UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8864 8865# check special-1 success: 1 8866UPDATE t1 SET f_charbig = ''; 8867 8868# check special-2 success: 1 8869UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8870INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8871SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8872WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8873INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8874SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8875'just inserted' FROM t0_template 8876WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8877CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8878BEGIN 8879UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8880f_charbig = 'updated by trigger' 8881 WHERE f_int1 = new.f_int1; 8882END| 8883INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8884SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8885WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8886 8887# check trigger-1 success: 1 8888DROP TRIGGER trg_1; 8889UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8890f_int2 = CAST(f_char1 AS SIGNED INT), 8891f_charbig = 'just inserted' 8892 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8893DELETE FROM t0_aux 8894WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8895INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8896SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8897'just inserted' FROM t0_template 8898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8899CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8900BEGIN 8901UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8902f_charbig = 'updated by trigger' 8903 WHERE f_int1 = new.f_int1; 8904END| 8905INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8906SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8907WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8908 8909# check trigger-2 success: 1 8910DROP TRIGGER trg_1; 8911UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8912f_int2 = CAST(f_char1 AS SIGNED INT), 8913f_charbig = 'just inserted' 8914 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8915DELETE FROM t0_aux 8916WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8917INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8918SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8919'just inserted' FROM t0_template 8920WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8921CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8922BEGIN 8923UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8924f_charbig = 'updated by trigger' 8925 WHERE f_int1 = new.f_int1; 8926END| 8927UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8928WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8929 8930# check trigger-3 success: 1 8931DROP TRIGGER trg_1; 8932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8933f_int2 = CAST(f_char1 AS SIGNED INT), 8934f_charbig = 'just inserted' 8935 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8936DELETE FROM t0_aux 8937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8940'just inserted' FROM t0_template 8941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8942CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8943BEGIN 8944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8945f_charbig = 'updated by trigger' 8946 WHERE f_int1 = - old.f_int1; 8947END| 8948UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8949WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8950 8951# check trigger-4 success: 1 8952DROP TRIGGER trg_1; 8953UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8954f_int2 = CAST(f_char1 AS SIGNED INT), 8955f_charbig = 'just inserted' 8956 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8957DELETE FROM t0_aux 8958WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8959INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8960SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8961'just inserted' FROM t0_template 8962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8963CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8964BEGIN 8965UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8966f_charbig = 'updated by trigger' 8967 WHERE f_int1 = new.f_int1; 8968END| 8969UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8971 8972# check trigger-5 success: 1 8973DROP TRIGGER trg_1; 8974UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8975f_int2 = CAST(f_char1 AS SIGNED INT), 8976f_charbig = 'just inserted' 8977 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8978DELETE FROM t0_aux 8979WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8980INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8981SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8982'just inserted' FROM t0_template 8983WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8984CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8985BEGIN 8986UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8987f_charbig = 'updated by trigger' 8988 WHERE f_int1 = - old.f_int1; 8989END| 8990UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8991WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8992 8993# check trigger-6 success: 1 8994DROP TRIGGER trg_1; 8995UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8996f_int2 = CAST(f_char1 AS SIGNED INT), 8997f_charbig = 'just inserted' 8998 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8999DELETE FROM t0_aux 9000WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9001INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9002SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9003'just inserted' FROM t0_template 9004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9005CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9006BEGIN 9007UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9008f_charbig = 'updated by trigger' 9009 WHERE f_int1 = - old.f_int1; 9010END| 9011DELETE FROM t0_aux 9012WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9013 9014# check trigger-7 success: 1 9015DROP TRIGGER trg_1; 9016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9017f_int2 = CAST(f_char1 AS SIGNED INT), 9018f_charbig = 'just inserted' 9019 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9020DELETE FROM t0_aux 9021WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9022INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9023SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9024'just inserted' FROM t0_template 9025WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9026CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9027BEGIN 9028UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9029f_charbig = 'updated by trigger' 9030 WHERE f_int1 = - old.f_int1; 9031END| 9032DELETE FROM t0_aux 9033WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9034 9035# check trigger-8 success: 1 9036DROP TRIGGER trg_1; 9037UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9038f_int2 = CAST(f_char1 AS SIGNED INT), 9039f_charbig = 'just inserted' 9040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9041DELETE FROM t0_aux 9042WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9043DELETE FROM t1 9044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9045CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9046BEGIN 9047SET new.f_int1 = old.f_int1 + @max_row, 9048new.f_int2 = old.f_int2 - @max_row, 9049new.f_charbig = '####updated per update trigger####'; 9050END| 9051UPDATE t1 9052SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9053f_charbig = '####updated per update statement itself####'; 9054Warnings: 9055Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9056 9057# check trigger-9 success: 1 9058DROP TRIGGER trg_2; 9059UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9060f_int2 = CAST(f_char1 AS SIGNED INT), 9061f_charbig = CONCAT('===',f_char1,'==='); 9062Warnings: 9063Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9064CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9065BEGIN 9066SET new.f_int1 = new.f_int1 + @max_row, 9067new.f_int2 = new.f_int2 - @max_row, 9068new.f_charbig = '####updated per update trigger####'; 9069END| 9070UPDATE t1 9071SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9072f_charbig = '####updated per update statement itself####'; 9073Warnings: 9074Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9075 9076# check trigger-10 success: 1 9077DROP TRIGGER trg_2; 9078UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9079f_int2 = CAST(f_char1 AS SIGNED INT), 9080f_charbig = CONCAT('===',f_char1,'==='); 9081Warnings: 9082Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9083CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9084BEGIN 9085SET new.f_int1 = @my_max1 + @counter, 9086new.f_int2 = @my_min2 - @counter, 9087new.f_charbig = '####updated per insert trigger####'; 9088SET @counter = @counter + 1; 9089END| 9090SET @counter = 1; 9091SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9092Warnings: 9093Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9094INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9095SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9096CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9097WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9098ORDER BY f_int1; 9099DROP TRIGGER trg_3; 9100 9101# check trigger-11 success: 1 9102Warnings: 9103Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9104DELETE FROM t1 9105WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9106AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9107AND f_charbig = '####updated per insert trigger####'; 9108CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9109BEGIN 9110SET new.f_int1 = @my_max1 + @counter, 9111new.f_int2 = @my_min2 - @counter, 9112new.f_charbig = '####updated per insert trigger####'; 9113SET @counter = @counter + 1; 9114END| 9115SET @counter = 1; 9116SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9117Warnings: 9118Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9119INSERT INTO t1 (f_char1, f_char2, f_charbig) 9120SELECT CAST(f_int1 AS CHAR), 9121CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9123ORDER BY f_int1; 9124DROP TRIGGER trg_3; 9125 9126# check trigger-12 success: 1 9127Warnings: 9128Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9129DELETE FROM t1 9130WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9131AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9132AND f_charbig = '####updated per insert trigger####'; 9133ANALYZE TABLE t1; 9134Table Op Msg_type Msg_text 9135test.t1 analyze status OK 9136test.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. 9137CHECK TABLE t1 EXTENDED; 9138Table Op Msg_type Msg_text 9139test.t1 check status OK 9140test.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. 9141CHECKSUM TABLE t1 EXTENDED; 9142Table Checksum 9143test.t1 <some_value> 9144OPTIMIZE TABLE t1; 9145Table Op Msg_type Msg_text 9146test.t1 optimize status OK 9147test.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. 9148# check layout success: 1 9149REPAIR TABLE t1 EXTENDED; 9150Table Op Msg_type Msg_text 9151test.t1 repair status OK 9152test.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. 9153# check layout success: 1 9154TRUNCATE t1; 9155Warnings: 9156Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9157 9158# check TRUNCATE success: 1 9159# check layout success: 1 9160# End usability test (inc/partition_check.inc) 9161DROP TABLE t1; 9162CREATE TABLE t1 ( 9163f_int1 INTEGER, 9164f_int2 INTEGER, 9165f_char1 CHAR(20), 9166f_char2 CHAR(20), 9167f_charbig VARCHAR(1000) 9168, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 9169) 9170PARTITION BY KEY(f_int1) PARTITIONS 5 9171(PARTITION p1 9172DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 9173INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9174PARTITION p2 9175DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 9176INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9177PARTITION p3 9178DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 9179INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9180PARTITION p4 9181DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 9182INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9183PARTITION p5 9184DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 9185INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 9186Warnings: 9187Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9188INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9189SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 9190Warnings: 9191Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9192# Start usability test (inc/partition_check.inc) 9193create_command 9194SHOW CREATE TABLE t1; 9195Table Create Table 9196t1 CREATE TABLE `t1` ( 9197 `f_int1` int(11) DEFAULT NULL, 9198 `f_int2` int(11) DEFAULT NULL, 9199 `f_char1` char(20) DEFAULT NULL, 9200 `f_char2` char(20) DEFAULT NULL, 9201 `f_charbig` varchar(1000) DEFAULT NULL, 9202 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 9203 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 9204) ENGINE=MyISAM DEFAULT CHARSET=latin1 9205/*!50100 PARTITION BY KEY (f_int1) 9206(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9207 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9208 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9209 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9210 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 9211 9212unified filelist 9213t1#P#p1.MYD 9214t1#P#p1.MYI 9215t1#P#p2.MYD 9216t1#P#p2.MYI 9217t1#P#p3.MYD 9218t1#P#p3.MYI 9219t1#P#p4.MYD 9220t1#P#p4.MYI 9221t1#P#p5.MYD 9222t1#P#p5.MYI 9223t1.frm 9224t1.par 9225t1#P#p1.MYD 9226t1#P#p2.MYD 9227t1#P#p3.MYD 9228t1#P#p4.MYD 9229t1#P#p5.MYD 9230t1#P#p1.MYI 9231t1#P#p2.MYI 9232t1#P#p3.MYI 9233t1#P#p4.MYI 9234t1#P#p5.MYI 9235 9236# check prerequisites-1 success: 1 9237# check COUNT(*) success: 1 9238# check MIN/MAX(f_int1) success: 1 9239# check MIN/MAX(f_int2) success: 1 9240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9241SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9242CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9243WHERE f_int1 IN (2,3); 9244ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 9245# check prerequisites-3 success: 1 9246# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9247INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9248SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9249CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9250WHERE f_int1 IN (2,3); 9251DELETE FROM t1 WHERE f_charbig = 'delete me'; 9252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9253SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9254CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9255WHERE f_int1 IN (2,3); 9256DELETE FROM t1 WHERE f_charbig = 'delete me'; 9257# check read via f_int1 success: 1 9258# check read via f_int2 success: 1 9259 9260# check multiple-1 success: 1 9261DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9262 9263# check multiple-2 success: 1 9264INSERT INTO t1 SELECT * FROM t0_template 9265WHERE MOD(f_int1,3) = 0; 9266 9267# check multiple-3 success: 1 9268UPDATE t1 SET f_int1 = f_int1 + @max_row 9269WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9270AND @max_row_div2 + @max_row_div4; 9271 9272# check multiple-4 success: 1 9273DELETE FROM t1 9274WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9275AND @max_row_div2 + @max_row_div4 + @max_row; 9276 9277# check multiple-5 success: 1 9278SELECT COUNT(*) INTO @try_count FROM t0_template 9279WHERE MOD(f_int1,3) = 0 9280AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9281SELECT COUNT(*) INTO @clash_count 9282FROM t1 INNER JOIN t0_template USING(f_int1) 9283WHERE MOD(f_int1,3) = 0 9284AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9285SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9286INSERT INTO t1 9287SET f_int1 = @cur_value , f_int2 = @cur_value, 9288f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9289f_charbig = '#SINGLE#'; 9290 9291# check single-1 success: 1 9292SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9293INSERT INTO t1 9294SET f_int1 = @cur_value , f_int2 = @cur_value, 9295f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9296f_charbig = '#SINGLE#'; 9297 9298# check single-2 success: 1 9299SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9300SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9301UPDATE t1 SET f_int1 = @cur_value2 9302WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9303 9304# check single-3 success: 1 9305SET @cur_value1= -1; 9306SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9307UPDATE t1 SET f_int1 = @cur_value1 9308WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9309 9310# check single-4 success: 1 9311SELECT MAX(f_int1) INTO @cur_value FROM t1; 9312DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9313 9314# check single-5 success: 1 9315DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9316 9317# check single-6 success: 1 9318INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9319 9320# check single-7 success: 1 9321DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 9322DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9323INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9324f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9325f_charbig = '#NULL#'; 9326INSERT INTO t1 9327SET f_int1 = NULL , f_int2 = -@max_row, 9328f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9329f_charbig = '#NULL#'; 9330# check null success: 1 9331 9332# check null-1 success: 1 9333UPDATE t1 SET f_int1 = -@max_row 9334WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9335AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9336 9337# check null-2 success: 1 9338UPDATE t1 SET f_int1 = NULL 9339WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9340AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9341 9342# check null-3 success: 1 9343DELETE FROM t1 9344WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9345AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9346 9347# check null-4 success: 1 9348DELETE FROM t1 9349WHERE f_int1 = 0 AND f_int2 = 0 9350AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9351AND f_charbig = '#NULL#'; 9352INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9353SELECT f_int1, f_int1, '', '', 'was inserted' 9354 FROM t0_template source_tab 9355WHERE MOD(f_int1,3) = 0 9356AND f_int1 BETWEEN @max_row_div2 AND @max_row 9357ON DUPLICATE KEY 9358UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9359f_int2 = 2 * @max_row + source_tab.f_int1, 9360f_charbig = 'was updated'; 9361 9362# check unique-1-a success: 1 9363 9364# check unique-1-b success: 1 9365DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9366UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9367f_int2 = CAST(f_char1 AS SIGNED INT), 9368f_charbig = CONCAT('===',f_char1,'===') 9369WHERE f_charbig = 'was updated'; 9370REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9371SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9372 FROM t0_template source_tab 9373WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9374 9375# check replace success: 1 9376DELETE FROM t1 9377WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9378DELETE FROM t1 9379WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9380f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9381UPDATE t1 SET f_int2 = f_int1, 9382f_char1 = CAST(f_int1 AS CHAR), 9383f_char2 = CAST(f_int1 AS CHAR), 9384f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9385WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9386SET AUTOCOMMIT= 0; 9387INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9388SELECT f_int1, f_int1, '', '', 'was inserted' 9389FROM t0_template source_tab 9390WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9391 9392# check transactions-1 success: 1 9393COMMIT WORK; 9394 9395# check transactions-2 success: 1 9396ROLLBACK WORK; 9397 9398# check transactions-3 success: 1 9399DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9400COMMIT WORK; 9401ROLLBACK WORK; 9402 9403# check transactions-4 success: 1 9404INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9405SELECT f_int1, f_int1, '', '', 'was inserted' 9406FROM t0_template source_tab 9407WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9408 9409# check transactions-5 success: 1 9410ROLLBACK WORK; 9411Warnings: 9412Warning 1196 Some non-transactional changed tables couldn't be rolled back 9413 9414# check transactions-6 success: 1 9415# INFO: Storage engine used for t1 seems to be not transactional. 9416COMMIT; 9417 9418# check transactions-7 success: 1 9419DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9420COMMIT WORK; 9421SET @@session.sql_mode = 'traditional'; 9422Warnings: 9423Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9424SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9425INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9426SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9427'', '', 'was inserted' FROM t0_template 9428WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9429ERROR 22012: Division by 0 9430COMMIT; 9431 9432# check transactions-8 success: 1 9433# INFO: Storage engine used for t1 seems to be unable to revert 9434# changes made by the failing statement. 9435SET @@session.sql_mode = ''; 9436Warnings: 9437Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9438SET AUTOCOMMIT= 1; 9439DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9440COMMIT WORK; 9441UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9442 9443# check special-1 success: 1 9444UPDATE t1 SET f_charbig = ''; 9445 9446# check special-2 success: 1 9447UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9448INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9449SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9451INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9452SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9453'just inserted' FROM t0_template 9454WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9455CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9456BEGIN 9457UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9458f_charbig = 'updated by trigger' 9459 WHERE f_int1 = new.f_int1; 9460END| 9461INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9462SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9463WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9464 9465# check trigger-1 success: 1 9466DROP TRIGGER trg_1; 9467UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9468f_int2 = CAST(f_char1 AS SIGNED INT), 9469f_charbig = 'just inserted' 9470 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9471DELETE FROM t0_aux 9472WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9473INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9474SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9475'just inserted' FROM t0_template 9476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9477CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9478BEGIN 9479UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9480f_charbig = 'updated by trigger' 9481 WHERE f_int1 = new.f_int1; 9482END| 9483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9484SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9485WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9486 9487# check trigger-2 success: 1 9488DROP TRIGGER trg_1; 9489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9490f_int2 = CAST(f_char1 AS SIGNED INT), 9491f_charbig = 'just inserted' 9492 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9493DELETE FROM t0_aux 9494WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9495INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9496SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9497'just inserted' FROM t0_template 9498WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9499CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9500BEGIN 9501UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9502f_charbig = 'updated by trigger' 9503 WHERE f_int1 = new.f_int1; 9504END| 9505UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9506WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9507 9508# check trigger-3 success: 1 9509DROP TRIGGER trg_1; 9510UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9511f_int2 = CAST(f_char1 AS SIGNED INT), 9512f_charbig = 'just inserted' 9513 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9514DELETE FROM t0_aux 9515WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9516INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9517SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9518'just inserted' FROM t0_template 9519WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9520CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9521BEGIN 9522UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9523f_charbig = 'updated by trigger' 9524 WHERE f_int1 = - old.f_int1; 9525END| 9526UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9527WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9528 9529# check trigger-4 success: 1 9530DROP TRIGGER trg_1; 9531UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9532f_int2 = CAST(f_char1 AS SIGNED INT), 9533f_charbig = 'just inserted' 9534 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9535DELETE FROM t0_aux 9536WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9537INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9538SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9539'just inserted' FROM t0_template 9540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9541CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9542BEGIN 9543UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9544f_charbig = 'updated by trigger' 9545 WHERE f_int1 = new.f_int1; 9546END| 9547UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9548WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9549 9550# check trigger-5 success: 1 9551DROP TRIGGER trg_1; 9552UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9553f_int2 = CAST(f_char1 AS SIGNED INT), 9554f_charbig = 'just inserted' 9555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9556DELETE FROM t0_aux 9557WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9558INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9559SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9560'just inserted' FROM t0_template 9561WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9562CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9563BEGIN 9564UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9565f_charbig = 'updated by trigger' 9566 WHERE f_int1 = - old.f_int1; 9567END| 9568UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9569WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9570 9571# check trigger-6 success: 1 9572DROP TRIGGER trg_1; 9573UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9574f_int2 = CAST(f_char1 AS SIGNED INT), 9575f_charbig = 'just inserted' 9576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9577DELETE FROM t0_aux 9578WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9579INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9580SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9581'just inserted' FROM t0_template 9582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9583CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9584BEGIN 9585UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9586f_charbig = 'updated by trigger' 9587 WHERE f_int1 = - old.f_int1; 9588END| 9589DELETE FROM t0_aux 9590WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9591 9592# check trigger-7 success: 1 9593DROP TRIGGER trg_1; 9594UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9595f_int2 = CAST(f_char1 AS SIGNED INT), 9596f_charbig = 'just inserted' 9597 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9598DELETE FROM t0_aux 9599WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9600INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9601SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9602'just inserted' FROM t0_template 9603WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9604CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9605BEGIN 9606UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9607f_charbig = 'updated by trigger' 9608 WHERE f_int1 = - old.f_int1; 9609END| 9610DELETE FROM t0_aux 9611WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9612 9613# check trigger-8 success: 1 9614DROP TRIGGER trg_1; 9615UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9616f_int2 = CAST(f_char1 AS SIGNED INT), 9617f_charbig = 'just inserted' 9618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9619DELETE FROM t0_aux 9620WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9621DELETE FROM t1 9622WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9623CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9624BEGIN 9625SET new.f_int1 = old.f_int1 + @max_row, 9626new.f_int2 = old.f_int2 - @max_row, 9627new.f_charbig = '####updated per update trigger####'; 9628END| 9629UPDATE t1 9630SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9631f_charbig = '####updated per update statement itself####'; 9632Warnings: 9633Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9634 9635# check trigger-9 success: 1 9636DROP TRIGGER trg_2; 9637UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9638f_int2 = CAST(f_char1 AS SIGNED INT), 9639f_charbig = CONCAT('===',f_char1,'==='); 9640Warnings: 9641Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9642CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9643BEGIN 9644SET new.f_int1 = new.f_int1 + @max_row, 9645new.f_int2 = new.f_int2 - @max_row, 9646new.f_charbig = '####updated per update trigger####'; 9647END| 9648UPDATE t1 9649SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9650f_charbig = '####updated per update statement itself####'; 9651Warnings: 9652Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9653 9654# check trigger-10 success: 1 9655DROP TRIGGER trg_2; 9656UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9657f_int2 = CAST(f_char1 AS SIGNED INT), 9658f_charbig = CONCAT('===',f_char1,'==='); 9659Warnings: 9660Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9661CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9662BEGIN 9663SET new.f_int1 = @my_max1 + @counter, 9664new.f_int2 = @my_min2 - @counter, 9665new.f_charbig = '####updated per insert trigger####'; 9666SET @counter = @counter + 1; 9667END| 9668SET @counter = 1; 9669SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9670Warnings: 9671Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9672INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9673SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9674CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9676ORDER BY f_int1; 9677DROP TRIGGER trg_3; 9678 9679# check trigger-11 success: 1 9680Warnings: 9681Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9682DELETE FROM t1 9683WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9684AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9685AND f_charbig = '####updated per insert trigger####'; 9686CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9687BEGIN 9688SET new.f_int1 = @my_max1 + @counter, 9689new.f_int2 = @my_min2 - @counter, 9690new.f_charbig = '####updated per insert trigger####'; 9691SET @counter = @counter + 1; 9692END| 9693SET @counter = 1; 9694SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9695Warnings: 9696Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9697INSERT INTO t1 (f_char1, f_char2, f_charbig) 9698SELECT CAST(f_int1 AS CHAR), 9699CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9701ORDER BY f_int1; 9702DROP TRIGGER trg_3; 9703 9704# check trigger-12 success: 1 9705Warnings: 9706Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9707DELETE FROM t1 9708WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9709AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9710AND f_charbig = '####updated per insert trigger####'; 9711ANALYZE TABLE t1; 9712Table Op Msg_type Msg_text 9713test.t1 analyze status OK 9714test.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. 9715CHECK TABLE t1 EXTENDED; 9716Table Op Msg_type Msg_text 9717test.t1 check status OK 9718test.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. 9719CHECKSUM TABLE t1 EXTENDED; 9720Table Checksum 9721test.t1 <some_value> 9722OPTIMIZE TABLE t1; 9723Table Op Msg_type Msg_text 9724test.t1 optimize status OK 9725test.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. 9726# check layout success: 1 9727REPAIR TABLE t1 EXTENDED; 9728Table Op Msg_type Msg_text 9729test.t1 repair status OK 9730test.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. 9731# check layout success: 1 9732TRUNCATE t1; 9733Warnings: 9734Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9735 9736# check TRUNCATE success: 1 9737# check layout success: 1 9738# End usability test (inc/partition_check.inc) 9739DROP TABLE t1; 9740CREATE TABLE t1 ( 9741f_int1 INTEGER, 9742f_int2 INTEGER, 9743f_char1 CHAR(20), 9744f_char2 CHAR(20), 9745f_charbig VARCHAR(1000) 9746, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 9747) 9748PARTITION BY LIST(MOD(f_int1,4)) 9749(PARTITION part_3 VALUES IN (-3) 9750DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9751PARTITION part_2 VALUES IN (-2) 9752DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9753PARTITION part_1 VALUES IN (-1) 9754DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9755PARTITION part_N VALUES IN (NULL) 9756DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9757PARTITION part0 VALUES IN (0) 9758DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9759PARTITION part1 VALUES IN (1) 9760DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9761PARTITION part2 VALUES IN (2) 9762DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 9763PARTITION part3 VALUES IN (3) 9764DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 9765Warnings: 9766Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9767INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9768SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 9769Warnings: 9770Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 9771# Start usability test (inc/partition_check.inc) 9772create_command 9773SHOW CREATE TABLE t1; 9774Table Create Table 9775t1 CREATE TABLE `t1` ( 9776 `f_int1` int(11) DEFAULT NULL, 9777 `f_int2` int(11) DEFAULT NULL, 9778 `f_char1` char(20) DEFAULT NULL, 9779 `f_char2` char(20) DEFAULT NULL, 9780 `f_charbig` varchar(1000) DEFAULT NULL, 9781 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 9782 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 9783) ENGINE=MyISAM DEFAULT CHARSET=latin1 9784/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 9785(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9786 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9787 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9788 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9789 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9790 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9791 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 9792 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 9793 9794unified filelist 9795t1#P#part0.MYD 9796t1#P#part0.MYI 9797t1#P#part1.MYD 9798t1#P#part1.MYI 9799t1#P#part2.MYD 9800t1#P#part2.MYI 9801t1#P#part3.MYD 9802t1#P#part3.MYI 9803t1#P#part_1.MYD 9804t1#P#part_1.MYI 9805t1#P#part_2.MYD 9806t1#P#part_2.MYI 9807t1#P#part_3.MYD 9808t1#P#part_3.MYI 9809t1#P#part_N.MYD 9810t1#P#part_N.MYI 9811t1.frm 9812t1.par 9813t1#P#part0.MYD 9814t1#P#part1.MYD 9815t1#P#part2.MYD 9816t1#P#part3.MYD 9817t1#P#part_1.MYD 9818t1#P#part_2.MYD 9819t1#P#part_3.MYD 9820t1#P#part_N.MYD 9821t1#P#part0.MYI 9822t1#P#part1.MYI 9823t1#P#part2.MYI 9824t1#P#part3.MYI 9825t1#P#part_1.MYI 9826t1#P#part_2.MYI 9827t1#P#part_3.MYI 9828t1#P#part_N.MYI 9829 9830# check prerequisites-1 success: 1 9831# check COUNT(*) success: 1 9832# check MIN/MAX(f_int1) success: 1 9833# check MIN/MAX(f_int2) success: 1 9834INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9835SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9836CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9837WHERE f_int1 IN (2,3); 9838ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 9839# check prerequisites-3 success: 1 9840# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9841INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9842SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9843CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9844WHERE f_int1 IN (2,3); 9845DELETE FROM t1 WHERE f_charbig = 'delete me'; 9846INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9847SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9848CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9849WHERE f_int1 IN (2,3); 9850DELETE FROM t1 WHERE f_charbig = 'delete me'; 9851# check read via f_int1 success: 1 9852# check read via f_int2 success: 1 9853 9854# check multiple-1 success: 1 9855DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9856 9857# check multiple-2 success: 1 9858INSERT INTO t1 SELECT * FROM t0_template 9859WHERE MOD(f_int1,3) = 0; 9860 9861# check multiple-3 success: 1 9862UPDATE t1 SET f_int1 = f_int1 + @max_row 9863WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9864AND @max_row_div2 + @max_row_div4; 9865 9866# check multiple-4 success: 1 9867DELETE FROM t1 9868WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9869AND @max_row_div2 + @max_row_div4 + @max_row; 9870 9871# check multiple-5 success: 1 9872SELECT COUNT(*) INTO @try_count FROM t0_template 9873WHERE MOD(f_int1,3) = 0 9874AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9875SELECT COUNT(*) INTO @clash_count 9876FROM t1 INNER JOIN t0_template USING(f_int1) 9877WHERE MOD(f_int1,3) = 0 9878AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9879SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9880INSERT INTO t1 9881SET f_int1 = @cur_value , f_int2 = @cur_value, 9882f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9883f_charbig = '#SINGLE#'; 9884 9885# check single-1 success: 1 9886SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9887INSERT INTO t1 9888SET f_int1 = @cur_value , f_int2 = @cur_value, 9889f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9890f_charbig = '#SINGLE#'; 9891 9892# check single-2 success: 1 9893SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9894SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9895UPDATE t1 SET f_int1 = @cur_value2 9896WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9897 9898# check single-3 success: 1 9899SET @cur_value1= -1; 9900SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9901UPDATE t1 SET f_int1 = @cur_value1 9902WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9903 9904# check single-4 success: 1 9905SELECT MAX(f_int1) INTO @cur_value FROM t1; 9906DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9907 9908# check single-5 success: 1 9909DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9910 9911# check single-6 success: 1 9912INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9913 9914# check single-7 success: 1 9915DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 9916DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9917INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9918f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9919f_charbig = '#NULL#'; 9920INSERT INTO t1 9921SET f_int1 = NULL , f_int2 = -@max_row, 9922f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9923f_charbig = '#NULL#'; 9924# check null success: 1 9925 9926# check null-1 success: 1 9927UPDATE t1 SET f_int1 = -@max_row 9928WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9929AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9930 9931# check null-2 success: 1 9932UPDATE t1 SET f_int1 = NULL 9933WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9934AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9935 9936# check null-3 success: 1 9937DELETE FROM t1 9938WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 9939AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 9940 9941# check null-4 success: 1 9942DELETE FROM t1 9943WHERE f_int1 = 0 AND f_int2 = 0 9944AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9945AND f_charbig = '#NULL#'; 9946INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9947SELECT f_int1, f_int1, '', '', 'was inserted' 9948 FROM t0_template source_tab 9949WHERE MOD(f_int1,3) = 0 9950AND f_int1 BETWEEN @max_row_div2 AND @max_row 9951ON DUPLICATE KEY 9952UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9953f_int2 = 2 * @max_row + source_tab.f_int1, 9954f_charbig = 'was updated'; 9955 9956# check unique-1-a success: 1 9957 9958# check unique-1-b success: 1 9959DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9961f_int2 = CAST(f_char1 AS SIGNED INT), 9962f_charbig = CONCAT('===',f_char1,'===') 9963WHERE f_charbig = 'was updated'; 9964REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9965SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9966 FROM t0_template source_tab 9967WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9968 9969# check replace success: 1 9970DELETE FROM t1 9971WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9972DELETE FROM t1 9973WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9974f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9975UPDATE t1 SET f_int2 = f_int1, 9976f_char1 = CAST(f_int1 AS CHAR), 9977f_char2 = CAST(f_int1 AS CHAR), 9978f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9979WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9980SET AUTOCOMMIT= 0; 9981INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9982SELECT f_int1, f_int1, '', '', 'was inserted' 9983FROM t0_template source_tab 9984WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9985 9986# check transactions-1 success: 1 9987COMMIT WORK; 9988 9989# check transactions-2 success: 1 9990ROLLBACK WORK; 9991 9992# check transactions-3 success: 1 9993DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9994COMMIT WORK; 9995ROLLBACK WORK; 9996 9997# check transactions-4 success: 1 9998INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9999SELECT f_int1, f_int1, '', '', 'was inserted' 10000FROM t0_template source_tab 10001WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10002 10003# check transactions-5 success: 1 10004ROLLBACK WORK; 10005Warnings: 10006Warning 1196 Some non-transactional changed tables couldn't be rolled back 10007 10008# check transactions-6 success: 1 10009# INFO: Storage engine used for t1 seems to be not transactional. 10010COMMIT; 10011 10012# check transactions-7 success: 1 10013DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10014COMMIT WORK; 10015SET @@session.sql_mode = 'traditional'; 10016Warnings: 10017Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10018SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10019INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10020SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10021'', '', 'was inserted' FROM t0_template 10022WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10023ERROR 22012: Division by 0 10024COMMIT; 10025 10026# check transactions-8 success: 1 10027# INFO: Storage engine used for t1 seems to be unable to revert 10028# changes made by the failing statement. 10029SET @@session.sql_mode = ''; 10030Warnings: 10031Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10032SET AUTOCOMMIT= 1; 10033DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10034COMMIT WORK; 10035UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10036 10037# check special-1 success: 1 10038UPDATE t1 SET f_charbig = ''; 10039 10040# check special-2 success: 1 10041UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10042INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10043SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10045INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10046SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10047'just inserted' FROM t0_template 10048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10049CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10050BEGIN 10051UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10052f_charbig = 'updated by trigger' 10053 WHERE f_int1 = new.f_int1; 10054END| 10055INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10056SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10057WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10058 10059# check trigger-1 success: 1 10060DROP TRIGGER trg_1; 10061UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10062f_int2 = CAST(f_char1 AS SIGNED INT), 10063f_charbig = 'just inserted' 10064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10065DELETE FROM t0_aux 10066WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10067INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10068SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10069'just inserted' FROM t0_template 10070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10071CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10072BEGIN 10073UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10074f_charbig = 'updated by trigger' 10075 WHERE f_int1 = new.f_int1; 10076END| 10077INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10078SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10079WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10080 10081# check trigger-2 success: 1 10082DROP TRIGGER trg_1; 10083UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10084f_int2 = CAST(f_char1 AS SIGNED INT), 10085f_charbig = 'just inserted' 10086 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10087DELETE FROM t0_aux 10088WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10089INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10090SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10091'just inserted' FROM t0_template 10092WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10093CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10094BEGIN 10095UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10096f_charbig = 'updated by trigger' 10097 WHERE f_int1 = new.f_int1; 10098END| 10099UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10100WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10101 10102# check trigger-3 success: 1 10103DROP TRIGGER trg_1; 10104UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10105f_int2 = CAST(f_char1 AS SIGNED INT), 10106f_charbig = 'just inserted' 10107 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10108DELETE FROM t0_aux 10109WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10110INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10111SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10112'just inserted' FROM t0_template 10113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10114CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10115BEGIN 10116UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10117f_charbig = 'updated by trigger' 10118 WHERE f_int1 = - old.f_int1; 10119END| 10120UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10121WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10122 10123# check trigger-4 success: 1 10124DROP TRIGGER trg_1; 10125UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10126f_int2 = CAST(f_char1 AS SIGNED INT), 10127f_charbig = 'just inserted' 10128 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10129DELETE FROM t0_aux 10130WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10131INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10132SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10133'just inserted' FROM t0_template 10134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10135CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10136BEGIN 10137UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10138f_charbig = 'updated by trigger' 10139 WHERE f_int1 = new.f_int1; 10140END| 10141UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10142WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10143 10144# check trigger-5 success: 1 10145DROP TRIGGER trg_1; 10146UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10147f_int2 = CAST(f_char1 AS SIGNED INT), 10148f_charbig = 'just inserted' 10149 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10150DELETE FROM t0_aux 10151WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10153SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10154'just inserted' FROM t0_template 10155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10156CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10157BEGIN 10158UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10159f_charbig = 'updated by trigger' 10160 WHERE f_int1 = - old.f_int1; 10161END| 10162UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10163WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10164 10165# check trigger-6 success: 1 10166DROP TRIGGER trg_1; 10167UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10168f_int2 = CAST(f_char1 AS SIGNED INT), 10169f_charbig = 'just inserted' 10170 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10171DELETE FROM t0_aux 10172WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10173INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10174SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10175'just inserted' FROM t0_template 10176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10177CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10178BEGIN 10179UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10180f_charbig = 'updated by trigger' 10181 WHERE f_int1 = - old.f_int1; 10182END| 10183DELETE FROM t0_aux 10184WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10185 10186# check trigger-7 success: 1 10187DROP TRIGGER trg_1; 10188UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10189f_int2 = CAST(f_char1 AS SIGNED INT), 10190f_charbig = 'just inserted' 10191 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10192DELETE FROM t0_aux 10193WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10194INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10195SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10196'just inserted' FROM t0_template 10197WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10198CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10199BEGIN 10200UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10201f_charbig = 'updated by trigger' 10202 WHERE f_int1 = - old.f_int1; 10203END| 10204DELETE FROM t0_aux 10205WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10206 10207# check trigger-8 success: 1 10208DROP TRIGGER trg_1; 10209UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10210f_int2 = CAST(f_char1 AS SIGNED INT), 10211f_charbig = 'just inserted' 10212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10213DELETE FROM t0_aux 10214WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10215DELETE FROM t1 10216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10217CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10218BEGIN 10219SET new.f_int1 = old.f_int1 + @max_row, 10220new.f_int2 = old.f_int2 - @max_row, 10221new.f_charbig = '####updated per update trigger####'; 10222END| 10223UPDATE t1 10224SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10225f_charbig = '####updated per update statement itself####'; 10226Warnings: 10227Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10228 10229# check trigger-9 success: 1 10230DROP TRIGGER trg_2; 10231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10232f_int2 = CAST(f_char1 AS SIGNED INT), 10233f_charbig = CONCAT('===',f_char1,'==='); 10234Warnings: 10235Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10236CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10237BEGIN 10238SET new.f_int1 = new.f_int1 + @max_row, 10239new.f_int2 = new.f_int2 - @max_row, 10240new.f_charbig = '####updated per update trigger####'; 10241END| 10242UPDATE t1 10243SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10244f_charbig = '####updated per update statement itself####'; 10245Warnings: 10246Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10247 10248# check trigger-10 success: 1 10249DROP TRIGGER trg_2; 10250UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10251f_int2 = CAST(f_char1 AS SIGNED INT), 10252f_charbig = CONCAT('===',f_char1,'==='); 10253Warnings: 10254Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10255CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10256BEGIN 10257SET new.f_int1 = @my_max1 + @counter, 10258new.f_int2 = @my_min2 - @counter, 10259new.f_charbig = '####updated per insert trigger####'; 10260SET @counter = @counter + 1; 10261END| 10262SET @counter = 1; 10263SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10264Warnings: 10265Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10267SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10268CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10270ORDER BY f_int1; 10271DROP TRIGGER trg_3; 10272 10273# check trigger-11 success: 1 10274Warnings: 10275Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10276DELETE FROM t1 10277WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10278AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10279AND f_charbig = '####updated per insert trigger####'; 10280CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10281BEGIN 10282SET new.f_int1 = @my_max1 + @counter, 10283new.f_int2 = @my_min2 - @counter, 10284new.f_charbig = '####updated per insert trigger####'; 10285SET @counter = @counter + 1; 10286END| 10287SET @counter = 1; 10288SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10289Warnings: 10290Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10291INSERT INTO t1 (f_char1, f_char2, f_charbig) 10292SELECT CAST(f_int1 AS CHAR), 10293CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10295ORDER BY f_int1; 10296DROP TRIGGER trg_3; 10297 10298# check trigger-12 success: 1 10299Warnings: 10300Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10301DELETE FROM t1 10302WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10303AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10304AND f_charbig = '####updated per insert trigger####'; 10305ANALYZE TABLE t1; 10306Table Op Msg_type Msg_text 10307test.t1 analyze status OK 10308test.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. 10309CHECK TABLE t1 EXTENDED; 10310Table Op Msg_type Msg_text 10311test.t1 check status OK 10312test.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. 10313CHECKSUM TABLE t1 EXTENDED; 10314Table Checksum 10315test.t1 <some_value> 10316OPTIMIZE TABLE t1; 10317Table Op Msg_type Msg_text 10318test.t1 optimize status OK 10319test.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. 10320# check layout success: 1 10321REPAIR TABLE t1 EXTENDED; 10322Table Op Msg_type Msg_text 10323test.t1 repair status OK 10324test.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. 10325# check layout success: 1 10326TRUNCATE t1; 10327Warnings: 10328Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10329 10330# check TRUNCATE success: 1 10331# check layout success: 1 10332# End usability test (inc/partition_check.inc) 10333DROP TABLE t1; 10334CREATE TABLE t1 ( 10335f_int1 INTEGER, 10336f_int2 INTEGER, 10337f_char1 CHAR(20), 10338f_char2 CHAR(20), 10339f_charbig VARCHAR(1000) 10340, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 10341) 10342PARTITION BY RANGE(f_int1) 10343(PARTITION parta VALUES LESS THAN (0) 10344DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10345INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10346PARTITION partb VALUES LESS THAN (5) 10347DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10348INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10349PARTITION partc VALUES LESS THAN (10) 10350DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10351INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10352PARTITION partd VALUES LESS THAN (10 + 5) 10353DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10354INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10355PARTITION parte VALUES LESS THAN (20) 10356DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10357INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10358PARTITION partf VALUES LESS THAN (2147483646) 10359DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10360INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 10361Warnings: 10362Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10363INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10364SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 10365Warnings: 10366Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10367# Start usability test (inc/partition_check.inc) 10368create_command 10369SHOW CREATE TABLE t1; 10370Table Create Table 10371t1 CREATE TABLE `t1` ( 10372 `f_int1` int(11) DEFAULT NULL, 10373 `f_int2` int(11) DEFAULT NULL, 10374 `f_char1` char(20) DEFAULT NULL, 10375 `f_char2` char(20) DEFAULT NULL, 10376 `f_charbig` varchar(1000) DEFAULT NULL, 10377 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 10378 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 10379) ENGINE=MyISAM DEFAULT CHARSET=latin1 10380/*!50100 PARTITION BY RANGE (f_int1) 10381(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10382 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10383 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10384 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10385 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10386 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 10387 10388unified filelist 10389t1#P#parta.MYD 10390t1#P#parta.MYI 10391t1#P#partb.MYD 10392t1#P#partb.MYI 10393t1#P#partc.MYD 10394t1#P#partc.MYI 10395t1#P#partd.MYD 10396t1#P#partd.MYI 10397t1#P#parte.MYD 10398t1#P#parte.MYI 10399t1#P#partf.MYD 10400t1#P#partf.MYI 10401t1.frm 10402t1.par 10403t1#P#parta.MYD 10404t1#P#partb.MYD 10405t1#P#partc.MYD 10406t1#P#partd.MYD 10407t1#P#parte.MYD 10408t1#P#partf.MYD 10409t1#P#parta.MYI 10410t1#P#partb.MYI 10411t1#P#partc.MYI 10412t1#P#partd.MYI 10413t1#P#parte.MYI 10414t1#P#partf.MYI 10415 10416# check prerequisites-1 success: 1 10417# check COUNT(*) success: 1 10418# check MIN/MAX(f_int1) success: 1 10419# check MIN/MAX(f_int2) success: 1 10420INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10421SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10422CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10423WHERE f_int1 IN (2,3); 10424ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 10425# check prerequisites-3 success: 1 10426# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10427INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10428SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10429CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10430WHERE f_int1 IN (2,3); 10431DELETE FROM t1 WHERE f_charbig = 'delete me'; 10432INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10433SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10434CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10435WHERE f_int1 IN (2,3); 10436DELETE FROM t1 WHERE f_charbig = 'delete me'; 10437# check read via f_int1 success: 1 10438# check read via f_int2 success: 1 10439 10440# check multiple-1 success: 1 10441DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10442 10443# check multiple-2 success: 1 10444INSERT INTO t1 SELECT * FROM t0_template 10445WHERE MOD(f_int1,3) = 0; 10446 10447# check multiple-3 success: 1 10448UPDATE t1 SET f_int1 = f_int1 + @max_row 10449WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10450AND @max_row_div2 + @max_row_div4; 10451 10452# check multiple-4 success: 1 10453DELETE FROM t1 10454WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10455AND @max_row_div2 + @max_row_div4 + @max_row; 10456 10457# check multiple-5 success: 1 10458SELECT COUNT(*) INTO @try_count FROM t0_template 10459WHERE MOD(f_int1,3) = 0 10460AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10461SELECT COUNT(*) INTO @clash_count 10462FROM t1 INNER JOIN t0_template USING(f_int1) 10463WHERE MOD(f_int1,3) = 0 10464AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10465SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10466INSERT INTO t1 10467SET f_int1 = @cur_value , f_int2 = @cur_value, 10468f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10469f_charbig = '#SINGLE#'; 10470 10471# check single-1 success: 1 10472SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10473INSERT INTO t1 10474SET f_int1 = @cur_value , f_int2 = @cur_value, 10475f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10476f_charbig = '#SINGLE#'; 10477 10478# check single-2 success: 1 10479SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10480SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10481UPDATE t1 SET f_int1 = @cur_value2 10482WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10483 10484# check single-3 success: 1 10485SET @cur_value1= -1; 10486SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10487UPDATE t1 SET f_int1 = @cur_value1 10488WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10489 10490# check single-4 success: 1 10491SELECT MAX(f_int1) INTO @cur_value FROM t1; 10492DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10493 10494# check single-5 success: 1 10495DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10496 10497# check single-6 success: 1 10498INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10499ERROR HY000: Table has no partition for value 2147483647 10500DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10501INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10502f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10503f_charbig = '#NULL#'; 10504INSERT INTO t1 10505SET f_int1 = NULL , f_int2 = -@max_row, 10506f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10507f_charbig = '#NULL#'; 10508# check null success: 1 10509 10510# check null-1 success: 1 10511UPDATE t1 SET f_int1 = -@max_row 10512WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10513AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10514 10515# check null-2 success: 1 10516UPDATE t1 SET f_int1 = NULL 10517WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10518AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10519 10520# check null-3 success: 1 10521DELETE FROM t1 10522WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 10523AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 10524 10525# check null-4 success: 1 10526DELETE FROM t1 10527WHERE f_int1 = 0 AND f_int2 = 0 10528AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10529AND f_charbig = '#NULL#'; 10530INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10531SELECT f_int1, f_int1, '', '', 'was inserted' 10532 FROM t0_template source_tab 10533WHERE MOD(f_int1,3) = 0 10534AND f_int1 BETWEEN @max_row_div2 AND @max_row 10535ON DUPLICATE KEY 10536UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10537f_int2 = 2 * @max_row + source_tab.f_int1, 10538f_charbig = 'was updated'; 10539 10540# check unique-1-a success: 1 10541 10542# check unique-1-b success: 1 10543DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10545f_int2 = CAST(f_char1 AS SIGNED INT), 10546f_charbig = CONCAT('===',f_char1,'===') 10547WHERE f_charbig = 'was updated'; 10548REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10549SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10550 FROM t0_template source_tab 10551WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10552 10553# check replace success: 1 10554DELETE FROM t1 10555WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10556DELETE FROM t1 10557WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10558f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10559UPDATE t1 SET f_int2 = f_int1, 10560f_char1 = CAST(f_int1 AS CHAR), 10561f_char2 = CAST(f_int1 AS CHAR), 10562f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10563WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10564SET AUTOCOMMIT= 0; 10565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10566SELECT f_int1, f_int1, '', '', 'was inserted' 10567FROM t0_template source_tab 10568WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10569 10570# check transactions-1 success: 1 10571COMMIT WORK; 10572 10573# check transactions-2 success: 1 10574ROLLBACK WORK; 10575 10576# check transactions-3 success: 1 10577DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10578COMMIT WORK; 10579ROLLBACK WORK; 10580 10581# check transactions-4 success: 1 10582INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10583SELECT f_int1, f_int1, '', '', 'was inserted' 10584FROM t0_template source_tab 10585WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10586 10587# check transactions-5 success: 1 10588ROLLBACK WORK; 10589Warnings: 10590Warning 1196 Some non-transactional changed tables couldn't be rolled back 10591 10592# check transactions-6 success: 1 10593# INFO: Storage engine used for t1 seems to be not transactional. 10594COMMIT; 10595 10596# check transactions-7 success: 1 10597DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10598COMMIT WORK; 10599SET @@session.sql_mode = 'traditional'; 10600Warnings: 10601Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10602SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10603INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10604SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10605'', '', 'was inserted' FROM t0_template 10606WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10607ERROR 22012: Division by 0 10608COMMIT; 10609 10610# check transactions-8 success: 1 10611# INFO: Storage engine used for t1 seems to be unable to revert 10612# changes made by the failing statement. 10613SET @@session.sql_mode = ''; 10614Warnings: 10615Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10616SET AUTOCOMMIT= 1; 10617DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10618COMMIT WORK; 10619UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10620 10621# check special-1 success: 1 10622UPDATE t1 SET f_charbig = ''; 10623 10624# check special-2 success: 1 10625UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10626INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10627SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10630SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10631'just inserted' FROM t0_template 10632WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10633CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10634BEGIN 10635UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10636f_charbig = 'updated by trigger' 10637 WHERE f_int1 = new.f_int1; 10638END| 10639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10640SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10641WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10642 10643# check trigger-1 success: 1 10644DROP TRIGGER trg_1; 10645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10646f_int2 = CAST(f_char1 AS SIGNED INT), 10647f_charbig = 'just inserted' 10648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10649DELETE FROM t0_aux 10650WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10652SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10653'just inserted' FROM t0_template 10654WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10655CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10656BEGIN 10657UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10658f_charbig = 'updated by trigger' 10659 WHERE f_int1 = new.f_int1; 10660END| 10661INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10662SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10664 10665# check trigger-2 success: 1 10666DROP TRIGGER trg_1; 10667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10668f_int2 = CAST(f_char1 AS SIGNED INT), 10669f_charbig = 'just inserted' 10670 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10671DELETE FROM t0_aux 10672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10675'just inserted' FROM t0_template 10676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10677CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10678BEGIN 10679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10680f_charbig = 'updated by trigger' 10681 WHERE f_int1 = new.f_int1; 10682END| 10683UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10685 10686# check trigger-3 success: 1 10687DROP TRIGGER trg_1; 10688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10689f_int2 = CAST(f_char1 AS SIGNED INT), 10690f_charbig = 'just inserted' 10691 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10692DELETE FROM t0_aux 10693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10696'just inserted' FROM t0_template 10697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10698CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10699BEGIN 10700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10701f_charbig = 'updated by trigger' 10702 WHERE f_int1 = - old.f_int1; 10703END| 10704UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10706 10707# check trigger-4 success: 1 10708DROP TRIGGER trg_1; 10709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10710f_int2 = CAST(f_char1 AS SIGNED INT), 10711f_charbig = 'just inserted' 10712 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10713DELETE FROM t0_aux 10714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10715INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10716SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10717'just inserted' FROM t0_template 10718WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10719CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10720BEGIN 10721UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10722f_charbig = 'updated by trigger' 10723 WHERE f_int1 = new.f_int1; 10724END| 10725UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10726WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10727 10728# check trigger-5 success: 1 10729DROP TRIGGER trg_1; 10730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10731f_int2 = CAST(f_char1 AS SIGNED INT), 10732f_charbig = 'just inserted' 10733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10734DELETE FROM t0_aux 10735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10738'just inserted' FROM t0_template 10739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10740CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10741BEGIN 10742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10743f_charbig = 'updated by trigger' 10744 WHERE f_int1 = - old.f_int1; 10745END| 10746UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10747WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10748 10749# check trigger-6 success: 1 10750DROP TRIGGER trg_1; 10751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10752f_int2 = CAST(f_char1 AS SIGNED INT), 10753f_charbig = 'just inserted' 10754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10755DELETE FROM t0_aux 10756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10759'just inserted' FROM t0_template 10760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10761CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10762BEGIN 10763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10764f_charbig = 'updated by trigger' 10765 WHERE f_int1 = - old.f_int1; 10766END| 10767DELETE FROM t0_aux 10768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10769 10770# check trigger-7 success: 1 10771DROP TRIGGER trg_1; 10772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10773f_int2 = CAST(f_char1 AS SIGNED INT), 10774f_charbig = 'just inserted' 10775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10776DELETE FROM t0_aux 10777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10780'just inserted' FROM t0_template 10781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10782CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10783BEGIN 10784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10785f_charbig = 'updated by trigger' 10786 WHERE f_int1 = - old.f_int1; 10787END| 10788DELETE FROM t0_aux 10789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10790 10791# check trigger-8 success: 1 10792DROP TRIGGER trg_1; 10793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10794f_int2 = CAST(f_char1 AS SIGNED INT), 10795f_charbig = 'just inserted' 10796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10797DELETE FROM t0_aux 10798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10799DELETE FROM t1 10800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10801CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10802BEGIN 10803SET new.f_int1 = old.f_int1 + @max_row, 10804new.f_int2 = old.f_int2 - @max_row, 10805new.f_charbig = '####updated per update trigger####'; 10806END| 10807UPDATE t1 10808SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10809f_charbig = '####updated per update statement itself####'; 10810Warnings: 10811Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10812 10813# check trigger-9 success: 1 10814DROP TRIGGER trg_2; 10815UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10816f_int2 = CAST(f_char1 AS SIGNED INT), 10817f_charbig = CONCAT('===',f_char1,'==='); 10818Warnings: 10819Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10820CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10821BEGIN 10822SET new.f_int1 = new.f_int1 + @max_row, 10823new.f_int2 = new.f_int2 - @max_row, 10824new.f_charbig = '####updated per update trigger####'; 10825END| 10826UPDATE t1 10827SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10828f_charbig = '####updated per update statement itself####'; 10829Warnings: 10830Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10831 10832# check trigger-10 success: 1 10833DROP TRIGGER trg_2; 10834UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10835f_int2 = CAST(f_char1 AS SIGNED INT), 10836f_charbig = CONCAT('===',f_char1,'==='); 10837Warnings: 10838Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10839CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10840BEGIN 10841SET new.f_int1 = @my_max1 + @counter, 10842new.f_int2 = @my_min2 - @counter, 10843new.f_charbig = '####updated per insert trigger####'; 10844SET @counter = @counter + 1; 10845END| 10846SET @counter = 1; 10847SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10848Warnings: 10849Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10850INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10851SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10852CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10853WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10854ORDER BY f_int1; 10855DROP TRIGGER trg_3; 10856 10857# check trigger-11 success: 1 10858Warnings: 10859Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10860DELETE FROM t1 10861WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10862AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10863AND f_charbig = '####updated per insert trigger####'; 10864CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10865BEGIN 10866SET new.f_int1 = @my_max1 + @counter, 10867new.f_int2 = @my_min2 - @counter, 10868new.f_charbig = '####updated per insert trigger####'; 10869SET @counter = @counter + 1; 10870END| 10871SET @counter = 1; 10872SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10873Warnings: 10874Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10875INSERT INTO t1 (f_char1, f_char2, f_charbig) 10876SELECT CAST(f_int1 AS CHAR), 10877CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10879ORDER BY f_int1; 10880DROP TRIGGER trg_3; 10881 10882# check trigger-12 success: 1 10883Warnings: 10884Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10885DELETE FROM t1 10886WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10887AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10888AND f_charbig = '####updated per insert trigger####'; 10889ANALYZE TABLE t1; 10890Table Op Msg_type Msg_text 10891test.t1 analyze status OK 10892test.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. 10893CHECK TABLE t1 EXTENDED; 10894Table Op Msg_type Msg_text 10895test.t1 check status OK 10896test.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. 10897CHECKSUM TABLE t1 EXTENDED; 10898Table Checksum 10899test.t1 <some_value> 10900OPTIMIZE TABLE t1; 10901Table Op Msg_type Msg_text 10902test.t1 optimize status OK 10903test.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. 10904# check layout success: 1 10905REPAIR TABLE t1 EXTENDED; 10906Table Op Msg_type Msg_text 10907test.t1 repair status OK 10908test.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. 10909# check layout success: 1 10910TRUNCATE t1; 10911Warnings: 10912Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10913 10914# check TRUNCATE success: 1 10915# check layout success: 1 10916# End usability test (inc/partition_check.inc) 10917DROP TABLE t1; 10918CREATE TABLE t1 ( 10919f_int1 INTEGER, 10920f_int2 INTEGER, 10921f_char1 CHAR(20), 10922f_char2 CHAR(20), 10923f_charbig VARCHAR(1000) 10924, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 10925) 10926PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 10927(PARTITION parta VALUES LESS THAN (0) 10928DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10929INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10930PARTITION partb VALUES LESS THAN (5) 10931DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10932INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10933PARTITION partc VALUES LESS THAN (10) 10934DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10935INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 10936PARTITION partd VALUES LESS THAN (2147483646) 10937DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 10938INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 10939Warnings: 10940Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10941INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10942SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 10943Warnings: 10944Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 10945# Start usability test (inc/partition_check.inc) 10946create_command 10947SHOW CREATE TABLE t1; 10948Table Create Table 10949t1 CREATE TABLE `t1` ( 10950 `f_int1` int(11) DEFAULT NULL, 10951 `f_int2` int(11) DEFAULT NULL, 10952 `f_char1` char(20) DEFAULT NULL, 10953 `f_char2` char(20) DEFAULT NULL, 10954 `f_charbig` varchar(1000) DEFAULT NULL, 10955 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 10956 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 10957) ENGINE=MyISAM DEFAULT CHARSET=latin1 10958/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 10959SUBPARTITION BY HASH (f_int1) 10960SUBPARTITIONS 2 10961(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10962 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10963 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 10964 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 10965 10966unified filelist 10967t1#P#parta#SP#partasp0.MYD 10968t1#P#parta#SP#partasp0.MYI 10969t1#P#parta#SP#partasp1.MYD 10970t1#P#parta#SP#partasp1.MYI 10971t1#P#partb#SP#partbsp0.MYD 10972t1#P#partb#SP#partbsp0.MYI 10973t1#P#partb#SP#partbsp1.MYD 10974t1#P#partb#SP#partbsp1.MYI 10975t1#P#partc#SP#partcsp0.MYD 10976t1#P#partc#SP#partcsp0.MYI 10977t1#P#partc#SP#partcsp1.MYD 10978t1#P#partc#SP#partcsp1.MYI 10979t1#P#partd#SP#partdsp0.MYD 10980t1#P#partd#SP#partdsp0.MYI 10981t1#P#partd#SP#partdsp1.MYD 10982t1#P#partd#SP#partdsp1.MYI 10983t1.frm 10984t1.par 10985t1#P#parta#SP#partasp0.MYD 10986t1#P#parta#SP#partasp1.MYD 10987t1#P#partb#SP#partbsp0.MYD 10988t1#P#partb#SP#partbsp1.MYD 10989t1#P#partc#SP#partcsp0.MYD 10990t1#P#partc#SP#partcsp1.MYD 10991t1#P#partd#SP#partdsp0.MYD 10992t1#P#partd#SP#partdsp1.MYD 10993t1#P#parta#SP#partasp0.MYI 10994t1#P#parta#SP#partasp1.MYI 10995t1#P#partb#SP#partbsp0.MYI 10996t1#P#partb#SP#partbsp1.MYI 10997t1#P#partc#SP#partcsp0.MYI 10998t1#P#partc#SP#partcsp1.MYI 10999t1#P#partd#SP#partdsp0.MYI 11000t1#P#partd#SP#partdsp1.MYI 11001 11002# check prerequisites-1 success: 1 11003# check COUNT(*) success: 1 11004# check MIN/MAX(f_int1) success: 1 11005# check MIN/MAX(f_int2) success: 1 11006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11007SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11008CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11009WHERE f_int1 IN (2,3); 11010ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 11011# check prerequisites-3 success: 1 11012# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11014SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11015CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11016WHERE f_int1 IN (2,3); 11017DELETE FROM t1 WHERE f_charbig = 'delete me'; 11018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11019SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11020CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11021WHERE f_int1 IN (2,3); 11022DELETE FROM t1 WHERE f_charbig = 'delete me'; 11023# check read via f_int1 success: 1 11024# check read via f_int2 success: 1 11025 11026# check multiple-1 success: 1 11027DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11028 11029# check multiple-2 success: 1 11030INSERT INTO t1 SELECT * FROM t0_template 11031WHERE MOD(f_int1,3) = 0; 11032 11033# check multiple-3 success: 1 11034UPDATE t1 SET f_int1 = f_int1 + @max_row 11035WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11036AND @max_row_div2 + @max_row_div4; 11037 11038# check multiple-4 success: 1 11039DELETE FROM t1 11040WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11041AND @max_row_div2 + @max_row_div4 + @max_row; 11042 11043# check multiple-5 success: 1 11044SELECT COUNT(*) INTO @try_count FROM t0_template 11045WHERE MOD(f_int1,3) = 0 11046AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11047SELECT COUNT(*) INTO @clash_count 11048FROM t1 INNER JOIN t0_template USING(f_int1) 11049WHERE MOD(f_int1,3) = 0 11050AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11051SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11052INSERT INTO t1 11053SET f_int1 = @cur_value , f_int2 = @cur_value, 11054f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11055f_charbig = '#SINGLE#'; 11056 11057# check single-1 success: 1 11058SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11059INSERT INTO t1 11060SET f_int1 = @cur_value , f_int2 = @cur_value, 11061f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11062f_charbig = '#SINGLE#'; 11063 11064# check single-2 success: 1 11065SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11066SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11067UPDATE t1 SET f_int1 = @cur_value2 11068WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11069 11070# check single-3 success: 1 11071SET @cur_value1= -1; 11072SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11073UPDATE t1 SET f_int1 = @cur_value1 11074WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11075 11076# check single-4 success: 1 11077SELECT MAX(f_int1) INTO @cur_value FROM t1; 11078DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11079 11080# check single-5 success: 1 11081DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11082 11083# check single-6 success: 1 11084INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11085 11086# check single-7 success: 1 11087DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11088DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11089INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11090f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11091f_charbig = '#NULL#'; 11092INSERT INTO t1 11093SET f_int1 = NULL , f_int2 = -@max_row, 11094f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11095f_charbig = '#NULL#'; 11096# check null success: 1 11097 11098# check null-1 success: 1 11099UPDATE t1 SET f_int1 = -@max_row 11100WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11101AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11102 11103# check null-2 success: 1 11104UPDATE t1 SET f_int1 = NULL 11105WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11106AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11107 11108# check null-3 success: 1 11109DELETE FROM t1 11110WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11111AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11112 11113# check null-4 success: 1 11114DELETE FROM t1 11115WHERE f_int1 = 0 AND f_int2 = 0 11116AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11117AND f_charbig = '#NULL#'; 11118INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11119SELECT f_int1, f_int1, '', '', 'was inserted' 11120 FROM t0_template source_tab 11121WHERE MOD(f_int1,3) = 0 11122AND f_int1 BETWEEN @max_row_div2 AND @max_row 11123ON DUPLICATE KEY 11124UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11125f_int2 = 2 * @max_row + source_tab.f_int1, 11126f_charbig = 'was updated'; 11127 11128# check unique-1-a success: 1 11129 11130# check unique-1-b success: 1 11131DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11132UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11133f_int2 = CAST(f_char1 AS SIGNED INT), 11134f_charbig = CONCAT('===',f_char1,'===') 11135WHERE f_charbig = 'was updated'; 11136REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11137SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11138 FROM t0_template source_tab 11139WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11140 11141# check replace success: 1 11142DELETE FROM t1 11143WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11144DELETE FROM t1 11145WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11146f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11147UPDATE t1 SET f_int2 = f_int1, 11148f_char1 = CAST(f_int1 AS CHAR), 11149f_char2 = CAST(f_int1 AS CHAR), 11150f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11151WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11152SET AUTOCOMMIT= 0; 11153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11154SELECT f_int1, f_int1, '', '', 'was inserted' 11155FROM t0_template source_tab 11156WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11157 11158# check transactions-1 success: 1 11159COMMIT WORK; 11160 11161# check transactions-2 success: 1 11162ROLLBACK WORK; 11163 11164# check transactions-3 success: 1 11165DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11166COMMIT WORK; 11167ROLLBACK WORK; 11168 11169# check transactions-4 success: 1 11170INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11171SELECT f_int1, f_int1, '', '', 'was inserted' 11172FROM t0_template source_tab 11173WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11174 11175# check transactions-5 success: 1 11176ROLLBACK WORK; 11177Warnings: 11178Warning 1196 Some non-transactional changed tables couldn't be rolled back 11179 11180# check transactions-6 success: 1 11181# INFO: Storage engine used for t1 seems to be not transactional. 11182COMMIT; 11183 11184# check transactions-7 success: 1 11185DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11186COMMIT WORK; 11187SET @@session.sql_mode = 'traditional'; 11188Warnings: 11189Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11190SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11191INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11192SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11193'', '', 'was inserted' FROM t0_template 11194WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11195ERROR 22012: Division by 0 11196COMMIT; 11197 11198# check transactions-8 success: 1 11199# INFO: Storage engine used for t1 seems to be unable to revert 11200# changes made by the failing statement. 11201SET @@session.sql_mode = ''; 11202Warnings: 11203Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11204SET AUTOCOMMIT= 1; 11205DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11206COMMIT WORK; 11207UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11208 11209# check special-1 success: 1 11210UPDATE t1 SET f_charbig = ''; 11211 11212# check special-2 success: 1 11213UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11214INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11215SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11217INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11218SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11219'just inserted' FROM t0_template 11220WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11221CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11222BEGIN 11223UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11224f_charbig = 'updated by trigger' 11225 WHERE f_int1 = new.f_int1; 11226END| 11227INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11228SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11230 11231# check trigger-1 success: 1 11232DROP TRIGGER trg_1; 11233UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11234f_int2 = CAST(f_char1 AS SIGNED INT), 11235f_charbig = 'just inserted' 11236 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11237DELETE FROM t0_aux 11238WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11239INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11240SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11241'just inserted' FROM t0_template 11242WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11243CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11244BEGIN 11245UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11246f_charbig = 'updated by trigger' 11247 WHERE f_int1 = new.f_int1; 11248END| 11249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11250SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11251WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11252 11253# check trigger-2 success: 1 11254DROP TRIGGER trg_1; 11255UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11256f_int2 = CAST(f_char1 AS SIGNED INT), 11257f_charbig = 'just inserted' 11258 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11259DELETE FROM t0_aux 11260WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11261INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11262SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11263'just inserted' FROM t0_template 11264WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11265CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11266BEGIN 11267UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11268f_charbig = 'updated by trigger' 11269 WHERE f_int1 = new.f_int1; 11270END| 11271UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11272WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11273 11274# check trigger-3 success: 1 11275DROP TRIGGER trg_1; 11276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11277f_int2 = CAST(f_char1 AS SIGNED INT), 11278f_charbig = 'just inserted' 11279 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11280DELETE FROM t0_aux 11281WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11283SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11284'just inserted' FROM t0_template 11285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11286CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11287BEGIN 11288UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11289f_charbig = 'updated by trigger' 11290 WHERE f_int1 = - old.f_int1; 11291END| 11292UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11293WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11294 11295# check trigger-4 success: 1 11296DROP TRIGGER trg_1; 11297UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11298f_int2 = CAST(f_char1 AS SIGNED INT), 11299f_charbig = 'just inserted' 11300 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11301DELETE FROM t0_aux 11302WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11303INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11304SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11305'just inserted' FROM t0_template 11306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11307CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11308BEGIN 11309UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11310f_charbig = 'updated by trigger' 11311 WHERE f_int1 = new.f_int1; 11312END| 11313UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11314WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11315 11316# check trigger-5 success: 1 11317DROP TRIGGER trg_1; 11318UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11319f_int2 = CAST(f_char1 AS SIGNED INT), 11320f_charbig = 'just inserted' 11321 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11322DELETE FROM t0_aux 11323WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11324INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11325SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11326'just inserted' FROM t0_template 11327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11328CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11329BEGIN 11330UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11331f_charbig = 'updated by trigger' 11332 WHERE f_int1 = - old.f_int1; 11333END| 11334UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11335WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11336 11337# check trigger-6 success: 1 11338DROP TRIGGER trg_1; 11339UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11340f_int2 = CAST(f_char1 AS SIGNED INT), 11341f_charbig = 'just inserted' 11342 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11343DELETE FROM t0_aux 11344WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11345INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11346SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11347'just inserted' FROM t0_template 11348WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11349CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11350BEGIN 11351UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11352f_charbig = 'updated by trigger' 11353 WHERE f_int1 = - old.f_int1; 11354END| 11355DELETE FROM t0_aux 11356WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11357 11358# check trigger-7 success: 1 11359DROP TRIGGER trg_1; 11360UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11361f_int2 = CAST(f_char1 AS SIGNED INT), 11362f_charbig = 'just inserted' 11363 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11364DELETE FROM t0_aux 11365WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11366INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11367SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11368'just inserted' FROM t0_template 11369WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11370CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11371BEGIN 11372UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11373f_charbig = 'updated by trigger' 11374 WHERE f_int1 = - old.f_int1; 11375END| 11376DELETE FROM t0_aux 11377WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11378 11379# check trigger-8 success: 1 11380DROP TRIGGER trg_1; 11381UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11382f_int2 = CAST(f_char1 AS SIGNED INT), 11383f_charbig = 'just inserted' 11384 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11385DELETE FROM t0_aux 11386WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11387DELETE FROM t1 11388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11389CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11390BEGIN 11391SET new.f_int1 = old.f_int1 + @max_row, 11392new.f_int2 = old.f_int2 - @max_row, 11393new.f_charbig = '####updated per update trigger####'; 11394END| 11395UPDATE t1 11396SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11397f_charbig = '####updated per update statement itself####'; 11398Warnings: 11399Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11400 11401# check trigger-9 success: 1 11402DROP TRIGGER trg_2; 11403UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11404f_int2 = CAST(f_char1 AS SIGNED INT), 11405f_charbig = CONCAT('===',f_char1,'==='); 11406Warnings: 11407Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11408CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11409BEGIN 11410SET new.f_int1 = new.f_int1 + @max_row, 11411new.f_int2 = new.f_int2 - @max_row, 11412new.f_charbig = '####updated per update trigger####'; 11413END| 11414UPDATE t1 11415SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11416f_charbig = '####updated per update statement itself####'; 11417Warnings: 11418Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11419 11420# check trigger-10 success: 1 11421DROP TRIGGER trg_2; 11422UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11423f_int2 = CAST(f_char1 AS SIGNED INT), 11424f_charbig = CONCAT('===',f_char1,'==='); 11425Warnings: 11426Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11427CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11428BEGIN 11429SET new.f_int1 = @my_max1 + @counter, 11430new.f_int2 = @my_min2 - @counter, 11431new.f_charbig = '####updated per insert trigger####'; 11432SET @counter = @counter + 1; 11433END| 11434SET @counter = 1; 11435SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11436Warnings: 11437Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11438INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11439SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11440CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11441WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11442ORDER BY f_int1; 11443DROP TRIGGER trg_3; 11444 11445# check trigger-11 success: 1 11446Warnings: 11447Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11448DELETE FROM t1 11449WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11450AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11451AND f_charbig = '####updated per insert trigger####'; 11452CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11453BEGIN 11454SET new.f_int1 = @my_max1 + @counter, 11455new.f_int2 = @my_min2 - @counter, 11456new.f_charbig = '####updated per insert trigger####'; 11457SET @counter = @counter + 1; 11458END| 11459SET @counter = 1; 11460SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11461Warnings: 11462Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11463INSERT INTO t1 (f_char1, f_char2, f_charbig) 11464SELECT CAST(f_int1 AS CHAR), 11465CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11466WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11467ORDER BY f_int1; 11468DROP TRIGGER trg_3; 11469 11470# check trigger-12 success: 1 11471Warnings: 11472Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11473DELETE FROM t1 11474WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11475AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11476AND f_charbig = '####updated per insert trigger####'; 11477ANALYZE TABLE t1; 11478Table Op Msg_type Msg_text 11479test.t1 analyze status OK 11480test.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. 11481CHECK TABLE t1 EXTENDED; 11482Table Op Msg_type Msg_text 11483test.t1 check status OK 11484test.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. 11485CHECKSUM TABLE t1 EXTENDED; 11486Table Checksum 11487test.t1 <some_value> 11488OPTIMIZE TABLE t1; 11489Table Op Msg_type Msg_text 11490test.t1 optimize status OK 11491test.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. 11492# check layout success: 1 11493REPAIR TABLE t1 EXTENDED; 11494Table Op Msg_type Msg_text 11495test.t1 repair status OK 11496test.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. 11497# check layout success: 1 11498TRUNCATE t1; 11499Warnings: 11500Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11501 11502# check TRUNCATE success: 1 11503# check layout success: 1 11504# End usability test (inc/partition_check.inc) 11505DROP TABLE t1; 11506CREATE TABLE t1 ( 11507f_int1 INTEGER, 11508f_int2 INTEGER, 11509f_char1 CHAR(20), 11510f_char2 CHAR(20), 11511f_charbig VARCHAR(1000) 11512, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 11513) 11514PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 11515(PARTITION part1 VALUES LESS THAN (0) 11516(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 11517SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 11518PARTITION part2 VALUES LESS THAN (5) 11519(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 11520SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 11521PARTITION part3 VALUES LESS THAN (10) 11522(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 11523SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 11524PARTITION part4 VALUES LESS THAN (2147483646) 11525(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 11526SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 11527Warnings: 11528Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11529INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11530SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 11531Warnings: 11532Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11533# Start usability test (inc/partition_check.inc) 11534create_command 11535SHOW CREATE TABLE t1; 11536Table Create Table 11537t1 CREATE TABLE `t1` ( 11538 `f_int1` int(11) DEFAULT NULL, 11539 `f_int2` int(11) DEFAULT NULL, 11540 `f_char1` char(20) DEFAULT NULL, 11541 `f_char2` char(20) DEFAULT NULL, 11542 `f_charbig` varchar(1000) DEFAULT NULL, 11543 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 11544 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 11545) ENGINE=MyISAM DEFAULT CHARSET=latin1 11546/*!50100 PARTITION BY RANGE (f_int1) 11547SUBPARTITION BY KEY (f_int1) 11548(PARTITION part1 VALUES LESS THAN (0) 11549 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 11550 SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 11551 PARTITION part2 VALUES LESS THAN (5) 11552 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 11553 SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 11554 PARTITION part3 VALUES LESS THAN (10) 11555 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 11556 SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 11557 PARTITION part4 VALUES LESS THAN (2147483646) 11558 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 11559 SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 11560 11561unified filelist 11562t1#P#part1#SP#subpart11.MYD 11563t1#P#part1#SP#subpart11.MYI 11564t1#P#part1#SP#subpart12.MYD 11565t1#P#part1#SP#subpart12.MYI 11566t1#P#part2#SP#subpart21.MYD 11567t1#P#part2#SP#subpart21.MYI 11568t1#P#part2#SP#subpart22.MYD 11569t1#P#part2#SP#subpart22.MYI 11570t1#P#part3#SP#subpart31.MYD 11571t1#P#part3#SP#subpart31.MYI 11572t1#P#part3#SP#subpart32.MYD 11573t1#P#part3#SP#subpart32.MYI 11574t1#P#part4#SP#subpart41.MYD 11575t1#P#part4#SP#subpart41.MYI 11576t1#P#part4#SP#subpart42.MYD 11577t1#P#part4#SP#subpart42.MYI 11578t1.frm 11579t1.par 11580t1#P#part1#SP#subpart11.MYD 11581t1#P#part1#SP#subpart12.MYD 11582t1#P#part2#SP#subpart21.MYD 11583t1#P#part2#SP#subpart22.MYD 11584t1#P#part3#SP#subpart31.MYD 11585t1#P#part3#SP#subpart32.MYD 11586t1#P#part4#SP#subpart41.MYD 11587t1#P#part4#SP#subpart42.MYD 11588t1#P#part1#SP#subpart11.MYI 11589t1#P#part1#SP#subpart12.MYI 11590t1#P#part2#SP#subpart21.MYI 11591t1#P#part2#SP#subpart22.MYI 11592t1#P#part3#SP#subpart31.MYI 11593t1#P#part3#SP#subpart32.MYI 11594t1#P#part4#SP#subpart41.MYI 11595t1#P#part4#SP#subpart42.MYI 11596 11597# check prerequisites-1 success: 1 11598# check COUNT(*) success: 1 11599# check MIN/MAX(f_int1) success: 1 11600# check MIN/MAX(f_int2) success: 1 11601INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11602SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11603CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11604WHERE f_int1 IN (2,3); 11605ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 11606# check prerequisites-3 success: 1 11607# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11608INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11609SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11610CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11611WHERE f_int1 IN (2,3); 11612DELETE FROM t1 WHERE f_charbig = 'delete me'; 11613INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11614SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11615CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11616WHERE f_int1 IN (2,3); 11617DELETE FROM t1 WHERE f_charbig = 'delete me'; 11618# check read via f_int1 success: 1 11619# check read via f_int2 success: 1 11620 11621# check multiple-1 success: 1 11622DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11623 11624# check multiple-2 success: 1 11625INSERT INTO t1 SELECT * FROM t0_template 11626WHERE MOD(f_int1,3) = 0; 11627 11628# check multiple-3 success: 1 11629UPDATE t1 SET f_int1 = f_int1 + @max_row 11630WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11631AND @max_row_div2 + @max_row_div4; 11632 11633# check multiple-4 success: 1 11634DELETE FROM t1 11635WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11636AND @max_row_div2 + @max_row_div4 + @max_row; 11637 11638# check multiple-5 success: 1 11639SELECT COUNT(*) INTO @try_count FROM t0_template 11640WHERE MOD(f_int1,3) = 0 11641AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11642SELECT COUNT(*) INTO @clash_count 11643FROM t1 INNER JOIN t0_template USING(f_int1) 11644WHERE MOD(f_int1,3) = 0 11645AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11646SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11647INSERT INTO t1 11648SET f_int1 = @cur_value , f_int2 = @cur_value, 11649f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11650f_charbig = '#SINGLE#'; 11651 11652# check single-1 success: 1 11653SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11654INSERT INTO t1 11655SET f_int1 = @cur_value , f_int2 = @cur_value, 11656f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11657f_charbig = '#SINGLE#'; 11658 11659# check single-2 success: 1 11660SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11661SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11662UPDATE t1 SET f_int1 = @cur_value2 11663WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11664 11665# check single-3 success: 1 11666SET @cur_value1= -1; 11667SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11668UPDATE t1 SET f_int1 = @cur_value1 11669WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11670 11671# check single-4 success: 1 11672SELECT MAX(f_int1) INTO @cur_value FROM t1; 11673DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11674 11675# check single-5 success: 1 11676DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11677 11678# check single-6 success: 1 11679INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11680ERROR HY000: Table has no partition for value 2147483647 11681DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11682INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11683f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11684f_charbig = '#NULL#'; 11685INSERT INTO t1 11686SET f_int1 = NULL , f_int2 = -@max_row, 11687f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11688f_charbig = '#NULL#'; 11689# check null success: 1 11690 11691# check null-1 success: 1 11692UPDATE t1 SET f_int1 = -@max_row 11693WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11694AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11695 11696# check null-2 success: 1 11697UPDATE t1 SET f_int1 = NULL 11698WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11699AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11700 11701# check null-3 success: 1 11702DELETE FROM t1 11703WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 11704AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 11705 11706# check null-4 success: 1 11707DELETE FROM t1 11708WHERE f_int1 = 0 AND f_int2 = 0 11709AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11710AND f_charbig = '#NULL#'; 11711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11712SELECT f_int1, f_int1, '', '', 'was inserted' 11713 FROM t0_template source_tab 11714WHERE MOD(f_int1,3) = 0 11715AND f_int1 BETWEEN @max_row_div2 AND @max_row 11716ON DUPLICATE KEY 11717UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11718f_int2 = 2 * @max_row + source_tab.f_int1, 11719f_charbig = 'was updated'; 11720 11721# check unique-1-a success: 1 11722 11723# check unique-1-b success: 1 11724DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11726f_int2 = CAST(f_char1 AS SIGNED INT), 11727f_charbig = CONCAT('===',f_char1,'===') 11728WHERE f_charbig = 'was updated'; 11729REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11730SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11731 FROM t0_template source_tab 11732WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11733 11734# check replace success: 1 11735DELETE FROM t1 11736WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11737DELETE FROM t1 11738WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11739f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11740UPDATE t1 SET f_int2 = f_int1, 11741f_char1 = CAST(f_int1 AS CHAR), 11742f_char2 = CAST(f_int1 AS CHAR), 11743f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11744WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11745SET AUTOCOMMIT= 0; 11746INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11747SELECT f_int1, f_int1, '', '', 'was inserted' 11748FROM t0_template source_tab 11749WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11750 11751# check transactions-1 success: 1 11752COMMIT WORK; 11753 11754# check transactions-2 success: 1 11755ROLLBACK WORK; 11756 11757# check transactions-3 success: 1 11758DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11759COMMIT WORK; 11760ROLLBACK WORK; 11761 11762# check transactions-4 success: 1 11763INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11764SELECT f_int1, f_int1, '', '', 'was inserted' 11765FROM t0_template source_tab 11766WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11767 11768# check transactions-5 success: 1 11769ROLLBACK WORK; 11770Warnings: 11771Warning 1196 Some non-transactional changed tables couldn't be rolled back 11772 11773# check transactions-6 success: 1 11774# INFO: Storage engine used for t1 seems to be not transactional. 11775COMMIT; 11776 11777# check transactions-7 success: 1 11778DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11779COMMIT WORK; 11780SET @@session.sql_mode = 'traditional'; 11781Warnings: 11782Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11783SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11785SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11786'', '', 'was inserted' FROM t0_template 11787WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11788ERROR 22012: Division by 0 11789COMMIT; 11790 11791# check transactions-8 success: 1 11792# INFO: Storage engine used for t1 seems to be unable to revert 11793# changes made by the failing statement. 11794SET @@session.sql_mode = ''; 11795Warnings: 11796Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11797SET AUTOCOMMIT= 1; 11798DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11799COMMIT WORK; 11800UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11801 11802# check special-1 success: 1 11803UPDATE t1 SET f_charbig = ''; 11804 11805# check special-2 success: 1 11806UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11807INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11808SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11809WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11810INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11811SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11812'just inserted' FROM t0_template 11813WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11814CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11815BEGIN 11816UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11817f_charbig = 'updated by trigger' 11818 WHERE f_int1 = new.f_int1; 11819END| 11820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11821SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11822WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11823 11824# check trigger-1 success: 1 11825DROP TRIGGER trg_1; 11826UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11827f_int2 = CAST(f_char1 AS SIGNED INT), 11828f_charbig = 'just inserted' 11829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11830DELETE FROM t0_aux 11831WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11832INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11833SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11834'just inserted' FROM t0_template 11835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11836CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11837BEGIN 11838UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11839f_charbig = 'updated by trigger' 11840 WHERE f_int1 = new.f_int1; 11841END| 11842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11843SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11845 11846# check trigger-2 success: 1 11847DROP TRIGGER trg_1; 11848UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11849f_int2 = CAST(f_char1 AS SIGNED INT), 11850f_charbig = 'just inserted' 11851 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11852DELETE FROM t0_aux 11853WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11854INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11855SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11856'just inserted' FROM t0_template 11857WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11858CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11859BEGIN 11860UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11861f_charbig = 'updated by trigger' 11862 WHERE f_int1 = new.f_int1; 11863END| 11864UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11865WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11866 11867# check trigger-3 success: 1 11868DROP TRIGGER trg_1; 11869UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11870f_int2 = CAST(f_char1 AS SIGNED INT), 11871f_charbig = 'just inserted' 11872 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11873DELETE FROM t0_aux 11874WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11875INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11876SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11877'just inserted' FROM t0_template 11878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11879CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11880BEGIN 11881UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11882f_charbig = 'updated by trigger' 11883 WHERE f_int1 = - old.f_int1; 11884END| 11885UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11886WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11887 11888# check trigger-4 success: 1 11889DROP TRIGGER trg_1; 11890UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11891f_int2 = CAST(f_char1 AS SIGNED INT), 11892f_charbig = 'just inserted' 11893 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11894DELETE FROM t0_aux 11895WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11896INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11897SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11898'just inserted' FROM t0_template 11899WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11900CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11901BEGIN 11902UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11903f_charbig = 'updated by trigger' 11904 WHERE f_int1 = new.f_int1; 11905END| 11906UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11907WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11908 11909# check trigger-5 success: 1 11910DROP TRIGGER trg_1; 11911UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11912f_int2 = CAST(f_char1 AS SIGNED INT), 11913f_charbig = 'just inserted' 11914 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11915DELETE FROM t0_aux 11916WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11917INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11918SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11919'just inserted' FROM t0_template 11920WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11921CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11922BEGIN 11923UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11924f_charbig = 'updated by trigger' 11925 WHERE f_int1 = - old.f_int1; 11926END| 11927UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11928WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11929 11930# check trigger-6 success: 1 11931DROP TRIGGER trg_1; 11932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11933f_int2 = CAST(f_char1 AS SIGNED INT), 11934f_charbig = 'just inserted' 11935 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11936DELETE FROM t0_aux 11937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11940'just inserted' FROM t0_template 11941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11942CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11943BEGIN 11944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11945f_charbig = 'updated by trigger' 11946 WHERE f_int1 = - old.f_int1; 11947END| 11948DELETE FROM t0_aux 11949WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11950 11951# check trigger-7 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 AFTER DELETE 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 = - old.f_int1; 11968END| 11969DELETE FROM t0_aux 11970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11971 11972# check trigger-8 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; 11980DELETE FROM t1 11981WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11982CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11983BEGIN 11984SET new.f_int1 = old.f_int1 + @max_row, 11985new.f_int2 = old.f_int2 - @max_row, 11986new.f_charbig = '####updated per update trigger####'; 11987END| 11988UPDATE t1 11989SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11990f_charbig = '####updated per update statement itself####'; 11991Warnings: 11992Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 11993 11994# check trigger-9 success: 1 11995DROP TRIGGER trg_2; 11996UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11997f_int2 = CAST(f_char1 AS SIGNED INT), 11998f_charbig = CONCAT('===',f_char1,'==='); 11999Warnings: 12000Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12001CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12002BEGIN 12003SET new.f_int1 = new.f_int1 + @max_row, 12004new.f_int2 = new.f_int2 - @max_row, 12005new.f_charbig = '####updated per update trigger####'; 12006END| 12007UPDATE t1 12008SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12009f_charbig = '####updated per update statement itself####'; 12010Warnings: 12011Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12012 12013# check trigger-10 success: 1 12014DROP TRIGGER trg_2; 12015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12016f_int2 = CAST(f_char1 AS SIGNED INT), 12017f_charbig = CONCAT('===',f_char1,'==='); 12018Warnings: 12019Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12020CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12021BEGIN 12022SET new.f_int1 = @my_max1 + @counter, 12023new.f_int2 = @my_min2 - @counter, 12024new.f_charbig = '####updated per insert trigger####'; 12025SET @counter = @counter + 1; 12026END| 12027SET @counter = 1; 12028SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12029Warnings: 12030Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12031INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12032SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12033CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12034WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12035ORDER BY f_int1; 12036DROP TRIGGER trg_3; 12037 12038# check trigger-11 success: 1 12039Warnings: 12040Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12041DELETE FROM t1 12042WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12043AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12044AND f_charbig = '####updated per insert trigger####'; 12045CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12046BEGIN 12047SET new.f_int1 = @my_max1 + @counter, 12048new.f_int2 = @my_min2 - @counter, 12049new.f_charbig = '####updated per insert trigger####'; 12050SET @counter = @counter + 1; 12051END| 12052SET @counter = 1; 12053SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12054Warnings: 12055Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12056INSERT INTO t1 (f_char1, f_char2, f_charbig) 12057SELECT CAST(f_int1 AS CHAR), 12058CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12059WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12060ORDER BY f_int1; 12061DROP TRIGGER trg_3; 12062 12063# check trigger-12 success: 1 12064Warnings: 12065Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12066DELETE FROM t1 12067WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12068AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12069AND f_charbig = '####updated per insert trigger####'; 12070ANALYZE TABLE t1; 12071Table Op Msg_type Msg_text 12072test.t1 analyze status OK 12073test.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. 12074CHECK TABLE t1 EXTENDED; 12075Table Op Msg_type Msg_text 12076test.t1 check status OK 12077test.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. 12078CHECKSUM TABLE t1 EXTENDED; 12079Table Checksum 12080test.t1 <some_value> 12081OPTIMIZE TABLE t1; 12082Table Op Msg_type Msg_text 12083test.t1 optimize status OK 12084test.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. 12085# check layout success: 1 12086REPAIR TABLE t1 EXTENDED; 12087Table Op Msg_type Msg_text 12088test.t1 repair status OK 12089test.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. 12090# check layout success: 1 12091TRUNCATE t1; 12092Warnings: 12093Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12094 12095# check TRUNCATE success: 1 12096# check layout success: 1 12097# End usability test (inc/partition_check.inc) 12098DROP TABLE t1; 12099CREATE TABLE t1 ( 12100f_int1 INTEGER, 12101f_int2 INTEGER, 12102f_char1 CHAR(20), 12103f_char2 CHAR(20), 12104f_charbig VARCHAR(1000) 12105, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 12106) 12107PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 12108(PARTITION part1 VALUES IN (0) 12109DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12110INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 12111(SUBPARTITION sp11 12112DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12113INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 12114SUBPARTITION sp12 12115DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12116INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 12117PARTITION part2 VALUES IN (1) 12118DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12119INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 12120(SUBPARTITION sp21 12121DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12122INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 12123SUBPARTITION sp22 12124DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12125INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 12126PARTITION part3 VALUES IN (2) 12127DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12128INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 12129(SUBPARTITION sp31, 12130SUBPARTITION sp32), 12131PARTITION part4 VALUES IN (NULL) 12132DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12133INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 12134(SUBPARTITION sp41 12135DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12136INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 12137SUBPARTITION sp42 12138DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12139INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 12140Warnings: 12141Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12142INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12143SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 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. 12146# Start usability test (inc/partition_check.inc) 12147create_command 12148SHOW CREATE TABLE t1; 12149Table Create Table 12150t1 CREATE TABLE `t1` ( 12151 `f_int1` int(11) DEFAULT NULL, 12152 `f_int2` int(11) DEFAULT NULL, 12153 `f_char1` char(20) DEFAULT NULL, 12154 `f_char2` char(20) DEFAULT NULL, 12155 `f_charbig` varchar(1000) DEFAULT NULL, 12156 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 12157 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 12158) ENGINE=MyISAM DEFAULT CHARSET=latin1 12159/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 12160SUBPARTITION BY HASH (f_int1 + 1) 12161(PARTITION part1 VALUES IN (0) 12162 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12163 SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 12164 PARTITION part2 VALUES IN (1) 12165 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12166 SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 12167 PARTITION part3 VALUES IN (2) 12168 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12169 SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 12170 PARTITION part4 VALUES IN (NULL) 12171 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12172 SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 12173 12174unified filelist 12175t1#P#part1#SP#sp11.MYD 12176t1#P#part1#SP#sp11.MYI 12177t1#P#part1#SP#sp12.MYD 12178t1#P#part1#SP#sp12.MYI 12179t1#P#part2#SP#sp21.MYD 12180t1#P#part2#SP#sp21.MYI 12181t1#P#part2#SP#sp22.MYD 12182t1#P#part2#SP#sp22.MYI 12183t1#P#part3#SP#sp31.MYD 12184t1#P#part3#SP#sp31.MYI 12185t1#P#part3#SP#sp32.MYD 12186t1#P#part3#SP#sp32.MYI 12187t1#P#part4#SP#sp41.MYD 12188t1#P#part4#SP#sp41.MYI 12189t1#P#part4#SP#sp42.MYD 12190t1#P#part4#SP#sp42.MYI 12191t1.frm 12192t1.par 12193t1#P#part1#SP#sp11.MYD 12194t1#P#part1#SP#sp12.MYD 12195t1#P#part2#SP#sp21.MYD 12196t1#P#part2#SP#sp22.MYD 12197t1#P#part3#SP#sp31.MYD 12198t1#P#part3#SP#sp32.MYD 12199t1#P#part4#SP#sp41.MYD 12200t1#P#part4#SP#sp42.MYD 12201t1#P#part1#SP#sp11.MYI 12202t1#P#part1#SP#sp12.MYI 12203t1#P#part2#SP#sp21.MYI 12204t1#P#part2#SP#sp22.MYI 12205t1#P#part3#SP#sp31.MYI 12206t1#P#part3#SP#sp32.MYI 12207t1#P#part4#SP#sp41.MYI 12208t1#P#part4#SP#sp42.MYI 12209 12210# check prerequisites-1 success: 1 12211# check COUNT(*) success: 1 12212# check MIN/MAX(f_int1) success: 1 12213# check MIN/MAX(f_int2) success: 1 12214INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12215SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12216CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12217WHERE f_int1 IN (2,3); 12218ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12219# check prerequisites-3 success: 1 12220# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12221INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12222SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12223CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12224WHERE f_int1 IN (2,3); 12225DELETE FROM t1 WHERE f_charbig = 'delete me'; 12226INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12227SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12228CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12229WHERE f_int1 IN (2,3); 12230DELETE FROM t1 WHERE f_charbig = 'delete me'; 12231# check read via f_int1 success: 1 12232# check read via f_int2 success: 1 12233 12234# check multiple-1 success: 1 12235DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12236 12237# check multiple-2 success: 1 12238INSERT INTO t1 SELECT * FROM t0_template 12239WHERE MOD(f_int1,3) = 0; 12240 12241# check multiple-3 success: 1 12242UPDATE t1 SET f_int1 = f_int1 + @max_row 12243WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12244AND @max_row_div2 + @max_row_div4; 12245 12246# check multiple-4 success: 1 12247DELETE FROM t1 12248WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12249AND @max_row_div2 + @max_row_div4 + @max_row; 12250 12251# check multiple-5 success: 1 12252SELECT COUNT(*) INTO @try_count FROM t0_template 12253WHERE MOD(f_int1,3) = 0 12254AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12255SELECT COUNT(*) INTO @clash_count 12256FROM t1 INNER JOIN t0_template USING(f_int1) 12257WHERE MOD(f_int1,3) = 0 12258AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12259SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12260INSERT INTO t1 12261SET f_int1 = @cur_value , f_int2 = @cur_value, 12262f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12263f_charbig = '#SINGLE#'; 12264 12265# check single-1 success: 1 12266SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12267INSERT INTO t1 12268SET f_int1 = @cur_value , f_int2 = @cur_value, 12269f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12270f_charbig = '#SINGLE#'; 12271 12272# check single-2 success: 1 12273SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12274SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12275UPDATE t1 SET f_int1 = @cur_value2 12276WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12277 12278# check single-3 success: 1 12279SET @cur_value1= -1; 12280SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12281UPDATE t1 SET f_int1 = @cur_value1 12282WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12283 12284# check single-4 success: 1 12285SELECT MAX(f_int1) INTO @cur_value FROM t1; 12286DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12287 12288# check single-5 success: 1 12289DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12290 12291# check single-6 success: 1 12292INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12293 12294# check single-7 success: 1 12295DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12296DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12297INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12298f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12299f_charbig = '#NULL#'; 12300INSERT INTO t1 12301SET f_int1 = NULL , f_int2 = -@max_row, 12302f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12303f_charbig = '#NULL#'; 12304# check null success: 1 12305 12306# check null-1 success: 1 12307UPDATE t1 SET f_int1 = -@max_row 12308WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12309AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12310 12311# check null-2 success: 1 12312UPDATE t1 SET f_int1 = NULL 12313WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12314AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12315 12316# check null-3 success: 1 12317DELETE FROM t1 12318WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12319AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12320 12321# check null-4 success: 1 12322DELETE FROM t1 12323WHERE f_int1 = 0 AND f_int2 = 0 12324AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12325AND f_charbig = '#NULL#'; 12326INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12327SELECT f_int1, f_int1, '', '', 'was inserted' 12328 FROM t0_template source_tab 12329WHERE MOD(f_int1,3) = 0 12330AND f_int1 BETWEEN @max_row_div2 AND @max_row 12331ON DUPLICATE KEY 12332UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12333f_int2 = 2 * @max_row + source_tab.f_int1, 12334f_charbig = 'was updated'; 12335 12336# check unique-1-a success: 1 12337 12338# check unique-1-b success: 1 12339DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12340UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12341f_int2 = CAST(f_char1 AS SIGNED INT), 12342f_charbig = CONCAT('===',f_char1,'===') 12343WHERE f_charbig = 'was updated'; 12344REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12345SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12346 FROM t0_template source_tab 12347WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12348 12349# check replace success: 1 12350DELETE FROM t1 12351WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12352DELETE FROM t1 12353WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12354f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12355UPDATE t1 SET f_int2 = f_int1, 12356f_char1 = CAST(f_int1 AS CHAR), 12357f_char2 = CAST(f_int1 AS CHAR), 12358f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12359WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12360SET AUTOCOMMIT= 0; 12361INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12362SELECT f_int1, f_int1, '', '', 'was inserted' 12363FROM t0_template source_tab 12364WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12365 12366# check transactions-1 success: 1 12367COMMIT WORK; 12368 12369# check transactions-2 success: 1 12370ROLLBACK WORK; 12371 12372# check transactions-3 success: 1 12373DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12374COMMIT WORK; 12375ROLLBACK WORK; 12376 12377# check transactions-4 success: 1 12378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12379SELECT f_int1, f_int1, '', '', 'was inserted' 12380FROM t0_template source_tab 12381WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12382 12383# check transactions-5 success: 1 12384ROLLBACK WORK; 12385Warnings: 12386Warning 1196 Some non-transactional changed tables couldn't be rolled back 12387 12388# check transactions-6 success: 1 12389# INFO: Storage engine used for t1 seems to be not transactional. 12390COMMIT; 12391 12392# check transactions-7 success: 1 12393DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12394COMMIT WORK; 12395SET @@session.sql_mode = 'traditional'; 12396Warnings: 12397Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12398SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12400SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12401'', '', 'was inserted' FROM t0_template 12402WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12403ERROR 22012: Division by 0 12404COMMIT; 12405 12406# check transactions-8 success: 1 12407# INFO: Storage engine used for t1 seems to be unable to revert 12408# changes made by the failing statement. 12409SET @@session.sql_mode = ''; 12410Warnings: 12411Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12412SET AUTOCOMMIT= 1; 12413DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12414COMMIT WORK; 12415UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12416 12417# check special-1 success: 1 12418UPDATE t1 SET f_charbig = ''; 12419 12420# check special-2 success: 1 12421UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 12422INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12423SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 12424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12427'just inserted' FROM t0_template 12428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12429CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 12430BEGIN 12431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12432f_charbig = 'updated by trigger' 12433 WHERE f_int1 = new.f_int1; 12434END| 12435INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12436SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12438 12439# check trigger-1 success: 1 12440DROP TRIGGER trg_1; 12441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12442f_int2 = CAST(f_char1 AS SIGNED INT), 12443f_charbig = 'just inserted' 12444 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12445DELETE FROM t0_aux 12446WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12447INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12448SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12449'just inserted' FROM t0_template 12450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12451CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12452BEGIN 12453UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12454f_charbig = 'updated by trigger' 12455 WHERE f_int1 = new.f_int1; 12456END| 12457INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12458SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12459WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12460 12461# check trigger-2 success: 1 12462DROP TRIGGER trg_1; 12463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12464f_int2 = CAST(f_char1 AS SIGNED INT), 12465f_charbig = 'just inserted' 12466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12467DELETE FROM t0_aux 12468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12469INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12470SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12471'just inserted' FROM t0_template 12472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12473CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12474BEGIN 12475UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12476f_charbig = 'updated by trigger' 12477 WHERE f_int1 = new.f_int1; 12478END| 12479UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12480WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12481 12482# check trigger-3 success: 1 12483DROP TRIGGER trg_1; 12484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12485f_int2 = CAST(f_char1 AS SIGNED INT), 12486f_charbig = 'just inserted' 12487 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12488DELETE FROM t0_aux 12489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12492'just inserted' FROM t0_template 12493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12494CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12495BEGIN 12496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12497f_charbig = 'updated by trigger' 12498 WHERE f_int1 = - old.f_int1; 12499END| 12500UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12502 12503# check trigger-4 success: 1 12504DROP TRIGGER trg_1; 12505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12506f_int2 = CAST(f_char1 AS SIGNED INT), 12507f_charbig = 'just inserted' 12508 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12509DELETE FROM t0_aux 12510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12513'just inserted' FROM t0_template 12514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12515CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12516BEGIN 12517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12518f_charbig = 'updated by trigger' 12519 WHERE f_int1 = new.f_int1; 12520END| 12521UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12523 12524# check trigger-5 success: 1 12525DROP TRIGGER trg_1; 12526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12527f_int2 = CAST(f_char1 AS SIGNED INT), 12528f_charbig = 'just inserted' 12529 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12530DELETE FROM t0_aux 12531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12534'just inserted' FROM t0_template 12535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12536CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12537BEGIN 12538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12539f_charbig = 'updated by trigger' 12540 WHERE f_int1 = - old.f_int1; 12541END| 12542UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12544 12545# check trigger-6 success: 1 12546DROP TRIGGER trg_1; 12547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12548f_int2 = CAST(f_char1 AS SIGNED INT), 12549f_charbig = 'just inserted' 12550 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12551DELETE FROM t0_aux 12552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12555'just inserted' FROM t0_template 12556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12557CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12558BEGIN 12559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12560f_charbig = 'updated by trigger' 12561 WHERE f_int1 = - old.f_int1; 12562END| 12563DELETE FROM t0_aux 12564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12565 12566# check trigger-7 success: 1 12567DROP TRIGGER trg_1; 12568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12569f_int2 = CAST(f_char1 AS SIGNED INT), 12570f_charbig = 'just inserted' 12571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12572DELETE FROM t0_aux 12573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12576'just inserted' FROM t0_template 12577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12578CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12579BEGIN 12580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12581f_charbig = 'updated by trigger' 12582 WHERE f_int1 = - old.f_int1; 12583END| 12584DELETE FROM t0_aux 12585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12586 12587# check trigger-8 success: 1 12588DROP TRIGGER trg_1; 12589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12590f_int2 = CAST(f_char1 AS SIGNED INT), 12591f_charbig = 'just inserted' 12592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12593DELETE FROM t0_aux 12594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12595DELETE FROM t1 12596WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12597CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12598BEGIN 12599SET new.f_int1 = old.f_int1 + @max_row, 12600new.f_int2 = old.f_int2 - @max_row, 12601new.f_charbig = '####updated per update trigger####'; 12602END| 12603UPDATE t1 12604SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12605f_charbig = '####updated per update statement itself####'; 12606Warnings: 12607Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12608 12609# check trigger-9 success: 1 12610DROP TRIGGER trg_2; 12611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12612f_int2 = CAST(f_char1 AS SIGNED INT), 12613f_charbig = CONCAT('===',f_char1,'==='); 12614Warnings: 12615Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12616CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12617BEGIN 12618SET new.f_int1 = new.f_int1 + @max_row, 12619new.f_int2 = new.f_int2 - @max_row, 12620new.f_charbig = '####updated per update trigger####'; 12621END| 12622UPDATE t1 12623SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12624f_charbig = '####updated per update statement itself####'; 12625Warnings: 12626Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12627 12628# check trigger-10 success: 1 12629DROP TRIGGER trg_2; 12630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12631f_int2 = CAST(f_char1 AS SIGNED INT), 12632f_charbig = CONCAT('===',f_char1,'==='); 12633Warnings: 12634Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12635CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12636BEGIN 12637SET new.f_int1 = @my_max1 + @counter, 12638new.f_int2 = @my_min2 - @counter, 12639new.f_charbig = '####updated per insert trigger####'; 12640SET @counter = @counter + 1; 12641END| 12642SET @counter = 1; 12643SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12644Warnings: 12645Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12646INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12647SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12648CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12649WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12650ORDER BY f_int1; 12651DROP TRIGGER trg_3; 12652 12653# check trigger-11 success: 1 12654Warnings: 12655Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12656DELETE FROM t1 12657WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12658AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12659AND f_charbig = '####updated per insert trigger####'; 12660CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12661BEGIN 12662SET new.f_int1 = @my_max1 + @counter, 12663new.f_int2 = @my_min2 - @counter, 12664new.f_charbig = '####updated per insert trigger####'; 12665SET @counter = @counter + 1; 12666END| 12667SET @counter = 1; 12668SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12669Warnings: 12670Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12671INSERT INTO t1 (f_char1, f_char2, f_charbig) 12672SELECT CAST(f_int1 AS CHAR), 12673CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12675ORDER BY f_int1; 12676DROP TRIGGER trg_3; 12677 12678# check trigger-12 success: 1 12679Warnings: 12680Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12681DELETE FROM t1 12682WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12683AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12684AND f_charbig = '####updated per insert trigger####'; 12685ANALYZE TABLE t1; 12686Table Op Msg_type Msg_text 12687test.t1 analyze status OK 12688test.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. 12689CHECK TABLE t1 EXTENDED; 12690Table Op Msg_type Msg_text 12691test.t1 check status OK 12692test.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. 12693CHECKSUM TABLE t1 EXTENDED; 12694Table Checksum 12695test.t1 <some_value> 12696OPTIMIZE TABLE t1; 12697Table Op Msg_type Msg_text 12698test.t1 optimize status OK 12699test.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. 12700# check layout success: 1 12701REPAIR TABLE t1 EXTENDED; 12702Table Op Msg_type Msg_text 12703test.t1 repair status OK 12704test.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. 12705# check layout success: 1 12706TRUNCATE t1; 12707Warnings: 12708Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12709 12710# check TRUNCATE success: 1 12711# check layout success: 1 12712# End usability test (inc/partition_check.inc) 12713DROP TABLE t1; 12714CREATE TABLE t1 ( 12715f_int1 INTEGER, 12716f_int2 INTEGER, 12717f_char1 CHAR(20), 12718f_char2 CHAR(20), 12719f_charbig VARCHAR(1000) 12720, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 12721) 12722PARTITION BY LIST(ABS(MOD(f_int1,2))) 12723SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 12724(PARTITION part1 VALUES IN (0) 12725DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12726INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 12727PARTITION part2 VALUES IN (1) 12728DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12729INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 12730PARTITION part3 VALUES IN (NULL) 12731DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 12732INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 12733Warnings: 12734Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12735INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12736SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 12737Warnings: 12738Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 12739# Start usability test (inc/partition_check.inc) 12740create_command 12741SHOW CREATE TABLE t1; 12742Table Create Table 12743t1 CREATE TABLE `t1` ( 12744 `f_int1` int(11) DEFAULT NULL, 12745 `f_int2` int(11) DEFAULT NULL, 12746 `f_char1` char(20) DEFAULT NULL, 12747 `f_char2` char(20) DEFAULT NULL, 12748 `f_charbig` varchar(1000) DEFAULT NULL, 12749 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 12750 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 12751) ENGINE=MyISAM DEFAULT CHARSET=latin1 12752/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 12753SUBPARTITION BY KEY (f_int1) 12754SUBPARTITIONS 3 12755(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12756 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 12757 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 12758 12759unified filelist 12760t1#P#part1#SP#part1sp0.MYD 12761t1#P#part1#SP#part1sp0.MYI 12762t1#P#part1#SP#part1sp1.MYD 12763t1#P#part1#SP#part1sp1.MYI 12764t1#P#part1#SP#part1sp2.MYD 12765t1#P#part1#SP#part1sp2.MYI 12766t1#P#part2#SP#part2sp0.MYD 12767t1#P#part2#SP#part2sp0.MYI 12768t1#P#part2#SP#part2sp1.MYD 12769t1#P#part2#SP#part2sp1.MYI 12770t1#P#part2#SP#part2sp2.MYD 12771t1#P#part2#SP#part2sp2.MYI 12772t1#P#part3#SP#part3sp0.MYD 12773t1#P#part3#SP#part3sp0.MYI 12774t1#P#part3#SP#part3sp1.MYD 12775t1#P#part3#SP#part3sp1.MYI 12776t1#P#part3#SP#part3sp2.MYD 12777t1#P#part3#SP#part3sp2.MYI 12778t1.frm 12779t1.par 12780t1#P#part1#SP#part1sp0.MYD 12781t1#P#part1#SP#part1sp1.MYD 12782t1#P#part1#SP#part1sp2.MYD 12783t1#P#part2#SP#part2sp0.MYD 12784t1#P#part2#SP#part2sp1.MYD 12785t1#P#part2#SP#part2sp2.MYD 12786t1#P#part3#SP#part3sp0.MYD 12787t1#P#part3#SP#part3sp1.MYD 12788t1#P#part3#SP#part3sp2.MYD 12789t1#P#part1#SP#part1sp0.MYI 12790t1#P#part1#SP#part1sp1.MYI 12791t1#P#part1#SP#part1sp2.MYI 12792t1#P#part2#SP#part2sp0.MYI 12793t1#P#part2#SP#part2sp1.MYI 12794t1#P#part2#SP#part2sp2.MYI 12795t1#P#part3#SP#part3sp0.MYI 12796t1#P#part3#SP#part3sp1.MYI 12797t1#P#part3#SP#part3sp2.MYI 12798 12799# check prerequisites-1 success: 1 12800# check COUNT(*) success: 1 12801# check MIN/MAX(f_int1) success: 1 12802# check MIN/MAX(f_int2) success: 1 12803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12805CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12806WHERE f_int1 IN (2,3); 12807ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12808# check prerequisites-3 success: 1 12809# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12810INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12811SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12812CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12813WHERE f_int1 IN (2,3); 12814DELETE FROM t1 WHERE f_charbig = 'delete me'; 12815INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12816SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12817CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12818WHERE f_int1 IN (2,3); 12819DELETE FROM t1 WHERE f_charbig = 'delete me'; 12820# check read via f_int1 success: 1 12821# check read via f_int2 success: 1 12822 12823# check multiple-1 success: 1 12824DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12825 12826# check multiple-2 success: 1 12827INSERT INTO t1 SELECT * FROM t0_template 12828WHERE MOD(f_int1,3) = 0; 12829 12830# check multiple-3 success: 1 12831UPDATE t1 SET f_int1 = f_int1 + @max_row 12832WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12833AND @max_row_div2 + @max_row_div4; 12834 12835# check multiple-4 success: 1 12836DELETE FROM t1 12837WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12838AND @max_row_div2 + @max_row_div4 + @max_row; 12839 12840# check multiple-5 success: 1 12841SELECT COUNT(*) INTO @try_count FROM t0_template 12842WHERE MOD(f_int1,3) = 0 12843AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12844SELECT COUNT(*) INTO @clash_count 12845FROM t1 INNER JOIN t0_template USING(f_int1) 12846WHERE MOD(f_int1,3) = 0 12847AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12848SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12849INSERT INTO t1 12850SET f_int1 = @cur_value , f_int2 = @cur_value, 12851f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12852f_charbig = '#SINGLE#'; 12853 12854# check single-1 success: 1 12855SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12856INSERT INTO t1 12857SET f_int1 = @cur_value , f_int2 = @cur_value, 12858f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12859f_charbig = '#SINGLE#'; 12860 12861# check single-2 success: 1 12862SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12863SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12864UPDATE t1 SET f_int1 = @cur_value2 12865WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12866 12867# check single-3 success: 1 12868SET @cur_value1= -1; 12869SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12870UPDATE t1 SET f_int1 = @cur_value1 12871WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12872 12873# check single-4 success: 1 12874SELECT MAX(f_int1) INTO @cur_value FROM t1; 12875DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12876 12877# check single-5 success: 1 12878DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12879 12880# check single-6 success: 1 12881INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12882 12883# check single-7 success: 1 12884DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12885DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12886INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12887f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12888f_charbig = '#NULL#'; 12889INSERT INTO t1 12890SET f_int1 = NULL , f_int2 = -@max_row, 12891f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12892f_charbig = '#NULL#'; 12893# check null success: 1 12894 12895# check null-1 success: 1 12896UPDATE t1 SET f_int1 = -@max_row 12897WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12898AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12899 12900# check null-2 success: 1 12901UPDATE t1 SET f_int1 = NULL 12902WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12903AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12904 12905# check null-3 success: 1 12906DELETE FROM t1 12907WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12908AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12909 12910# check null-4 success: 1 12911DELETE FROM t1 12912WHERE f_int1 = 0 AND f_int2 = 0 12913AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12914AND f_charbig = '#NULL#'; 12915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12916SELECT f_int1, f_int1, '', '', 'was inserted' 12917 FROM t0_template source_tab 12918WHERE MOD(f_int1,3) = 0 12919AND f_int1 BETWEEN @max_row_div2 AND @max_row 12920ON DUPLICATE KEY 12921UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12922f_int2 = 2 * @max_row + source_tab.f_int1, 12923f_charbig = 'was updated'; 12924 12925# check unique-1-a success: 1 12926 12927# check unique-1-b success: 1 12928DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12929UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12930f_int2 = CAST(f_char1 AS SIGNED INT), 12931f_charbig = CONCAT('===',f_char1,'===') 12932WHERE f_charbig = 'was updated'; 12933REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12934SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12935 FROM t0_template source_tab 12936WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12937 12938# check replace success: 1 12939DELETE FROM t1 12940WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12941DELETE FROM t1 12942WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12943f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12944UPDATE t1 SET f_int2 = f_int1, 12945f_char1 = CAST(f_int1 AS CHAR), 12946f_char2 = CAST(f_int1 AS CHAR), 12947f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12948WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12949SET AUTOCOMMIT= 0; 12950INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12951SELECT f_int1, f_int1, '', '', 'was inserted' 12952FROM t0_template source_tab 12953WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12954 12955# check transactions-1 success: 1 12956COMMIT WORK; 12957 12958# check transactions-2 success: 1 12959ROLLBACK WORK; 12960 12961# check transactions-3 success: 1 12962DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12963COMMIT WORK; 12964ROLLBACK WORK; 12965 12966# check transactions-4 success: 1 12967INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12968SELECT f_int1, f_int1, '', '', 'was inserted' 12969FROM t0_template source_tab 12970WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12971 12972# check transactions-5 success: 1 12973ROLLBACK WORK; 12974Warnings: 12975Warning 1196 Some non-transactional changed tables couldn't be rolled back 12976 12977# check transactions-6 success: 1 12978# INFO: Storage engine used for t1 seems to be not transactional. 12979COMMIT; 12980 12981# check transactions-7 success: 1 12982DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12983COMMIT WORK; 12984SET @@session.sql_mode = 'traditional'; 12985Warnings: 12986Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12987SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12988INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12989SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12990'', '', 'was inserted' FROM t0_template 12991WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12992ERROR 22012: Division by 0 12993COMMIT; 12994 12995# check transactions-8 success: 1 12996# INFO: Storage engine used for t1 seems to be unable to revert 12997# changes made by the failing statement. 12998SET @@session.sql_mode = ''; 12999Warnings: 13000Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13001SET AUTOCOMMIT= 1; 13002DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13003COMMIT WORK; 13004UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13005 13006# check special-1 success: 1 13007UPDATE t1 SET f_charbig = ''; 13008 13009# check special-2 success: 1 13010UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13011INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13012SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13013WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13014INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13015SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13016'just inserted' FROM t0_template 13017WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13018CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13019BEGIN 13020UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13021f_charbig = 'updated by trigger' 13022 WHERE f_int1 = new.f_int1; 13023END| 13024INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13025SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13027 13028# check trigger-1 success: 1 13029DROP TRIGGER trg_1; 13030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13031f_int2 = CAST(f_char1 AS SIGNED INT), 13032f_charbig = 'just inserted' 13033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13034DELETE FROM t0_aux 13035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13038'just inserted' FROM t0_template 13039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13040CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13041BEGIN 13042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13043f_charbig = 'updated by trigger' 13044 WHERE f_int1 = new.f_int1; 13045END| 13046INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13047SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13049 13050# check trigger-2 success: 1 13051DROP TRIGGER trg_1; 13052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13053f_int2 = CAST(f_char1 AS SIGNED INT), 13054f_charbig = 'just inserted' 13055 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13056DELETE FROM t0_aux 13057WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13060'just inserted' FROM t0_template 13061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13062CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13063BEGIN 13064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13065f_charbig = 'updated by trigger' 13066 WHERE f_int1 = new.f_int1; 13067END| 13068UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13069WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13070 13071# check trigger-3 success: 1 13072DROP TRIGGER trg_1; 13073UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13074f_int2 = CAST(f_char1 AS SIGNED INT), 13075f_charbig = 'just inserted' 13076 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13077DELETE FROM t0_aux 13078WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13079INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13080SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13081'just inserted' FROM t0_template 13082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13083CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13084BEGIN 13085UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13086f_charbig = 'updated by trigger' 13087 WHERE f_int1 = - old.f_int1; 13088END| 13089UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13090WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13091 13092# check trigger-4 success: 1 13093DROP TRIGGER trg_1; 13094UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13095f_int2 = CAST(f_char1 AS SIGNED INT), 13096f_charbig = 'just inserted' 13097 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13098DELETE FROM t0_aux 13099WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13101SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13102'just inserted' FROM t0_template 13103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13104CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13105BEGIN 13106UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13107f_charbig = 'updated by trigger' 13108 WHERE f_int1 = new.f_int1; 13109END| 13110UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13111WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13112 13113# check trigger-5 success: 1 13114DROP TRIGGER trg_1; 13115UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13116f_int2 = CAST(f_char1 AS SIGNED INT), 13117f_charbig = 'just inserted' 13118 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13119DELETE FROM t0_aux 13120WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13121INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13122SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13123'just inserted' FROM t0_template 13124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13125CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13126BEGIN 13127UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13128f_charbig = 'updated by trigger' 13129 WHERE f_int1 = - old.f_int1; 13130END| 13131UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13132WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13133 13134# check trigger-6 success: 1 13135DROP TRIGGER trg_1; 13136UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13137f_int2 = CAST(f_char1 AS SIGNED INT), 13138f_charbig = 'just inserted' 13139 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13140DELETE FROM t0_aux 13141WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13142INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13143SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13144'just inserted' FROM t0_template 13145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13146CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13147BEGIN 13148UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13149f_charbig = 'updated by trigger' 13150 WHERE f_int1 = - old.f_int1; 13151END| 13152DELETE FROM t0_aux 13153WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13154 13155# check trigger-7 success: 1 13156DROP TRIGGER trg_1; 13157UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13158f_int2 = CAST(f_char1 AS SIGNED INT), 13159f_charbig = 'just inserted' 13160 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13161DELETE FROM t0_aux 13162WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13163INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13164SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13165'just inserted' FROM t0_template 13166WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13167CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13168BEGIN 13169UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13170f_charbig = 'updated by trigger' 13171 WHERE f_int1 = - old.f_int1; 13172END| 13173DELETE FROM t0_aux 13174WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13175 13176# check trigger-8 success: 1 13177DROP TRIGGER trg_1; 13178UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13179f_int2 = CAST(f_char1 AS SIGNED INT), 13180f_charbig = 'just inserted' 13181 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13182DELETE FROM t0_aux 13183WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13184DELETE FROM t1 13185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13186CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13187BEGIN 13188SET new.f_int1 = old.f_int1 + @max_row, 13189new.f_int2 = old.f_int2 - @max_row, 13190new.f_charbig = '####updated per update trigger####'; 13191END| 13192UPDATE t1 13193SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13194f_charbig = '####updated per update statement itself####'; 13195Warnings: 13196Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13197 13198# check trigger-9 success: 1 13199DROP TRIGGER trg_2; 13200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13201f_int2 = CAST(f_char1 AS SIGNED INT), 13202f_charbig = CONCAT('===',f_char1,'==='); 13203Warnings: 13204Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13205CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13206BEGIN 13207SET new.f_int1 = new.f_int1 + @max_row, 13208new.f_int2 = new.f_int2 - @max_row, 13209new.f_charbig = '####updated per update trigger####'; 13210END| 13211UPDATE t1 13212SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13213f_charbig = '####updated per update statement itself####'; 13214Warnings: 13215Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13216 13217# check trigger-10 success: 1 13218DROP TRIGGER trg_2; 13219UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13220f_int2 = CAST(f_char1 AS SIGNED INT), 13221f_charbig = CONCAT('===',f_char1,'==='); 13222Warnings: 13223Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13224CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13225BEGIN 13226SET new.f_int1 = @my_max1 + @counter, 13227new.f_int2 = @my_min2 - @counter, 13228new.f_charbig = '####updated per insert trigger####'; 13229SET @counter = @counter + 1; 13230END| 13231SET @counter = 1; 13232SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13233Warnings: 13234Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13236SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13237CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13238WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13239ORDER BY f_int1; 13240DROP TRIGGER trg_3; 13241 13242# check trigger-11 success: 1 13243Warnings: 13244Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13245DELETE FROM t1 13246WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13247AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13248AND f_charbig = '####updated per insert trigger####'; 13249CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13250BEGIN 13251SET new.f_int1 = @my_max1 + @counter, 13252new.f_int2 = @my_min2 - @counter, 13253new.f_charbig = '####updated per insert trigger####'; 13254SET @counter = @counter + 1; 13255END| 13256SET @counter = 1; 13257SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13258Warnings: 13259Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13260INSERT INTO t1 (f_char1, f_char2, f_charbig) 13261SELECT CAST(f_int1 AS CHAR), 13262CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13264ORDER BY f_int1; 13265DROP TRIGGER trg_3; 13266 13267# check trigger-12 success: 1 13268Warnings: 13269Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13270DELETE FROM t1 13271WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13272AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13273AND f_charbig = '####updated per insert trigger####'; 13274ANALYZE TABLE t1; 13275Table Op Msg_type Msg_text 13276test.t1 analyze status OK 13277test.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. 13278CHECK TABLE t1 EXTENDED; 13279Table Op Msg_type Msg_text 13280test.t1 check status OK 13281test.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. 13282CHECKSUM TABLE t1 EXTENDED; 13283Table Checksum 13284test.t1 <some_value> 13285OPTIMIZE TABLE t1; 13286Table Op Msg_type Msg_text 13287test.t1 optimize status OK 13288test.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. 13289# check layout success: 1 13290REPAIR TABLE t1 EXTENDED; 13291Table Op Msg_type Msg_text 13292test.t1 repair status OK 13293test.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. 13294# check layout success: 1 13295TRUNCATE t1; 13296Warnings: 13297Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13298 13299# check TRUNCATE success: 1 13300# check layout success: 1 13301# End usability test (inc/partition_check.inc) 13302DROP TABLE t1; 13303#------------------------------------------------------------------------ 13304# 3 Tables with PRIMARY KEY and/or UNIQUE INDEXes 13305# The partitioning function contains two columns. 13306#------------------------------------------------------------------------ 13307# 3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns 13308DROP TABLE IF EXISTS t1; 13309CREATE TABLE t1 ( 13310f_int1 INTEGER, 13311f_int2 INTEGER, 13312f_char1 CHAR(20), 13313f_char2 CHAR(20), 13314f_charbig VARCHAR(1000) 13315, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 13316) 13317PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2 13318(PARTITION p1 13319DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13320INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 13321PARTITION p2 13322DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13323INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 13324Warnings: 13325Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13326INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13327SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 13328Warnings: 13329Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13330# Start usability test (inc/partition_check.inc) 13331create_command 13332SHOW CREATE TABLE t1; 13333Table Create Table 13334t1 CREATE TABLE `t1` ( 13335 `f_int1` int(11) DEFAULT NULL, 13336 `f_int2` int(11) DEFAULT NULL, 13337 `f_char1` char(20) DEFAULT NULL, 13338 `f_char2` char(20) DEFAULT NULL, 13339 `f_charbig` varchar(1000) DEFAULT NULL, 13340 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 13341 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 13342) ENGINE=MyISAM DEFAULT CHARSET=latin1 13343/*!50100 PARTITION BY HASH (f_int1 + f_int2) 13344(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 13345 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 13346 13347unified filelist 13348t1#P#p1.MYD 13349t1#P#p1.MYI 13350t1#P#p2.MYD 13351t1#P#p2.MYI 13352t1.frm 13353t1.par 13354t1#P#p1.MYD 13355t1#P#p2.MYD 13356t1#P#p1.MYI 13357t1#P#p2.MYI 13358 13359# check prerequisites-1 success: 1 13360# check COUNT(*) success: 1 13361# check MIN/MAX(f_int1) success: 1 13362# check MIN/MAX(f_int2) success: 1 13363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13364SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13365CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13366WHERE f_int1 IN (2,3); 13367ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 13368# check prerequisites-3 success: 1 13369# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 13370INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13371SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13372CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13373WHERE f_int1 IN (2,3); 13374DELETE FROM t1 WHERE f_charbig = 'delete me'; 13375INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13376SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13377CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13378WHERE f_int1 IN (2,3); 13379DELETE FROM t1 WHERE f_charbig = 'delete me'; 13380# check read via f_int1 success: 1 13381# check read via f_int2 success: 1 13382 13383# check multiple-1 success: 1 13384DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13385 13386# check multiple-2 success: 1 13387INSERT INTO t1 SELECT * FROM t0_template 13388WHERE MOD(f_int1,3) = 0; 13389 13390# check multiple-3 success: 1 13391UPDATE t1 SET f_int1 = f_int1 + @max_row 13392WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13393AND @max_row_div2 + @max_row_div4; 13394 13395# check multiple-4 success: 1 13396DELETE FROM t1 13397WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13398AND @max_row_div2 + @max_row_div4 + @max_row; 13399 13400# check multiple-5 success: 1 13401SELECT COUNT(*) INTO @try_count FROM t0_template 13402WHERE MOD(f_int1,3) = 0 13403AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13404SELECT COUNT(*) INTO @clash_count 13405FROM t1 INNER JOIN t0_template USING(f_int1) 13406WHERE MOD(f_int1,3) = 0 13407AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13408SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13409INSERT INTO t1 13410SET f_int1 = @cur_value , f_int2 = @cur_value, 13411f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13412f_charbig = '#SINGLE#'; 13413 13414# check single-1 success: 1 13415SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13416INSERT INTO t1 13417SET f_int1 = @cur_value , f_int2 = @cur_value, 13418f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13419f_charbig = '#SINGLE#'; 13420 13421# check single-2 success: 1 13422SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13423SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13424UPDATE t1 SET f_int1 = @cur_value2 13425WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13426 13427# check single-3 success: 1 13428SET @cur_value1= -1; 13429SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13430UPDATE t1 SET f_int1 = @cur_value1 13431WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13432 13433# check single-4 success: 1 13434SELECT MAX(f_int1) INTO @cur_value FROM t1; 13435DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13436 13437# check single-5 success: 1 13438DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13439 13440# check single-6 success: 1 13441INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13442 13443# check single-7 success: 1 13444DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 13445DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13446INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13447f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13448f_charbig = '#NULL#'; 13449INSERT INTO t1 13450SET f_int1 = NULL , f_int2 = -@max_row, 13451f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13452f_charbig = '#NULL#'; 13453# check null success: 1 13454 13455# check null-1 success: 1 13456UPDATE t1 SET f_int1 = -@max_row 13457WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13458AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13459 13460# check null-2 success: 1 13461UPDATE t1 SET f_int1 = NULL 13462WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13463AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13464 13465# check null-3 success: 1 13466DELETE FROM t1 13467WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13468AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13469 13470# check null-4 success: 1 13471DELETE FROM t1 13472WHERE f_int1 = 0 AND f_int2 = 0 13473AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13474AND f_charbig = '#NULL#'; 13475INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13476SELECT f_int1, f_int1, '', '', 'was inserted' 13477 FROM t0_template source_tab 13478WHERE MOD(f_int1,3) = 0 13479AND f_int1 BETWEEN @max_row_div2 AND @max_row 13480ON DUPLICATE KEY 13481UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 13482f_int2 = 2 * @max_row + source_tab.f_int1, 13483f_charbig = 'was updated'; 13484 13485# check unique-1-a success: 1 13486 13487# check unique-1-b success: 1 13488DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13490f_int2 = CAST(f_char1 AS SIGNED INT), 13491f_charbig = CONCAT('===',f_char1,'===') 13492WHERE f_charbig = 'was updated'; 13493REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13494SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 13495 FROM t0_template source_tab 13496WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13497 13498# check replace success: 1 13499DELETE FROM t1 13500WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13501DELETE FROM t1 13502WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13503f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13504UPDATE t1 SET f_int2 = f_int1, 13505f_char1 = CAST(f_int1 AS CHAR), 13506f_char2 = CAST(f_int1 AS CHAR), 13507f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13508WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13509SET AUTOCOMMIT= 0; 13510INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13511SELECT f_int1, f_int1, '', '', 'was inserted' 13512FROM t0_template source_tab 13513WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13514 13515# check transactions-1 success: 1 13516COMMIT WORK; 13517 13518# check transactions-2 success: 1 13519ROLLBACK WORK; 13520 13521# check transactions-3 success: 1 13522DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13523COMMIT WORK; 13524ROLLBACK WORK; 13525 13526# check transactions-4 success: 1 13527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13528SELECT f_int1, f_int1, '', '', 'was inserted' 13529FROM t0_template source_tab 13530WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13531 13532# check transactions-5 success: 1 13533ROLLBACK WORK; 13534Warnings: 13535Warning 1196 Some non-transactional changed tables couldn't be rolled back 13536 13537# check transactions-6 success: 1 13538# INFO: Storage engine used for t1 seems to be not transactional. 13539COMMIT; 13540 13541# check transactions-7 success: 1 13542DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13543COMMIT WORK; 13544SET @@session.sql_mode = 'traditional'; 13545Warnings: 13546Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13547SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13548INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13549SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13550'', '', 'was inserted' FROM t0_template 13551WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13552ERROR 22012: Division by 0 13553COMMIT; 13554 13555# check transactions-8 success: 1 13556# INFO: Storage engine used for t1 seems to be unable to revert 13557# changes made by the failing statement. 13558SET @@session.sql_mode = ''; 13559Warnings: 13560Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13561SET AUTOCOMMIT= 1; 13562DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13563COMMIT WORK; 13564UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13565 13566# check special-1 success: 1 13567UPDATE t1 SET f_charbig = ''; 13568 13569# check special-2 success: 1 13570UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13571INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13572SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13573WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13576'just inserted' FROM t0_template 13577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13578CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13579BEGIN 13580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13581f_charbig = 'updated by trigger' 13582 WHERE f_int1 = new.f_int1; 13583END| 13584INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13585SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13586WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13587 13588# check trigger-1 success: 1 13589DROP TRIGGER trg_1; 13590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13591f_int2 = CAST(f_char1 AS SIGNED INT), 13592f_charbig = 'just inserted' 13593 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13594DELETE FROM t0_aux 13595WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13596INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13597SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13598'just inserted' FROM t0_template 13599WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13600CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13601BEGIN 13602UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13603f_charbig = 'updated by trigger' 13604 WHERE f_int1 = new.f_int1; 13605END| 13606INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13607SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13608WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13609 13610# check trigger-2 success: 1 13611DROP TRIGGER trg_1; 13612UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13613f_int2 = CAST(f_char1 AS SIGNED INT), 13614f_charbig = 'just inserted' 13615 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13616DELETE FROM t0_aux 13617WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13618INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13619SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13620'just inserted' FROM t0_template 13621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13622CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13623BEGIN 13624UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13625f_charbig = 'updated by trigger' 13626 WHERE f_int1 = new.f_int1; 13627END| 13628UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13629WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13630 13631# check trigger-3 success: 1 13632DROP TRIGGER trg_1; 13633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13634f_int2 = CAST(f_char1 AS SIGNED INT), 13635f_charbig = 'just inserted' 13636 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13637DELETE FROM t0_aux 13638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13641'just inserted' FROM t0_template 13642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13643CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13644BEGIN 13645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13646f_charbig = 'updated by trigger' 13647 WHERE f_int1 = - old.f_int1; 13648END| 13649UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13650WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13651 13652# check trigger-4 success: 1 13653DROP TRIGGER trg_1; 13654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13655f_int2 = CAST(f_char1 AS SIGNED INT), 13656f_charbig = 'just inserted' 13657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13658DELETE FROM t0_aux 13659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13662'just inserted' FROM t0_template 13663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13664CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13665BEGIN 13666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13667f_charbig = 'updated by trigger' 13668 WHERE f_int1 = new.f_int1; 13669END| 13670UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13672 13673# check trigger-5 success: 1 13674DROP TRIGGER trg_1; 13675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13676f_int2 = CAST(f_char1 AS SIGNED INT), 13677f_charbig = 'just inserted' 13678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13679DELETE FROM t0_aux 13680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13683'just inserted' FROM t0_template 13684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13685CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13686BEGIN 13687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13688f_charbig = 'updated by trigger' 13689 WHERE f_int1 = - old.f_int1; 13690END| 13691UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13693 13694# check trigger-6 success: 1 13695DROP TRIGGER trg_1; 13696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13697f_int2 = CAST(f_char1 AS SIGNED INT), 13698f_charbig = 'just inserted' 13699 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13700DELETE FROM t0_aux 13701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13704'just inserted' FROM t0_template 13705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13706CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13707BEGIN 13708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13709f_charbig = 'updated by trigger' 13710 WHERE f_int1 = - old.f_int1; 13711END| 13712DELETE FROM t0_aux 13713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13714 13715# check trigger-7 success: 1 13716DROP TRIGGER trg_1; 13717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13718f_int2 = CAST(f_char1 AS SIGNED INT), 13719f_charbig = 'just inserted' 13720 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13721DELETE FROM t0_aux 13722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13724SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13725'just inserted' FROM t0_template 13726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13727CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13728BEGIN 13729UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13730f_charbig = 'updated by trigger' 13731 WHERE f_int1 = - old.f_int1; 13732END| 13733DELETE FROM t0_aux 13734WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13735 13736# check trigger-8 success: 1 13737DROP TRIGGER trg_1; 13738UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13739f_int2 = CAST(f_char1 AS SIGNED INT), 13740f_charbig = 'just inserted' 13741 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13742DELETE FROM t0_aux 13743WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13744DELETE FROM t1 13745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13746CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13747BEGIN 13748SET new.f_int1 = old.f_int1 + @max_row, 13749new.f_int2 = old.f_int2 - @max_row, 13750new.f_charbig = '####updated per update trigger####'; 13751END| 13752UPDATE t1 13753SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13754f_charbig = '####updated per update statement itself####'; 13755Warnings: 13756Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13757 13758# check trigger-9 success: 1 13759DROP TRIGGER trg_2; 13760UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13761f_int2 = CAST(f_char1 AS SIGNED INT), 13762f_charbig = CONCAT('===',f_char1,'==='); 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. 13765CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13766BEGIN 13767SET new.f_int1 = new.f_int1 + @max_row, 13768new.f_int2 = new.f_int2 - @max_row, 13769new.f_charbig = '####updated per update trigger####'; 13770END| 13771UPDATE t1 13772SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13773f_charbig = '####updated per update statement itself####'; 13774Warnings: 13775Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13776 13777# check trigger-10 success: 1 13778DROP TRIGGER trg_2; 13779UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13780f_int2 = CAST(f_char1 AS SIGNED INT), 13781f_charbig = CONCAT('===',f_char1,'==='); 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. 13784CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13785BEGIN 13786SET new.f_int1 = @my_max1 + @counter, 13787new.f_int2 = @my_min2 - @counter, 13788new.f_charbig = '####updated per insert trigger####'; 13789SET @counter = @counter + 1; 13790END| 13791SET @counter = 1; 13792SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13793Warnings: 13794Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13795INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13796SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13797CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13798WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13799ORDER BY f_int1; 13800DROP TRIGGER trg_3; 13801 13802# check trigger-11 success: 1 13803Warnings: 13804Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13805DELETE FROM t1 13806WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13807AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13808AND f_charbig = '####updated per insert trigger####'; 13809CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13810BEGIN 13811SET new.f_int1 = @my_max1 + @counter, 13812new.f_int2 = @my_min2 - @counter, 13813new.f_charbig = '####updated per insert trigger####'; 13814SET @counter = @counter + 1; 13815END| 13816SET @counter = 1; 13817SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13818Warnings: 13819Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13820INSERT INTO t1 (f_char1, f_char2, f_charbig) 13821SELECT CAST(f_int1 AS CHAR), 13822CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13824ORDER BY f_int1; 13825DROP TRIGGER trg_3; 13826 13827# check trigger-12 success: 1 13828Warnings: 13829Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13830DELETE FROM t1 13831WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13832AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13833AND f_charbig = '####updated per insert trigger####'; 13834ANALYZE TABLE t1; 13835Table Op Msg_type Msg_text 13836test.t1 analyze status OK 13837test.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. 13838CHECK TABLE t1 EXTENDED; 13839Table Op Msg_type Msg_text 13840test.t1 check status OK 13841test.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. 13842CHECKSUM TABLE t1 EXTENDED; 13843Table Checksum 13844test.t1 <some_value> 13845OPTIMIZE TABLE t1; 13846Table Op Msg_type Msg_text 13847test.t1 optimize status OK 13848test.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. 13849# check layout success: 1 13850REPAIR TABLE t1 EXTENDED; 13851Table Op Msg_type Msg_text 13852test.t1 repair status OK 13853test.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. 13854# check layout success: 1 13855TRUNCATE t1; 13856Warnings: 13857Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13858 13859# check TRUNCATE success: 1 13860# check layout success: 1 13861# End usability test (inc/partition_check.inc) 13862DROP TABLE t1; 13863CREATE TABLE t1 ( 13864f_int1 INTEGER, 13865f_int2 INTEGER, 13866f_char1 CHAR(20), 13867f_char2 CHAR(20), 13868f_charbig VARCHAR(1000) 13869, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 13870) 13871PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5 13872(PARTITION p1 13873DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13874INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 13875PARTITION p2 13876DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13877INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 13878PARTITION p3 13879DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13880INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 13881PARTITION p4 13882DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13883INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 13884PARTITION p5 13885DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 13886INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 13887Warnings: 13888Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13889INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13890SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 13891Warnings: 13892Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 13893# Start usability test (inc/partition_check.inc) 13894create_command 13895SHOW CREATE TABLE t1; 13896Table Create Table 13897t1 CREATE TABLE `t1` ( 13898 `f_int1` int(11) DEFAULT NULL, 13899 `f_int2` int(11) DEFAULT NULL, 13900 `f_char1` char(20) DEFAULT NULL, 13901 `f_char2` char(20) DEFAULT NULL, 13902 `f_charbig` varchar(1000) DEFAULT NULL, 13903 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 13904 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 13905) ENGINE=MyISAM DEFAULT CHARSET=latin1 13906/*!50100 PARTITION BY KEY (f_int1,f_int2) 13907(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 13908 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 13909 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 13910 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 13911 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 13912 13913unified filelist 13914t1#P#p1.MYD 13915t1#P#p1.MYI 13916t1#P#p2.MYD 13917t1#P#p2.MYI 13918t1#P#p3.MYD 13919t1#P#p3.MYI 13920t1#P#p4.MYD 13921t1#P#p4.MYI 13922t1#P#p5.MYD 13923t1#P#p5.MYI 13924t1.frm 13925t1.par 13926t1#P#p1.MYD 13927t1#P#p2.MYD 13928t1#P#p3.MYD 13929t1#P#p4.MYD 13930t1#P#p5.MYD 13931t1#P#p1.MYI 13932t1#P#p2.MYI 13933t1#P#p3.MYI 13934t1#P#p4.MYI 13935t1#P#p5.MYI 13936 13937# check prerequisites-1 success: 1 13938# check COUNT(*) success: 1 13939# check MIN/MAX(f_int1) success: 1 13940# check MIN/MAX(f_int2) success: 1 13941INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13942SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13943CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13944WHERE f_int1 IN (2,3); 13945ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 13946# check prerequisites-3 success: 1 13947# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 13948INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13949SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13950CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13951WHERE f_int1 IN (2,3); 13952DELETE FROM t1 WHERE f_charbig = 'delete me'; 13953INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13954SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13955CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13956WHERE f_int1 IN (2,3); 13957DELETE FROM t1 WHERE f_charbig = 'delete me'; 13958# check read via f_int1 success: 1 13959# check read via f_int2 success: 1 13960 13961# check multiple-1 success: 1 13962DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13963 13964# check multiple-2 success: 1 13965INSERT INTO t1 SELECT * FROM t0_template 13966WHERE MOD(f_int1,3) = 0; 13967 13968# check multiple-3 success: 1 13969UPDATE t1 SET f_int1 = f_int1 + @max_row 13970WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13971AND @max_row_div2 + @max_row_div4; 13972 13973# check multiple-4 success: 1 13974DELETE FROM t1 13975WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13976AND @max_row_div2 + @max_row_div4 + @max_row; 13977 13978# check multiple-5 success: 1 13979SELECT COUNT(*) INTO @try_count FROM t0_template 13980WHERE MOD(f_int1,3) = 0 13981AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13982SELECT COUNT(*) INTO @clash_count 13983FROM t1 INNER JOIN t0_template USING(f_int1) 13984WHERE MOD(f_int1,3) = 0 13985AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13986SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13987INSERT INTO t1 13988SET f_int1 = @cur_value , f_int2 = @cur_value, 13989f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13990f_charbig = '#SINGLE#'; 13991 13992# check single-1 success: 1 13993SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13994INSERT INTO t1 13995SET f_int1 = @cur_value , f_int2 = @cur_value, 13996f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13997f_charbig = '#SINGLE#'; 13998 13999# check single-2 success: 1 14000SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14001SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14002UPDATE t1 SET f_int1 = @cur_value2 14003WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14004 14005# check single-3 success: 1 14006SET @cur_value1= -1; 14007SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14008UPDATE t1 SET f_int1 = @cur_value1 14009WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14010 14011# check single-4 success: 1 14012SELECT MAX(f_int1) INTO @cur_value FROM t1; 14013DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14014 14015# check single-5 success: 1 14016DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14017 14018# check single-6 success: 1 14019INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14020 14021# check single-7 success: 1 14022DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 14023DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14024INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14025f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14026f_charbig = '#NULL#'; 14027INSERT INTO t1 14028SET f_int1 = NULL , f_int2 = -@max_row, 14029f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14030f_charbig = '#NULL#'; 14031# check null success: 1 14032 14033# check null-1 success: 1 14034UPDATE t1 SET f_int1 = -@max_row 14035WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14036AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14037 14038# check null-2 success: 1 14039UPDATE t1 SET f_int1 = NULL 14040WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14041AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14042 14043# check null-3 success: 1 14044DELETE FROM t1 14045WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14046AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14047 14048# check null-4 success: 1 14049DELETE FROM t1 14050WHERE f_int1 = 0 AND f_int2 = 0 14051AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14052AND f_charbig = '#NULL#'; 14053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14054SELECT f_int1, f_int1, '', '', 'was inserted' 14055 FROM t0_template source_tab 14056WHERE MOD(f_int1,3) = 0 14057AND f_int1 BETWEEN @max_row_div2 AND @max_row 14058ON DUPLICATE KEY 14059UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14060f_int2 = 2 * @max_row + source_tab.f_int1, 14061f_charbig = 'was updated'; 14062 14063# check unique-1-a success: 1 14064 14065# check unique-1-b success: 1 14066DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14068f_int2 = CAST(f_char1 AS SIGNED INT), 14069f_charbig = CONCAT('===',f_char1,'===') 14070WHERE f_charbig = 'was updated'; 14071REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14072SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14073 FROM t0_template source_tab 14074WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14075 14076# check replace success: 1 14077DELETE FROM t1 14078WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 14079DELETE FROM t1 14080WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 14081f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 14082UPDATE t1 SET f_int2 = f_int1, 14083f_char1 = CAST(f_int1 AS CHAR), 14084f_char2 = CAST(f_int1 AS CHAR), 14085f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 14086WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 14087SET AUTOCOMMIT= 0; 14088INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14089SELECT f_int1, f_int1, '', '', 'was inserted' 14090FROM t0_template source_tab 14091WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14092 14093# check transactions-1 success: 1 14094COMMIT WORK; 14095 14096# check transactions-2 success: 1 14097ROLLBACK WORK; 14098 14099# check transactions-3 success: 1 14100DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14101COMMIT WORK; 14102ROLLBACK WORK; 14103 14104# check transactions-4 success: 1 14105INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14106SELECT f_int1, f_int1, '', '', 'was inserted' 14107FROM t0_template source_tab 14108WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14109 14110# check transactions-5 success: 1 14111ROLLBACK WORK; 14112Warnings: 14113Warning 1196 Some non-transactional changed tables couldn't be rolled back 14114 14115# check transactions-6 success: 1 14116# INFO: Storage engine used for t1 seems to be not transactional. 14117COMMIT; 14118 14119# check transactions-7 success: 1 14120DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14121COMMIT WORK; 14122SET @@session.sql_mode = 'traditional'; 14123Warnings: 14124Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14125SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14126INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14127SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14128'', '', 'was inserted' FROM t0_template 14129WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14130ERROR 22012: Division by 0 14131COMMIT; 14132 14133# check transactions-8 success: 1 14134# INFO: Storage engine used for t1 seems to be unable to revert 14135# changes made by the failing statement. 14136SET @@session.sql_mode = ''; 14137Warnings: 14138Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14139SET AUTOCOMMIT= 1; 14140DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14141COMMIT WORK; 14142UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14143 14144# check special-1 success: 1 14145UPDATE t1 SET f_charbig = ''; 14146 14147# check special-2 success: 1 14148UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14149INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14150SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14153SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14154'just inserted' FROM t0_template 14155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14156CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14157BEGIN 14158UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14159f_charbig = 'updated by trigger' 14160 WHERE f_int1 = new.f_int1; 14161END| 14162INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14163SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14165 14166# check trigger-1 success: 1 14167DROP TRIGGER trg_1; 14168UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14169f_int2 = CAST(f_char1 AS SIGNED INT), 14170f_charbig = 'just inserted' 14171 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14172DELETE FROM t0_aux 14173WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14174INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14175SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14176'just inserted' FROM t0_template 14177WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14178CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14179BEGIN 14180UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14181f_charbig = 'updated by trigger' 14182 WHERE f_int1 = new.f_int1; 14183END| 14184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14185SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14186WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14187 14188# check trigger-2 success: 1 14189DROP TRIGGER trg_1; 14190UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14191f_int2 = CAST(f_char1 AS SIGNED INT), 14192f_charbig = 'just inserted' 14193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14194DELETE FROM t0_aux 14195WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14196INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14197SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14198'just inserted' FROM t0_template 14199WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14200CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14201BEGIN 14202UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14203f_charbig = 'updated by trigger' 14204 WHERE f_int1 = new.f_int1; 14205END| 14206UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14207WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14208 14209# check trigger-3 success: 1 14210DROP TRIGGER trg_1; 14211UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14212f_int2 = CAST(f_char1 AS SIGNED INT), 14213f_charbig = 'just inserted' 14214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14215DELETE FROM t0_aux 14216WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14217INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14218SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14219'just inserted' FROM t0_template 14220WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14221CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14222BEGIN 14223UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14224f_charbig = 'updated by trigger' 14225 WHERE f_int1 = - old.f_int1; 14226END| 14227UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14228WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14229 14230# check trigger-4 success: 1 14231DROP TRIGGER trg_1; 14232UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14233f_int2 = CAST(f_char1 AS SIGNED INT), 14234f_charbig = 'just inserted' 14235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14236DELETE FROM t0_aux 14237WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14238INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14239SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14240'just inserted' FROM t0_template 14241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14242CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14243BEGIN 14244UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14245f_charbig = 'updated by trigger' 14246 WHERE f_int1 = new.f_int1; 14247END| 14248UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14249WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14250 14251# check trigger-5 success: 1 14252DROP TRIGGER trg_1; 14253UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14254f_int2 = CAST(f_char1 AS SIGNED INT), 14255f_charbig = 'just inserted' 14256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14257DELETE FROM t0_aux 14258WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14259INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14260SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14261'just inserted' FROM t0_template 14262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14263CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14264BEGIN 14265UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14266f_charbig = 'updated by trigger' 14267 WHERE f_int1 = - old.f_int1; 14268END| 14269UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14270WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14271 14272# check trigger-6 success: 1 14273DROP TRIGGER trg_1; 14274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14275f_int2 = CAST(f_char1 AS SIGNED INT), 14276f_charbig = 'just inserted' 14277 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14278DELETE FROM t0_aux 14279WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14280INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14281SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14282'just inserted' FROM t0_template 14283WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14284CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14285BEGIN 14286UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14287f_charbig = 'updated by trigger' 14288 WHERE f_int1 = - old.f_int1; 14289END| 14290DELETE FROM t0_aux 14291WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14292 14293# check trigger-7 success: 1 14294DROP TRIGGER trg_1; 14295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14296f_int2 = CAST(f_char1 AS SIGNED INT), 14297f_charbig = 'just inserted' 14298 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14299DELETE FROM t0_aux 14300WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14301INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14302SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14303'just inserted' FROM t0_template 14304WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14305CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14306BEGIN 14307UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14308f_charbig = 'updated by trigger' 14309 WHERE f_int1 = - old.f_int1; 14310END| 14311DELETE FROM t0_aux 14312WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14313 14314# check trigger-8 success: 1 14315DROP TRIGGER trg_1; 14316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14317f_int2 = CAST(f_char1 AS SIGNED INT), 14318f_charbig = 'just inserted' 14319 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14320DELETE FROM t0_aux 14321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14322DELETE FROM t1 14323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14324CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14325BEGIN 14326SET new.f_int1 = old.f_int1 + @max_row, 14327new.f_int2 = old.f_int2 - @max_row, 14328new.f_charbig = '####updated per update trigger####'; 14329END| 14330UPDATE t1 14331SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14332f_charbig = '####updated per update statement itself####'; 14333Warnings: 14334Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14335 14336# check trigger-9 success: 1 14337DROP TRIGGER trg_2; 14338UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14339f_int2 = CAST(f_char1 AS SIGNED INT), 14340f_charbig = CONCAT('===',f_char1,'==='); 14341Warnings: 14342Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14343CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14344BEGIN 14345SET new.f_int1 = new.f_int1 + @max_row, 14346new.f_int2 = new.f_int2 - @max_row, 14347new.f_charbig = '####updated per update trigger####'; 14348END| 14349UPDATE t1 14350SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14351f_charbig = '####updated per update statement itself####'; 14352Warnings: 14353Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14354 14355# check trigger-10 success: 1 14356DROP TRIGGER trg_2; 14357UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14358f_int2 = CAST(f_char1 AS SIGNED INT), 14359f_charbig = CONCAT('===',f_char1,'==='); 14360Warnings: 14361Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14362CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14363BEGIN 14364SET new.f_int1 = @my_max1 + @counter, 14365new.f_int2 = @my_min2 - @counter, 14366new.f_charbig = '####updated per insert trigger####'; 14367SET @counter = @counter + 1; 14368END| 14369SET @counter = 1; 14370SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14371Warnings: 14372Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14373INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14374SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14375CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14376WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14377ORDER BY f_int1; 14378DROP TRIGGER trg_3; 14379 14380# check trigger-11 success: 1 14381Warnings: 14382Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14383DELETE FROM t1 14384WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14385AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14386AND f_charbig = '####updated per insert trigger####'; 14387CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14388BEGIN 14389SET new.f_int1 = @my_max1 + @counter, 14390new.f_int2 = @my_min2 - @counter, 14391new.f_charbig = '####updated per insert trigger####'; 14392SET @counter = @counter + 1; 14393END| 14394SET @counter = 1; 14395SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 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_char1, f_char2, f_charbig) 14399SELECT CAST(f_int1 AS CHAR), 14400CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14401WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14402ORDER BY f_int1; 14403DROP TRIGGER trg_3; 14404 14405# check trigger-12 success: 1 14406Warnings: 14407Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14408DELETE FROM t1 14409WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14410AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14411AND f_charbig = '####updated per insert trigger####'; 14412ANALYZE TABLE t1; 14413Table Op Msg_type Msg_text 14414test.t1 analyze status OK 14415test.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. 14416CHECK TABLE t1 EXTENDED; 14417Table Op Msg_type Msg_text 14418test.t1 check status OK 14419test.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. 14420CHECKSUM TABLE t1 EXTENDED; 14421Table Checksum 14422test.t1 <some_value> 14423OPTIMIZE TABLE t1; 14424Table Op Msg_type Msg_text 14425test.t1 optimize status OK 14426test.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. 14427# check layout success: 1 14428REPAIR TABLE t1 EXTENDED; 14429Table Op Msg_type Msg_text 14430test.t1 repair status OK 14431test.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. 14432# check layout success: 1 14433TRUNCATE t1; 14434Warnings: 14435Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14436 14437# check TRUNCATE success: 1 14438# check layout success: 1 14439# End usability test (inc/partition_check.inc) 14440DROP TABLE t1; 14441CREATE TABLE t1 ( 14442f_int1 INTEGER, 14443f_int2 INTEGER, 14444f_char1 CHAR(20), 14445f_char2 CHAR(20), 14446f_charbig VARCHAR(1000) 14447, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 14448) 14449PARTITION BY LIST(MOD(f_int1 + f_int2,4)) 14450(PARTITION part_3 VALUES IN (-3) 14451DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14452PARTITION part_2 VALUES IN (-2) 14453DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14454PARTITION part_1 VALUES IN (-1) 14455DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14456PARTITION part_N VALUES IN (NULL) 14457DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14458PARTITION part0 VALUES IN (0) 14459DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14460PARTITION part1 VALUES IN (1) 14461DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14462PARTITION part2 VALUES IN (2) 14463DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 14464PARTITION part3 VALUES IN (3) 14465DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 14466Warnings: 14467Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14468INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14469SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 14470Warnings: 14471Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14472# Start usability test (inc/partition_check.inc) 14473create_command 14474SHOW CREATE TABLE t1; 14475Table Create Table 14476t1 CREATE TABLE `t1` ( 14477 `f_int1` int(11) DEFAULT NULL, 14478 `f_int2` int(11) DEFAULT NULL, 14479 `f_char1` char(20) DEFAULT NULL, 14480 `f_char2` char(20) DEFAULT NULL, 14481 `f_charbig` varchar(1000) DEFAULT NULL, 14482 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 14483 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 14484) ENGINE=MyISAM DEFAULT CHARSET=latin1 14485/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) 14486(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14487 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14488 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14489 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14490 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14491 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14492 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 14493 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 14494 14495unified filelist 14496t1#P#part0.MYD 14497t1#P#part0.MYI 14498t1#P#part1.MYD 14499t1#P#part1.MYI 14500t1#P#part2.MYD 14501t1#P#part2.MYI 14502t1#P#part3.MYD 14503t1#P#part3.MYI 14504t1#P#part_1.MYD 14505t1#P#part_1.MYI 14506t1#P#part_2.MYD 14507t1#P#part_2.MYI 14508t1#P#part_3.MYD 14509t1#P#part_3.MYI 14510t1#P#part_N.MYD 14511t1#P#part_N.MYI 14512t1.frm 14513t1.par 14514t1#P#part0.MYD 14515t1#P#part1.MYD 14516t1#P#part2.MYD 14517t1#P#part3.MYD 14518t1#P#part_1.MYD 14519t1#P#part_2.MYD 14520t1#P#part_3.MYD 14521t1#P#part_N.MYD 14522t1#P#part0.MYI 14523t1#P#part1.MYI 14524t1#P#part2.MYI 14525t1#P#part3.MYI 14526t1#P#part_1.MYI 14527t1#P#part_2.MYI 14528t1#P#part_3.MYI 14529t1#P#part_N.MYI 14530 14531# check prerequisites-1 success: 1 14532# check COUNT(*) success: 1 14533# check MIN/MAX(f_int1) success: 1 14534# check MIN/MAX(f_int2) success: 1 14535INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14536SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14537CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14538WHERE f_int1 IN (2,3); 14539ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 14540# check prerequisites-3 success: 1 14541# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 14542INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14543SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14544CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14545WHERE f_int1 IN (2,3); 14546DELETE FROM t1 WHERE f_charbig = 'delete me'; 14547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14548SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14549CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14550WHERE f_int1 IN (2,3); 14551DELETE FROM t1 WHERE f_charbig = 'delete me'; 14552# check read via f_int1 success: 1 14553# check read via f_int2 success: 1 14554 14555# check multiple-1 success: 1 14556DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14557 14558# check multiple-2 success: 1 14559INSERT INTO t1 SELECT * FROM t0_template 14560WHERE MOD(f_int1,3) = 0; 14561 14562# check multiple-3 success: 1 14563UPDATE t1 SET f_int1 = f_int1 + @max_row 14564WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14565AND @max_row_div2 + @max_row_div4; 14566 14567# check multiple-4 success: 1 14568DELETE FROM t1 14569WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14570AND @max_row_div2 + @max_row_div4 + @max_row; 14571 14572# check multiple-5 success: 1 14573SELECT COUNT(*) INTO @try_count FROM t0_template 14574WHERE MOD(f_int1,3) = 0 14575AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14576SELECT COUNT(*) INTO @clash_count 14577FROM t1 INNER JOIN t0_template USING(f_int1) 14578WHERE MOD(f_int1,3) = 0 14579AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14580SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14581INSERT INTO t1 14582SET f_int1 = @cur_value , f_int2 = @cur_value, 14583f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14584f_charbig = '#SINGLE#'; 14585 14586# check single-1 success: 1 14587SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14588INSERT INTO t1 14589SET f_int1 = @cur_value , f_int2 = @cur_value, 14590f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14591f_charbig = '#SINGLE#'; 14592 14593# check single-2 success: 1 14594SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14595SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14596UPDATE t1 SET f_int1 = @cur_value2 14597WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14598 14599# check single-3 success: 1 14600SET @cur_value1= -1; 14601SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14602UPDATE t1 SET f_int1 = @cur_value1 14603WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14604 14605# check single-4 success: 1 14606SELECT MAX(f_int1) INTO @cur_value FROM t1; 14607DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14608 14609# check single-5 success: 1 14610DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14611 14612# check single-6 success: 1 14613INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14614 14615# check single-7 success: 1 14616DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 14617DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14618INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14619f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14620f_charbig = '#NULL#'; 14621INSERT INTO t1 14622SET f_int1 = NULL , f_int2 = -@max_row, 14623f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14624f_charbig = '#NULL#'; 14625# check null success: 1 14626 14627# check null-1 success: 1 14628UPDATE t1 SET f_int1 = -@max_row 14629WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14630AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14631 14632# check null-2 success: 1 14633UPDATE t1 SET f_int1 = NULL 14634WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14635AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14636 14637# check null-3 success: 1 14638DELETE FROM t1 14639WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14640AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14641 14642# check null-4 success: 1 14643DELETE FROM t1 14644WHERE f_int1 = 0 AND f_int2 = 0 14645AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14646AND f_charbig = '#NULL#'; 14647INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14648SELECT f_int1, f_int1, '', '', 'was inserted' 14649 FROM t0_template source_tab 14650WHERE MOD(f_int1,3) = 0 14651AND f_int1 BETWEEN @max_row_div2 AND @max_row 14652ON DUPLICATE KEY 14653UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14654f_int2 = 2 * @max_row + source_tab.f_int1, 14655f_charbig = 'was updated'; 14656 14657# check unique-1-a success: 1 14658 14659# check unique-1-b success: 1 14660DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14661UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14662f_int2 = CAST(f_char1 AS SIGNED INT), 14663f_charbig = CONCAT('===',f_char1,'===') 14664WHERE f_charbig = 'was updated'; 14665REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14666SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14667 FROM t0_template source_tab 14668WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14669 14670# check replace success: 1 14671DELETE FROM t1 14672WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 14673DELETE FROM t1 14674WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 14675f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 14676UPDATE t1 SET f_int2 = f_int1, 14677f_char1 = CAST(f_int1 AS CHAR), 14678f_char2 = CAST(f_int1 AS CHAR), 14679f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 14680WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 14681SET AUTOCOMMIT= 0; 14682INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14683SELECT f_int1, f_int1, '', '', 'was inserted' 14684FROM t0_template source_tab 14685WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14686 14687# check transactions-1 success: 1 14688COMMIT WORK; 14689 14690# check transactions-2 success: 1 14691ROLLBACK WORK; 14692 14693# check transactions-3 success: 1 14694DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14695COMMIT WORK; 14696ROLLBACK WORK; 14697 14698# check transactions-4 success: 1 14699INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14700SELECT f_int1, f_int1, '', '', 'was inserted' 14701FROM t0_template source_tab 14702WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14703 14704# check transactions-5 success: 1 14705ROLLBACK WORK; 14706Warnings: 14707Warning 1196 Some non-transactional changed tables couldn't be rolled back 14708 14709# check transactions-6 success: 1 14710# INFO: Storage engine used for t1 seems to be not transactional. 14711COMMIT; 14712 14713# check transactions-7 success: 1 14714DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14715COMMIT WORK; 14716SET @@session.sql_mode = 'traditional'; 14717Warnings: 14718Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14719SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14721SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14722'', '', 'was inserted' FROM t0_template 14723WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14724ERROR 22012: Division by 0 14725COMMIT; 14726 14727# check transactions-8 success: 1 14728# INFO: Storage engine used for t1 seems to be unable to revert 14729# changes made by the failing statement. 14730SET @@session.sql_mode = ''; 14731Warnings: 14732Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14733SET AUTOCOMMIT= 1; 14734DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14735COMMIT WORK; 14736UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14737 14738# check special-1 success: 1 14739UPDATE t1 SET f_charbig = ''; 14740 14741# check special-2 success: 1 14742UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14743INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14744SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14746INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14747SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14748'just inserted' FROM t0_template 14749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14750CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14751BEGIN 14752UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14753f_charbig = 'updated by trigger' 14754 WHERE f_int1 = new.f_int1; 14755END| 14756INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14757SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14759 14760# check trigger-1 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 INSERT 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 = new.f_int1; 14777END| 14778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14779SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14780WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14781 14782# check trigger-2 success: 1 14783DROP TRIGGER trg_1; 14784UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14785f_int2 = CAST(f_char1 AS SIGNED INT), 14786f_charbig = 'just inserted' 14787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14788DELETE FROM t0_aux 14789WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14790INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14791SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14792'just inserted' FROM t0_template 14793WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14794CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14795BEGIN 14796UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14797f_charbig = 'updated by trigger' 14798 WHERE f_int1 = new.f_int1; 14799END| 14800UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14801WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14802 14803# check trigger-3 success: 1 14804DROP TRIGGER trg_1; 14805UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14806f_int2 = CAST(f_char1 AS SIGNED INT), 14807f_charbig = 'just inserted' 14808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14809DELETE FROM t0_aux 14810WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14811INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14812SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14813'just inserted' FROM t0_template 14814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14815CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14816BEGIN 14817UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14818f_charbig = 'updated by trigger' 14819 WHERE f_int1 = - old.f_int1; 14820END| 14821UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14822WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14823 14824# check trigger-4 success: 1 14825DROP TRIGGER trg_1; 14826UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14827f_int2 = CAST(f_char1 AS SIGNED INT), 14828f_charbig = 'just inserted' 14829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14830DELETE FROM t0_aux 14831WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14832INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14833SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14834'just inserted' FROM t0_template 14835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14836CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14837BEGIN 14838UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14839f_charbig = 'updated by trigger' 14840 WHERE f_int1 = new.f_int1; 14841END| 14842UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14843WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14844 14845# check trigger-5 success: 1 14846DROP TRIGGER trg_1; 14847UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14848f_int2 = CAST(f_char1 AS SIGNED INT), 14849f_charbig = 'just inserted' 14850 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14851DELETE FROM t0_aux 14852WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14853INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14854SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14855'just inserted' FROM t0_template 14856WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14857CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14858BEGIN 14859UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14860f_charbig = 'updated by trigger' 14861 WHERE f_int1 = - old.f_int1; 14862END| 14863UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14864WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14865 14866# check trigger-6 success: 1 14867DROP TRIGGER trg_1; 14868UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14869f_int2 = CAST(f_char1 AS SIGNED INT), 14870f_charbig = 'just inserted' 14871 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14872DELETE FROM t0_aux 14873WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14874INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14875SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14876'just inserted' FROM t0_template 14877WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14878CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14879BEGIN 14880UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14881f_charbig = 'updated by trigger' 14882 WHERE f_int1 = - old.f_int1; 14883END| 14884DELETE FROM t0_aux 14885WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14886 14887# check trigger-7 success: 1 14888DROP TRIGGER trg_1; 14889UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14890f_int2 = CAST(f_char1 AS SIGNED INT), 14891f_charbig = 'just inserted' 14892 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14893DELETE FROM t0_aux 14894WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14895INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14896SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14897'just inserted' FROM t0_template 14898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14899CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14900BEGIN 14901UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14902f_charbig = 'updated by trigger' 14903 WHERE f_int1 = - old.f_int1; 14904END| 14905DELETE FROM t0_aux 14906WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14907 14908# check trigger-8 success: 1 14909DROP TRIGGER trg_1; 14910UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14911f_int2 = CAST(f_char1 AS SIGNED INT), 14912f_charbig = 'just inserted' 14913 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14914DELETE FROM t0_aux 14915WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14916DELETE FROM t1 14917WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14918CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14919BEGIN 14920SET new.f_int1 = old.f_int1 + @max_row, 14921new.f_int2 = old.f_int2 - @max_row, 14922new.f_charbig = '####updated per update trigger####'; 14923END| 14924UPDATE t1 14925SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14926f_charbig = '####updated per update statement itself####'; 14927Warnings: 14928Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14929 14930# check trigger-9 success: 1 14931DROP TRIGGER trg_2; 14932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14933f_int2 = CAST(f_char1 AS SIGNED INT), 14934f_charbig = CONCAT('===',f_char1,'==='); 14935Warnings: 14936Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14937CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14938BEGIN 14939SET new.f_int1 = new.f_int1 + @max_row, 14940new.f_int2 = new.f_int2 - @max_row, 14941new.f_charbig = '####updated per update trigger####'; 14942END| 14943UPDATE t1 14944SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14945f_charbig = '####updated per update statement itself####'; 14946Warnings: 14947Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14948 14949# check trigger-10 success: 1 14950DROP TRIGGER trg_2; 14951UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14952f_int2 = CAST(f_char1 AS SIGNED INT), 14953f_charbig = CONCAT('===',f_char1,'==='); 14954Warnings: 14955Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14956CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14957BEGIN 14958SET new.f_int1 = @my_max1 + @counter, 14959new.f_int2 = @my_min2 - @counter, 14960new.f_charbig = '####updated per insert trigger####'; 14961SET @counter = @counter + 1; 14962END| 14963SET @counter = 1; 14964SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14965Warnings: 14966Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14967INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14968SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14969CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14970WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14971ORDER BY f_int1; 14972DROP TRIGGER trg_3; 14973 14974# check trigger-11 success: 1 14975Warnings: 14976Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14977DELETE FROM t1 14978WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14979AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14980AND f_charbig = '####updated per insert trigger####'; 14981CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14982BEGIN 14983SET new.f_int1 = @my_max1 + @counter, 14984new.f_int2 = @my_min2 - @counter, 14985new.f_charbig = '####updated per insert trigger####'; 14986SET @counter = @counter + 1; 14987END| 14988SET @counter = 1; 14989SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14990Warnings: 14991Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 14992INSERT INTO t1 (f_char1, f_char2, f_charbig) 14993SELECT CAST(f_int1 AS CHAR), 14994CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14996ORDER BY f_int1; 14997DROP TRIGGER trg_3; 14998 14999# check trigger-12 success: 1 15000Warnings: 15001Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15002DELETE FROM t1 15003WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15004AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15005AND f_charbig = '####updated per insert trigger####'; 15006ANALYZE TABLE t1; 15007Table Op Msg_type Msg_text 15008test.t1 analyze status OK 15009test.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. 15010CHECK TABLE t1 EXTENDED; 15011Table Op Msg_type Msg_text 15012test.t1 check status OK 15013test.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. 15014CHECKSUM TABLE t1 EXTENDED; 15015Table Checksum 15016test.t1 <some_value> 15017OPTIMIZE TABLE t1; 15018Table Op Msg_type Msg_text 15019test.t1 optimize status OK 15020test.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. 15021# check layout success: 1 15022REPAIR TABLE t1 EXTENDED; 15023Table Op Msg_type Msg_text 15024test.t1 repair status OK 15025test.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. 15026# check layout success: 1 15027TRUNCATE t1; 15028Warnings: 15029Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15030 15031# check TRUNCATE success: 1 15032# check layout success: 1 15033# End usability test (inc/partition_check.inc) 15034DROP TABLE t1; 15035CREATE TABLE t1 ( 15036f_int1 INTEGER, 15037f_int2 INTEGER, 15038f_char1 CHAR(20), 15039f_char2 CHAR(20), 15040f_charbig VARCHAR(1000) 15041, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 15042) 15043PARTITION BY RANGE((f_int1 + f_int2) DIV 2) 15044(PARTITION parta VALUES LESS THAN (0) 15045DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15046INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15047PARTITION partb VALUES LESS THAN (5) 15048DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15049INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15050PARTITION partc VALUES LESS THAN (10) 15051DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15052INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15053PARTITION partd VALUES LESS THAN (10 + 5) 15054DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15055INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15056PARTITION parte VALUES LESS THAN (20) 15057DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15058INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15059PARTITION partf VALUES LESS THAN (2147483646) 15060DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15061INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 15062Warnings: 15063Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15064INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15065SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 15066Warnings: 15067Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15068# Start usability test (inc/partition_check.inc) 15069create_command 15070SHOW CREATE TABLE t1; 15071Table Create Table 15072t1 CREATE TABLE `t1` ( 15073 `f_int1` int(11) DEFAULT NULL, 15074 `f_int2` int(11) DEFAULT NULL, 15075 `f_char1` char(20) DEFAULT NULL, 15076 `f_char2` char(20) DEFAULT NULL, 15077 `f_charbig` varchar(1000) DEFAULT NULL, 15078 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 15079 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 15080) ENGINE=MyISAM DEFAULT CHARSET=latin1 15081/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) 15082(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15083 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15084 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15085 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15086 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15087 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 15088 15089unified filelist 15090t1#P#parta.MYD 15091t1#P#parta.MYI 15092t1#P#partb.MYD 15093t1#P#partb.MYI 15094t1#P#partc.MYD 15095t1#P#partc.MYI 15096t1#P#partd.MYD 15097t1#P#partd.MYI 15098t1#P#parte.MYD 15099t1#P#parte.MYI 15100t1#P#partf.MYD 15101t1#P#partf.MYI 15102t1.frm 15103t1.par 15104t1#P#parta.MYD 15105t1#P#partb.MYD 15106t1#P#partc.MYD 15107t1#P#partd.MYD 15108t1#P#parte.MYD 15109t1#P#partf.MYD 15110t1#P#parta.MYI 15111t1#P#partb.MYI 15112t1#P#partc.MYI 15113t1#P#partd.MYI 15114t1#P#parte.MYI 15115t1#P#partf.MYI 15116 15117# check prerequisites-1 success: 1 15118# check COUNT(*) success: 1 15119# check MIN/MAX(f_int1) success: 1 15120# check MIN/MAX(f_int2) success: 1 15121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15123CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15124WHERE f_int1 IN (2,3); 15125ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 15126# check prerequisites-3 success: 1 15127# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15129SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15130CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15131WHERE f_int1 IN (2,3); 15132DELETE FROM t1 WHERE f_charbig = 'delete me'; 15133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15134SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15135CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15136WHERE f_int1 IN (2,3); 15137DELETE FROM t1 WHERE f_charbig = 'delete me'; 15138# check read via f_int1 success: 1 15139# check read via f_int2 success: 1 15140 15141# check multiple-1 success: 1 15142DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15143 15144# check multiple-2 success: 1 15145INSERT INTO t1 SELECT * FROM t0_template 15146WHERE MOD(f_int1,3) = 0; 15147 15148# check multiple-3 success: 1 15149UPDATE t1 SET f_int1 = f_int1 + @max_row 15150WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15151AND @max_row_div2 + @max_row_div4; 15152 15153# check multiple-4 success: 1 15154DELETE FROM t1 15155WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15156AND @max_row_div2 + @max_row_div4 + @max_row; 15157 15158# check multiple-5 success: 1 15159SELECT COUNT(*) INTO @try_count FROM t0_template 15160WHERE MOD(f_int1,3) = 0 15161AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15162SELECT COUNT(*) INTO @clash_count 15163FROM t1 INNER JOIN t0_template USING(f_int1) 15164WHERE MOD(f_int1,3) = 0 15165AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15166SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15167INSERT INTO t1 15168SET f_int1 = @cur_value , f_int2 = @cur_value, 15169f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15170f_charbig = '#SINGLE#'; 15171 15172# check single-1 success: 1 15173SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15174INSERT INTO t1 15175SET f_int1 = @cur_value , f_int2 = @cur_value, 15176f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15177f_charbig = '#SINGLE#'; 15178 15179# check single-2 success: 1 15180SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15181SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15182UPDATE t1 SET f_int1 = @cur_value2 15183WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15184 15185# check single-3 success: 1 15186SET @cur_value1= -1; 15187SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15188UPDATE t1 SET f_int1 = @cur_value1 15189WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15190 15191# check single-4 success: 1 15192SELECT MAX(f_int1) INTO @cur_value FROM t1; 15193DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15194 15195# check single-5 success: 1 15196DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15197 15198# check single-6 success: 1 15199INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15200ERROR HY000: Table has no partition for value 2147483647 15201DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15202INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15203f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15204f_charbig = '#NULL#'; 15205INSERT INTO t1 15206SET f_int1 = NULL , f_int2 = -@max_row, 15207f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15208f_charbig = '#NULL#'; 15209# check null success: 1 15210 15211# check null-1 success: 1 15212UPDATE t1 SET f_int1 = -@max_row 15213WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15214AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15215 15216# check null-2 success: 1 15217UPDATE t1 SET f_int1 = NULL 15218WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15219AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15220 15221# check null-3 success: 1 15222DELETE FROM t1 15223WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15224AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15225 15226# check null-4 success: 1 15227DELETE FROM t1 15228WHERE f_int1 = 0 AND f_int2 = 0 15229AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15230AND f_charbig = '#NULL#'; 15231INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15232SELECT f_int1, f_int1, '', '', 'was inserted' 15233 FROM t0_template source_tab 15234WHERE MOD(f_int1,3) = 0 15235AND f_int1 BETWEEN @max_row_div2 AND @max_row 15236ON DUPLICATE KEY 15237UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 15238f_int2 = 2 * @max_row + source_tab.f_int1, 15239f_charbig = 'was updated'; 15240 15241# check unique-1-a success: 1 15242 15243# check unique-1-b success: 1 15244DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15245UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15246f_int2 = CAST(f_char1 AS SIGNED INT), 15247f_charbig = CONCAT('===',f_char1,'===') 15248WHERE f_charbig = 'was updated'; 15249REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15250SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 15251 FROM t0_template source_tab 15252WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15253 15254# check replace success: 1 15255DELETE FROM t1 15256WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15257DELETE FROM t1 15258WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15259f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15260UPDATE t1 SET f_int2 = f_int1, 15261f_char1 = CAST(f_int1 AS CHAR), 15262f_char2 = CAST(f_int1 AS CHAR), 15263f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15264WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15265SET AUTOCOMMIT= 0; 15266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15267SELECT f_int1, f_int1, '', '', 'was inserted' 15268FROM t0_template source_tab 15269WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15270 15271# check transactions-1 success: 1 15272COMMIT WORK; 15273 15274# check transactions-2 success: 1 15275ROLLBACK WORK; 15276 15277# check transactions-3 success: 1 15278DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15279COMMIT WORK; 15280ROLLBACK WORK; 15281 15282# check transactions-4 success: 1 15283INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15284SELECT f_int1, f_int1, '', '', 'was inserted' 15285FROM t0_template source_tab 15286WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15287 15288# check transactions-5 success: 1 15289ROLLBACK WORK; 15290Warnings: 15291Warning 1196 Some non-transactional changed tables couldn't be rolled back 15292 15293# check transactions-6 success: 1 15294# INFO: Storage engine used for t1 seems to be not transactional. 15295COMMIT; 15296 15297# check transactions-7 success: 1 15298DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15299COMMIT WORK; 15300SET @@session.sql_mode = 'traditional'; 15301Warnings: 15302Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15303SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15305SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15306'', '', 'was inserted' FROM t0_template 15307WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15308ERROR 22012: Division by 0 15309COMMIT; 15310 15311# check transactions-8 success: 1 15312# INFO: Storage engine used for t1 seems to be unable to revert 15313# changes made by the failing statement. 15314SET @@session.sql_mode = ''; 15315Warnings: 15316Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15317SET AUTOCOMMIT= 1; 15318DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15319COMMIT WORK; 15320UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15321 15322# check special-1 success: 1 15323UPDATE t1 SET f_charbig = ''; 15324 15325# check special-2 success: 1 15326UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15327INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15328SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15329WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15330INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15331SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15332'just inserted' FROM t0_template 15333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15334CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15335BEGIN 15336UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15337f_charbig = 'updated by trigger' 15338 WHERE f_int1 = new.f_int1; 15339END| 15340INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15341SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15342WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15343 15344# check trigger-1 success: 1 15345DROP TRIGGER trg_1; 15346UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15347f_int2 = CAST(f_char1 AS SIGNED INT), 15348f_charbig = 'just inserted' 15349 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15350DELETE FROM t0_aux 15351WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15352INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15353SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15354'just inserted' FROM t0_template 15355WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15356CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15357BEGIN 15358UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15359f_charbig = 'updated by trigger' 15360 WHERE f_int1 = new.f_int1; 15361END| 15362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15363SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15365 15366# check trigger-2 success: 1 15367DROP TRIGGER trg_1; 15368UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15369f_int2 = CAST(f_char1 AS SIGNED INT), 15370f_charbig = 'just inserted' 15371 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15372DELETE FROM t0_aux 15373WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15374INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15375SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15376'just inserted' FROM t0_template 15377WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15378CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15379BEGIN 15380UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15381f_charbig = 'updated by trigger' 15382 WHERE f_int1 = new.f_int1; 15383END| 15384UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15385WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15386 15387# check trigger-3 success: 1 15388DROP TRIGGER trg_1; 15389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15390f_int2 = CAST(f_char1 AS SIGNED INT), 15391f_charbig = 'just inserted' 15392 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15393DELETE FROM t0_aux 15394WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15395INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15396SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15397'just inserted' FROM t0_template 15398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15399CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15400BEGIN 15401UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15402f_charbig = 'updated by trigger' 15403 WHERE f_int1 = - old.f_int1; 15404END| 15405UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15406WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15407 15408# check trigger-4 success: 1 15409DROP TRIGGER trg_1; 15410UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15411f_int2 = CAST(f_char1 AS SIGNED INT), 15412f_charbig = 'just inserted' 15413 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15414DELETE FROM t0_aux 15415WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15416INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15417SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15418'just inserted' FROM t0_template 15419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15420CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15421BEGIN 15422UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15423f_charbig = 'updated by trigger' 15424 WHERE f_int1 = new.f_int1; 15425END| 15426UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15427WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15428 15429# check trigger-5 success: 1 15430DROP TRIGGER trg_1; 15431UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15432f_int2 = CAST(f_char1 AS SIGNED INT), 15433f_charbig = 'just inserted' 15434 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15435DELETE FROM t0_aux 15436WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15437INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15438SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15439'just inserted' FROM t0_template 15440WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15441CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15442BEGIN 15443UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15444f_charbig = 'updated by trigger' 15445 WHERE f_int1 = - old.f_int1; 15446END| 15447UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15448WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15449 15450# check trigger-6 success: 1 15451DROP TRIGGER trg_1; 15452UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15453f_int2 = CAST(f_char1 AS SIGNED INT), 15454f_charbig = 'just inserted' 15455 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15456DELETE FROM t0_aux 15457WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15458INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15459SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15460'just inserted' FROM t0_template 15461WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15462CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15463BEGIN 15464UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15465f_charbig = 'updated by trigger' 15466 WHERE f_int1 = - old.f_int1; 15467END| 15468DELETE FROM t0_aux 15469WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15470 15471# check trigger-7 success: 1 15472DROP TRIGGER trg_1; 15473UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15474f_int2 = CAST(f_char1 AS SIGNED INT), 15475f_charbig = 'just inserted' 15476 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15477DELETE FROM t0_aux 15478WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15479INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15480SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15481'just inserted' FROM t0_template 15482WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15483CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15484BEGIN 15485UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15486f_charbig = 'updated by trigger' 15487 WHERE f_int1 = - old.f_int1; 15488END| 15489DELETE FROM t0_aux 15490WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15491 15492# check trigger-8 success: 1 15493DROP TRIGGER trg_1; 15494UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15495f_int2 = CAST(f_char1 AS SIGNED INT), 15496f_charbig = 'just inserted' 15497 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15498DELETE FROM t0_aux 15499WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15500DELETE FROM t1 15501WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15502CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15503BEGIN 15504SET new.f_int1 = old.f_int1 + @max_row, 15505new.f_int2 = old.f_int2 - @max_row, 15506new.f_charbig = '####updated per update trigger####'; 15507END| 15508UPDATE t1 15509SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15510f_charbig = '####updated per update statement itself####'; 15511Warnings: 15512Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15513 15514# check trigger-9 success: 1 15515DROP TRIGGER trg_2; 15516UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15517f_int2 = CAST(f_char1 AS SIGNED INT), 15518f_charbig = CONCAT('===',f_char1,'==='); 15519Warnings: 15520Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15521CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15522BEGIN 15523SET new.f_int1 = new.f_int1 + @max_row, 15524new.f_int2 = new.f_int2 - @max_row, 15525new.f_charbig = '####updated per update trigger####'; 15526END| 15527UPDATE t1 15528SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15529f_charbig = '####updated per update statement itself####'; 15530Warnings: 15531Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15532 15533# check trigger-10 success: 1 15534DROP TRIGGER trg_2; 15535UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15536f_int2 = CAST(f_char1 AS SIGNED INT), 15537f_charbig = CONCAT('===',f_char1,'==='); 15538Warnings: 15539Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15540CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15541BEGIN 15542SET new.f_int1 = @my_max1 + @counter, 15543new.f_int2 = @my_min2 - @counter, 15544new.f_charbig = '####updated per insert trigger####'; 15545SET @counter = @counter + 1; 15546END| 15547SET @counter = 1; 15548SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15549Warnings: 15550Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15551INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15552SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15553CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15554WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15555ORDER BY f_int1; 15556DROP TRIGGER trg_3; 15557 15558# check trigger-11 success: 1 15559Warnings: 15560Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15561DELETE FROM t1 15562WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15563AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15564AND f_charbig = '####updated per insert trigger####'; 15565CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15566BEGIN 15567SET new.f_int1 = @my_max1 + @counter, 15568new.f_int2 = @my_min2 - @counter, 15569new.f_charbig = '####updated per insert trigger####'; 15570SET @counter = @counter + 1; 15571END| 15572SET @counter = 1; 15573SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15574Warnings: 15575Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15576INSERT INTO t1 (f_char1, f_char2, f_charbig) 15577SELECT CAST(f_int1 AS CHAR), 15578CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15580ORDER BY f_int1; 15581DROP TRIGGER trg_3; 15582 15583# check trigger-12 success: 1 15584Warnings: 15585Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15586DELETE FROM t1 15587WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15588AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15589AND f_charbig = '####updated per insert trigger####'; 15590ANALYZE TABLE t1; 15591Table Op Msg_type Msg_text 15592test.t1 analyze status OK 15593test.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. 15594CHECK TABLE t1 EXTENDED; 15595Table Op Msg_type Msg_text 15596test.t1 check status OK 15597test.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. 15598CHECKSUM TABLE t1 EXTENDED; 15599Table Checksum 15600test.t1 <some_value> 15601OPTIMIZE TABLE t1; 15602Table Op Msg_type Msg_text 15603test.t1 optimize status OK 15604test.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. 15605# check layout success: 1 15606REPAIR TABLE t1 EXTENDED; 15607Table Op Msg_type Msg_text 15608test.t1 repair status OK 15609test.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. 15610# check layout success: 1 15611TRUNCATE t1; 15612Warnings: 15613Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15614 15615# check TRUNCATE success: 1 15616# check layout success: 1 15617# End usability test (inc/partition_check.inc) 15618DROP TABLE t1; 15619CREATE TABLE t1 ( 15620f_int1 INTEGER, 15621f_int2 INTEGER, 15622f_char1 CHAR(20), 15623f_char2 CHAR(20), 15624f_charbig VARCHAR(1000) 15625, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 15626) 15627PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2 15628(PARTITION parta VALUES LESS THAN (0) 15629DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15630INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15631PARTITION partb VALUES LESS THAN (5) 15632DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15633INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15634PARTITION partc VALUES LESS THAN (10) 15635DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15636INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 15637PARTITION partd VALUES LESS THAN (2147483646) 15638DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 15639INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 15640Warnings: 15641Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15642INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15643SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 15644Warnings: 15645Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 15646# Start usability test (inc/partition_check.inc) 15647create_command 15648SHOW CREATE TABLE t1; 15649Table Create Table 15650t1 CREATE TABLE `t1` ( 15651 `f_int1` int(11) DEFAULT NULL, 15652 `f_int2` int(11) DEFAULT NULL, 15653 `f_char1` char(20) DEFAULT NULL, 15654 `f_char2` char(20) DEFAULT NULL, 15655 `f_charbig` varchar(1000) DEFAULT NULL, 15656 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 15657 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 15658) ENGINE=MyISAM DEFAULT CHARSET=latin1 15659/*!50100 PARTITION BY RANGE (f_int1) 15660SUBPARTITION BY HASH (f_int2) 15661SUBPARTITIONS 2 15662(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15663 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15664 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 15665 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 15666 15667unified filelist 15668t1#P#parta#SP#partasp0.MYD 15669t1#P#parta#SP#partasp0.MYI 15670t1#P#parta#SP#partasp1.MYD 15671t1#P#parta#SP#partasp1.MYI 15672t1#P#partb#SP#partbsp0.MYD 15673t1#P#partb#SP#partbsp0.MYI 15674t1#P#partb#SP#partbsp1.MYD 15675t1#P#partb#SP#partbsp1.MYI 15676t1#P#partc#SP#partcsp0.MYD 15677t1#P#partc#SP#partcsp0.MYI 15678t1#P#partc#SP#partcsp1.MYD 15679t1#P#partc#SP#partcsp1.MYI 15680t1#P#partd#SP#partdsp0.MYD 15681t1#P#partd#SP#partdsp0.MYI 15682t1#P#partd#SP#partdsp1.MYD 15683t1#P#partd#SP#partdsp1.MYI 15684t1.frm 15685t1.par 15686t1#P#parta#SP#partasp0.MYD 15687t1#P#parta#SP#partasp1.MYD 15688t1#P#partb#SP#partbsp0.MYD 15689t1#P#partb#SP#partbsp1.MYD 15690t1#P#partc#SP#partcsp0.MYD 15691t1#P#partc#SP#partcsp1.MYD 15692t1#P#partd#SP#partdsp0.MYD 15693t1#P#partd#SP#partdsp1.MYD 15694t1#P#parta#SP#partasp0.MYI 15695t1#P#parta#SP#partasp1.MYI 15696t1#P#partb#SP#partbsp0.MYI 15697t1#P#partb#SP#partbsp1.MYI 15698t1#P#partc#SP#partcsp0.MYI 15699t1#P#partc#SP#partcsp1.MYI 15700t1#P#partd#SP#partdsp0.MYI 15701t1#P#partd#SP#partdsp1.MYI 15702 15703# check prerequisites-1 success: 1 15704# check COUNT(*) success: 1 15705# check MIN/MAX(f_int1) success: 1 15706# check MIN/MAX(f_int2) success: 1 15707INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15708SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15709CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15710WHERE f_int1 IN (2,3); 15711ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 15712# check prerequisites-3 success: 1 15713# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15714INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15715SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15716CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15717WHERE f_int1 IN (2,3); 15718DELETE FROM t1 WHERE f_charbig = 'delete me'; 15719INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15720SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15721CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15722WHERE f_int1 IN (2,3); 15723DELETE FROM t1 WHERE f_charbig = 'delete me'; 15724# check read via f_int1 success: 1 15725# check read via f_int2 success: 1 15726 15727# check multiple-1 success: 1 15728DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15729 15730# check multiple-2 success: 1 15731INSERT INTO t1 SELECT * FROM t0_template 15732WHERE MOD(f_int1,3) = 0; 15733 15734# check multiple-3 success: 1 15735UPDATE t1 SET f_int1 = f_int1 + @max_row 15736WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15737AND @max_row_div2 + @max_row_div4; 15738 15739# check multiple-4 success: 1 15740DELETE FROM t1 15741WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15742AND @max_row_div2 + @max_row_div4 + @max_row; 15743 15744# check multiple-5 success: 1 15745SELECT COUNT(*) INTO @try_count FROM t0_template 15746WHERE MOD(f_int1,3) = 0 15747AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15748SELECT COUNT(*) INTO @clash_count 15749FROM t1 INNER JOIN t0_template USING(f_int1) 15750WHERE MOD(f_int1,3) = 0 15751AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15752SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15753INSERT INTO t1 15754SET f_int1 = @cur_value , f_int2 = @cur_value, 15755f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15756f_charbig = '#SINGLE#'; 15757 15758# check single-1 success: 1 15759SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15760INSERT INTO t1 15761SET f_int1 = @cur_value , f_int2 = @cur_value, 15762f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15763f_charbig = '#SINGLE#'; 15764 15765# check single-2 success: 1 15766SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15767SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15768UPDATE t1 SET f_int1 = @cur_value2 15769WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15770 15771# check single-3 success: 1 15772SET @cur_value1= -1; 15773SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15774UPDATE t1 SET f_int1 = @cur_value1 15775WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15776 15777# check single-4 success: 1 15778SELECT MAX(f_int1) INTO @cur_value FROM t1; 15779DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15780 15781# check single-5 success: 1 15782DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15783 15784# check single-6 success: 1 15785INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15786ERROR HY000: Table has no partition for value 2147483647 15787DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15788INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15789f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15790f_charbig = '#NULL#'; 15791INSERT INTO t1 15792SET f_int1 = NULL , f_int2 = -@max_row, 15793f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15794f_charbig = '#NULL#'; 15795# check null success: 1 15796 15797# check null-1 success: 1 15798UPDATE t1 SET f_int1 = -@max_row 15799WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15800AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15801 15802# check null-2 success: 1 15803UPDATE t1 SET f_int1 = NULL 15804WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15805AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15806 15807# check null-3 success: 1 15808DELETE FROM t1 15809WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15810AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15811 15812# check null-4 success: 1 15813DELETE FROM t1 15814WHERE f_int1 = 0 AND f_int2 = 0 15815AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15816AND f_charbig = '#NULL#'; 15817INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15818SELECT f_int1, f_int1, '', '', 'was inserted' 15819 FROM t0_template source_tab 15820WHERE MOD(f_int1,3) = 0 15821AND f_int1 BETWEEN @max_row_div2 AND @max_row 15822ON DUPLICATE KEY 15823UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 15824f_int2 = 2 * @max_row + source_tab.f_int1, 15825f_charbig = 'was updated'; 15826 15827# check unique-1-a success: 1 15828 15829# check unique-1-b success: 1 15830DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15831UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15832f_int2 = CAST(f_char1 AS SIGNED INT), 15833f_charbig = CONCAT('===',f_char1,'===') 15834WHERE f_charbig = 'was updated'; 15835REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15836SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 15837 FROM t0_template source_tab 15838WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15839 15840# check replace success: 1 15841DELETE FROM t1 15842WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15843DELETE FROM t1 15844WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15845f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15846UPDATE t1 SET f_int2 = f_int1, 15847f_char1 = CAST(f_int1 AS CHAR), 15848f_char2 = CAST(f_int1 AS CHAR), 15849f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15850WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15851SET AUTOCOMMIT= 0; 15852INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15853SELECT f_int1, f_int1, '', '', 'was inserted' 15854FROM t0_template source_tab 15855WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15856 15857# check transactions-1 success: 1 15858COMMIT WORK; 15859 15860# check transactions-2 success: 1 15861ROLLBACK WORK; 15862 15863# check transactions-3 success: 1 15864DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15865COMMIT WORK; 15866ROLLBACK WORK; 15867 15868# check transactions-4 success: 1 15869INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15870SELECT f_int1, f_int1, '', '', 'was inserted' 15871FROM t0_template source_tab 15872WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15873 15874# check transactions-5 success: 1 15875ROLLBACK WORK; 15876Warnings: 15877Warning 1196 Some non-transactional changed tables couldn't be rolled back 15878 15879# check transactions-6 success: 1 15880# INFO: Storage engine used for t1 seems to be not transactional. 15881COMMIT; 15882 15883# check transactions-7 success: 1 15884DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15885COMMIT WORK; 15886SET @@session.sql_mode = 'traditional'; 15887Warnings: 15888Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15889SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15890INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15891SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15892'', '', 'was inserted' FROM t0_template 15893WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15894ERROR 22012: Division by 0 15895COMMIT; 15896 15897# check transactions-8 success: 1 15898# INFO: Storage engine used for t1 seems to be unable to revert 15899# changes made by the failing statement. 15900SET @@session.sql_mode = ''; 15901Warnings: 15902Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15903SET AUTOCOMMIT= 1; 15904DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15905COMMIT WORK; 15906UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15907 15908# check special-1 success: 1 15909UPDATE t1 SET f_charbig = ''; 15910 15911# check special-2 success: 1 15912UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15913INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15914SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15915WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15916INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15917SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15918'just inserted' FROM t0_template 15919WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15920CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15921BEGIN 15922UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15923f_charbig = 'updated by trigger' 15924 WHERE f_int1 = new.f_int1; 15925END| 15926INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15927SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15929 15930# check trigger-1 success: 1 15931DROP TRIGGER trg_1; 15932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15933f_int2 = CAST(f_char1 AS SIGNED INT), 15934f_charbig = 'just inserted' 15935 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15936DELETE FROM t0_aux 15937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15940'just inserted' FROM t0_template 15941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15942CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15943BEGIN 15944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15945f_charbig = 'updated by trigger' 15946 WHERE f_int1 = new.f_int1; 15947END| 15948INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15949SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15950WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15951 15952# check trigger-2 success: 1 15953DROP TRIGGER trg_1; 15954UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15955f_int2 = CAST(f_char1 AS SIGNED INT), 15956f_charbig = 'just inserted' 15957 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15958DELETE FROM t0_aux 15959WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15960INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15961SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15962'just inserted' FROM t0_template 15963WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15964CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15965BEGIN 15966UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15967f_charbig = 'updated by trigger' 15968 WHERE f_int1 = new.f_int1; 15969END| 15970UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15971WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15972 15973# check trigger-3 success: 1 15974DROP TRIGGER trg_1; 15975UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15976f_int2 = CAST(f_char1 AS SIGNED INT), 15977f_charbig = 'just inserted' 15978 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15979DELETE FROM t0_aux 15980WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15981INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15982SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15983'just inserted' FROM t0_template 15984WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15985CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15986BEGIN 15987UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15988f_charbig = 'updated by trigger' 15989 WHERE f_int1 = - old.f_int1; 15990END| 15991UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15992WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15993 15994# check trigger-4 success: 1 15995DROP TRIGGER trg_1; 15996UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15997f_int2 = CAST(f_char1 AS SIGNED INT), 15998f_charbig = 'just inserted' 15999 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16000DELETE FROM t0_aux 16001WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16002INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16003SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16004'just inserted' FROM t0_template 16005WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16006CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16007BEGIN 16008UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16009f_charbig = 'updated by trigger' 16010 WHERE f_int1 = new.f_int1; 16011END| 16012UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16013WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16014 16015# check trigger-5 success: 1 16016DROP TRIGGER trg_1; 16017UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16018f_int2 = CAST(f_char1 AS SIGNED INT), 16019f_charbig = 'just inserted' 16020 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16021DELETE FROM t0_aux 16022WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16023INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16024SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16025'just inserted' FROM t0_template 16026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16027CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16028BEGIN 16029UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16030f_charbig = 'updated by trigger' 16031 WHERE f_int1 = - old.f_int1; 16032END| 16033UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16034WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16035 16036# check trigger-6 success: 1 16037DROP TRIGGER trg_1; 16038UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16039f_int2 = CAST(f_char1 AS SIGNED INT), 16040f_charbig = 'just inserted' 16041 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16042DELETE FROM t0_aux 16043WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16044INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16045SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16046'just inserted' FROM t0_template 16047WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16048CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16049BEGIN 16050UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16051f_charbig = 'updated by trigger' 16052 WHERE f_int1 = - old.f_int1; 16053END| 16054DELETE FROM t0_aux 16055WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16056 16057# check trigger-7 success: 1 16058DROP TRIGGER trg_1; 16059UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16060f_int2 = CAST(f_char1 AS SIGNED INT), 16061f_charbig = 'just inserted' 16062 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16063DELETE FROM t0_aux 16064WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16065INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16066SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16067'just inserted' FROM t0_template 16068WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16069CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16070BEGIN 16071UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16072f_charbig = 'updated by trigger' 16073 WHERE f_int1 = - old.f_int1; 16074END| 16075DELETE FROM t0_aux 16076WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16077 16078# check trigger-8 success: 1 16079DROP TRIGGER trg_1; 16080UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16081f_int2 = CAST(f_char1 AS SIGNED INT), 16082f_charbig = 'just inserted' 16083 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16084DELETE FROM t0_aux 16085WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16086DELETE FROM t1 16087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16088CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16089BEGIN 16090SET new.f_int1 = old.f_int1 + @max_row, 16091new.f_int2 = old.f_int2 - @max_row, 16092new.f_charbig = '####updated per update trigger####'; 16093END| 16094UPDATE t1 16095SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16096f_charbig = '####updated per update statement itself####'; 16097Warnings: 16098Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16099 16100# check trigger-9 success: 1 16101DROP TRIGGER trg_2; 16102UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16103f_int2 = CAST(f_char1 AS SIGNED INT), 16104f_charbig = CONCAT('===',f_char1,'==='); 16105Warnings: 16106Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16107CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16108BEGIN 16109SET new.f_int1 = new.f_int1 + @max_row, 16110new.f_int2 = new.f_int2 - @max_row, 16111new.f_charbig = '####updated per update trigger####'; 16112END| 16113UPDATE t1 16114SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16115f_charbig = '####updated per update statement itself####'; 16116Warnings: 16117Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16118 16119# check trigger-10 success: 1 16120DROP TRIGGER trg_2; 16121UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16122f_int2 = CAST(f_char1 AS SIGNED INT), 16123f_charbig = CONCAT('===',f_char1,'==='); 16124Warnings: 16125Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16126CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16127BEGIN 16128SET new.f_int1 = @my_max1 + @counter, 16129new.f_int2 = @my_min2 - @counter, 16130new.f_charbig = '####updated per insert trigger####'; 16131SET @counter = @counter + 1; 16132END| 16133SET @counter = 1; 16134SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16135Warnings: 16136Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16138SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16139CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16140WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16141ORDER BY f_int1; 16142DROP TRIGGER trg_3; 16143 16144# check trigger-11 success: 1 16145Warnings: 16146Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16147DELETE FROM t1 16148WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16149AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16150AND f_charbig = '####updated per insert trigger####'; 16151CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16152BEGIN 16153SET new.f_int1 = @my_max1 + @counter, 16154new.f_int2 = @my_min2 - @counter, 16155new.f_charbig = '####updated per insert trigger####'; 16156SET @counter = @counter + 1; 16157END| 16158SET @counter = 1; 16159SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16160Warnings: 16161Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16162INSERT INTO t1 (f_char1, f_char2, f_charbig) 16163SELECT CAST(f_int1 AS CHAR), 16164CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16166ORDER BY f_int1; 16167DROP TRIGGER trg_3; 16168 16169# check trigger-12 success: 1 16170Warnings: 16171Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16172DELETE FROM t1 16173WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16174AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16175AND f_charbig = '####updated per insert trigger####'; 16176ANALYZE TABLE t1; 16177Table Op Msg_type Msg_text 16178test.t1 analyze status OK 16179test.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. 16180CHECK TABLE t1 EXTENDED; 16181Table Op Msg_type Msg_text 16182test.t1 check status OK 16183test.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. 16184CHECKSUM TABLE t1 EXTENDED; 16185Table Checksum 16186test.t1 <some_value> 16187OPTIMIZE TABLE t1; 16188Table Op Msg_type Msg_text 16189test.t1 optimize status OK 16190test.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. 16191# check layout success: 1 16192REPAIR TABLE t1 EXTENDED; 16193Table Op Msg_type Msg_text 16194test.t1 repair status OK 16195test.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. 16196# check layout success: 1 16197TRUNCATE t1; 16198Warnings: 16199Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16200 16201# check TRUNCATE success: 1 16202# check layout success: 1 16203# End usability test (inc/partition_check.inc) 16204DROP TABLE t1; 16205CREATE TABLE t1 ( 16206f_int1 INTEGER, 16207f_int2 INTEGER, 16208f_char1 CHAR(20), 16209f_char2 CHAR(20), 16210f_charbig VARCHAR(1000) 16211, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 16212) 16213PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2) 16214(PARTITION part1 VALUES LESS THAN (0) 16215(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16216SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 16217PARTITION part2 VALUES LESS THAN (5) 16218(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16219SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 16220PARTITION part3 VALUES LESS THAN (10) 16221(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16222SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 16223PARTITION part4 VALUES LESS THAN (2147483646) 16224(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16225SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 16226Warnings: 16227Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16228INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16229SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 16230Warnings: 16231Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16232# Start usability test (inc/partition_check.inc) 16233create_command 16234SHOW CREATE TABLE t1; 16235Table Create Table 16236t1 CREATE TABLE `t1` ( 16237 `f_int1` int(11) DEFAULT NULL, 16238 `f_int2` int(11) DEFAULT NULL, 16239 `f_char1` char(20) DEFAULT NULL, 16240 `f_char2` char(20) DEFAULT NULL, 16241 `f_charbig` varchar(1000) DEFAULT NULL, 16242 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 16243 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 16244) ENGINE=MyISAM DEFAULT CHARSET=latin1 16245/*!50100 PARTITION BY RANGE (f_int1) 16246SUBPARTITION BY KEY (f_int2) 16247(PARTITION part1 VALUES LESS THAN (0) 16248 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16249 SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16250 PARTITION part2 VALUES LESS THAN (5) 16251 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16252 SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16253 PARTITION part3 VALUES LESS THAN (10) 16254 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16255 SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16256 PARTITION part4 VALUES LESS THAN (2147483646) 16257 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16258 SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 16259 16260unified filelist 16261t1#P#part1#SP#subpart11.MYD 16262t1#P#part1#SP#subpart11.MYI 16263t1#P#part1#SP#subpart12.MYD 16264t1#P#part1#SP#subpart12.MYI 16265t1#P#part2#SP#subpart21.MYD 16266t1#P#part2#SP#subpart21.MYI 16267t1#P#part2#SP#subpart22.MYD 16268t1#P#part2#SP#subpart22.MYI 16269t1#P#part3#SP#subpart31.MYD 16270t1#P#part3#SP#subpart31.MYI 16271t1#P#part3#SP#subpart32.MYD 16272t1#P#part3#SP#subpart32.MYI 16273t1#P#part4#SP#subpart41.MYD 16274t1#P#part4#SP#subpart41.MYI 16275t1#P#part4#SP#subpart42.MYD 16276t1#P#part4#SP#subpart42.MYI 16277t1.frm 16278t1.par 16279t1#P#part1#SP#subpart11.MYD 16280t1#P#part1#SP#subpart12.MYD 16281t1#P#part2#SP#subpart21.MYD 16282t1#P#part2#SP#subpart22.MYD 16283t1#P#part3#SP#subpart31.MYD 16284t1#P#part3#SP#subpart32.MYD 16285t1#P#part4#SP#subpart41.MYD 16286t1#P#part4#SP#subpart42.MYD 16287t1#P#part1#SP#subpart11.MYI 16288t1#P#part1#SP#subpart12.MYI 16289t1#P#part2#SP#subpart21.MYI 16290t1#P#part2#SP#subpart22.MYI 16291t1#P#part3#SP#subpart31.MYI 16292t1#P#part3#SP#subpart32.MYI 16293t1#P#part4#SP#subpart41.MYI 16294t1#P#part4#SP#subpart42.MYI 16295 16296# check prerequisites-1 success: 1 16297# check COUNT(*) success: 1 16298# check MIN/MAX(f_int1) success: 1 16299# check MIN/MAX(f_int2) success: 1 16300INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16301SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16302CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16303WHERE f_int1 IN (2,3); 16304ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16305# check prerequisites-3 success: 1 16306# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16308SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16309CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16310WHERE f_int1 IN (2,3); 16311DELETE FROM t1 WHERE f_charbig = 'delete me'; 16312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16313SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16314CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16315WHERE f_int1 IN (2,3); 16316DELETE FROM t1 WHERE f_charbig = 'delete me'; 16317# check read via f_int1 success: 1 16318# check read via f_int2 success: 1 16319 16320# check multiple-1 success: 1 16321DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16322 16323# check multiple-2 success: 1 16324INSERT INTO t1 SELECT * FROM t0_template 16325WHERE MOD(f_int1,3) = 0; 16326 16327# check multiple-3 success: 1 16328UPDATE t1 SET f_int1 = f_int1 + @max_row 16329WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16330AND @max_row_div2 + @max_row_div4; 16331 16332# check multiple-4 success: 1 16333DELETE FROM t1 16334WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16335AND @max_row_div2 + @max_row_div4 + @max_row; 16336 16337# check multiple-5 success: 1 16338SELECT COUNT(*) INTO @try_count FROM t0_template 16339WHERE MOD(f_int1,3) = 0 16340AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16341SELECT COUNT(*) INTO @clash_count 16342FROM t1 INNER JOIN t0_template USING(f_int1) 16343WHERE MOD(f_int1,3) = 0 16344AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16345SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16346INSERT INTO t1 16347SET f_int1 = @cur_value , f_int2 = @cur_value, 16348f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16349f_charbig = '#SINGLE#'; 16350 16351# check single-1 success: 1 16352SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16353INSERT INTO t1 16354SET f_int1 = @cur_value , f_int2 = @cur_value, 16355f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16356f_charbig = '#SINGLE#'; 16357 16358# check single-2 success: 1 16359SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16360SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16361UPDATE t1 SET f_int1 = @cur_value2 16362WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16363 16364# check single-3 success: 1 16365SET @cur_value1= -1; 16366SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16367UPDATE t1 SET f_int1 = @cur_value1 16368WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16369 16370# check single-4 success: 1 16371SELECT MAX(f_int1) INTO @cur_value FROM t1; 16372DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16373 16374# check single-5 success: 1 16375DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16376 16377# check single-6 success: 1 16378INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16379ERROR HY000: Table has no partition for value 2147483647 16380DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16381INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16382f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16383f_charbig = '#NULL#'; 16384INSERT INTO t1 16385SET f_int1 = NULL , f_int2 = -@max_row, 16386f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16387f_charbig = '#NULL#'; 16388# check null success: 1 16389 16390# check null-1 success: 1 16391UPDATE t1 SET f_int1 = -@max_row 16392WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16393AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16394 16395# check null-2 success: 1 16396UPDATE t1 SET f_int1 = NULL 16397WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16398AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16399 16400# check null-3 success: 1 16401DELETE FROM t1 16402WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16403AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16404 16405# check null-4 success: 1 16406DELETE FROM t1 16407WHERE f_int1 = 0 AND f_int2 = 0 16408AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16409AND f_charbig = '#NULL#'; 16410INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16411SELECT f_int1, f_int1, '', '', 'was inserted' 16412 FROM t0_template source_tab 16413WHERE MOD(f_int1,3) = 0 16414AND f_int1 BETWEEN @max_row_div2 AND @max_row 16415ON DUPLICATE KEY 16416UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 16417f_int2 = 2 * @max_row + source_tab.f_int1, 16418f_charbig = 'was updated'; 16419 16420# check unique-1-a success: 1 16421 16422# check unique-1-b success: 1 16423DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16424UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16425f_int2 = CAST(f_char1 AS SIGNED INT), 16426f_charbig = CONCAT('===',f_char1,'===') 16427WHERE f_charbig = 'was updated'; 16428REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16429SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 16430 FROM t0_template source_tab 16431WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16432 16433# check replace success: 1 16434DELETE FROM t1 16435WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 16436DELETE FROM t1 16437WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 16438f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 16439UPDATE t1 SET f_int2 = f_int1, 16440f_char1 = CAST(f_int1 AS CHAR), 16441f_char2 = CAST(f_int1 AS CHAR), 16442f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 16443WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 16444SET AUTOCOMMIT= 0; 16445INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16446SELECT f_int1, f_int1, '', '', 'was inserted' 16447FROM t0_template source_tab 16448WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16449 16450# check transactions-1 success: 1 16451COMMIT WORK; 16452 16453# check transactions-2 success: 1 16454ROLLBACK WORK; 16455 16456# check transactions-3 success: 1 16457DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16458COMMIT WORK; 16459ROLLBACK WORK; 16460 16461# check transactions-4 success: 1 16462INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16463SELECT f_int1, f_int1, '', '', 'was inserted' 16464FROM t0_template source_tab 16465WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16466 16467# check transactions-5 success: 1 16468ROLLBACK WORK; 16469Warnings: 16470Warning 1196 Some non-transactional changed tables couldn't be rolled back 16471 16472# check transactions-6 success: 1 16473# INFO: Storage engine used for t1 seems to be not transactional. 16474COMMIT; 16475 16476# check transactions-7 success: 1 16477DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16478COMMIT WORK; 16479SET @@session.sql_mode = 'traditional'; 16480Warnings: 16481Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16482SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16483INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16484SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16485'', '', 'was inserted' FROM t0_template 16486WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16487ERROR 22012: Division by 0 16488COMMIT; 16489 16490# check transactions-8 success: 1 16491# INFO: Storage engine used for t1 seems to be unable to revert 16492# changes made by the failing statement. 16493SET @@session.sql_mode = ''; 16494Warnings: 16495Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16496SET AUTOCOMMIT= 1; 16497DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16498COMMIT WORK; 16499UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16500 16501# check special-1 success: 1 16502UPDATE t1 SET f_charbig = ''; 16503 16504# check special-2 success: 1 16505UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16506INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16507SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16510SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16511'just inserted' FROM t0_template 16512WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16513CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16514BEGIN 16515UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16516f_charbig = 'updated by trigger' 16517 WHERE f_int1 = new.f_int1; 16518END| 16519INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16520SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16522 16523# check trigger-1 success: 1 16524DROP TRIGGER trg_1; 16525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16526f_int2 = CAST(f_char1 AS SIGNED INT), 16527f_charbig = 'just inserted' 16528 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16529DELETE FROM t0_aux 16530WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16532SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16533'just inserted' FROM t0_template 16534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16535CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16536BEGIN 16537UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16538f_charbig = 'updated by trigger' 16539 WHERE f_int1 = new.f_int1; 16540END| 16541INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16542SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16543WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16544 16545# check trigger-2 success: 1 16546DROP TRIGGER trg_1; 16547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16548f_int2 = CAST(f_char1 AS SIGNED INT), 16549f_charbig = 'just inserted' 16550 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16551DELETE FROM t0_aux 16552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16555'just inserted' FROM t0_template 16556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16557CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16558BEGIN 16559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16560f_charbig = 'updated by trigger' 16561 WHERE f_int1 = new.f_int1; 16562END| 16563UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16565 16566# check trigger-3 success: 1 16567DROP TRIGGER trg_1; 16568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16569f_int2 = CAST(f_char1 AS SIGNED INT), 16570f_charbig = 'just inserted' 16571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16572DELETE FROM t0_aux 16573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16576'just inserted' FROM t0_template 16577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16578CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16579BEGIN 16580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16581f_charbig = 'updated by trigger' 16582 WHERE f_int1 = - old.f_int1; 16583END| 16584UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16586 16587# check trigger-4 success: 1 16588DROP TRIGGER trg_1; 16589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16590f_int2 = CAST(f_char1 AS SIGNED INT), 16591f_charbig = 'just inserted' 16592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16593DELETE FROM t0_aux 16594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16595INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16596SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16597'just inserted' FROM t0_template 16598WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16599CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16600BEGIN 16601UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16602f_charbig = 'updated by trigger' 16603 WHERE f_int1 = new.f_int1; 16604END| 16605UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16606WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16607 16608# check trigger-5 success: 1 16609DROP TRIGGER trg_1; 16610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16611f_int2 = CAST(f_char1 AS SIGNED INT), 16612f_charbig = 'just inserted' 16613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16614DELETE FROM t0_aux 16615WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16616INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16617SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16618'just inserted' FROM t0_template 16619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16620CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16621BEGIN 16622UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16623f_charbig = 'updated by trigger' 16624 WHERE f_int1 = - old.f_int1; 16625END| 16626UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16627WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16628 16629# check trigger-6 success: 1 16630DROP TRIGGER trg_1; 16631UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16632f_int2 = CAST(f_char1 AS SIGNED INT), 16633f_charbig = 'just inserted' 16634 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16635DELETE FROM t0_aux 16636WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16637INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16638SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16639'just inserted' FROM t0_template 16640WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16641CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16642BEGIN 16643UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16644f_charbig = 'updated by trigger' 16645 WHERE f_int1 = - old.f_int1; 16646END| 16647DELETE FROM t0_aux 16648WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16649 16650# check trigger-7 success: 1 16651DROP TRIGGER trg_1; 16652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16653f_int2 = CAST(f_char1 AS SIGNED INT), 16654f_charbig = 'just inserted' 16655 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16656DELETE FROM t0_aux 16657WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16658INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16659SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16660'just inserted' FROM t0_template 16661WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16662CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16663BEGIN 16664UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16665f_charbig = 'updated by trigger' 16666 WHERE f_int1 = - old.f_int1; 16667END| 16668DELETE FROM t0_aux 16669WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16670 16671# check trigger-8 success: 1 16672DROP TRIGGER trg_1; 16673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16674f_int2 = CAST(f_char1 AS SIGNED INT), 16675f_charbig = 'just inserted' 16676 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16677DELETE FROM t0_aux 16678WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16679DELETE FROM t1 16680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16681CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16682BEGIN 16683SET new.f_int1 = old.f_int1 + @max_row, 16684new.f_int2 = old.f_int2 - @max_row, 16685new.f_charbig = '####updated per update trigger####'; 16686END| 16687UPDATE t1 16688SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16689f_charbig = '####updated per update statement itself####'; 16690Warnings: 16691Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16692 16693# check trigger-9 success: 1 16694DROP TRIGGER trg_2; 16695UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16696f_int2 = CAST(f_char1 AS SIGNED INT), 16697f_charbig = CONCAT('===',f_char1,'==='); 16698Warnings: 16699Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16700CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16701BEGIN 16702SET new.f_int1 = new.f_int1 + @max_row, 16703new.f_int2 = new.f_int2 - @max_row, 16704new.f_charbig = '####updated per update trigger####'; 16705END| 16706UPDATE t1 16707SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16708f_charbig = '####updated per update statement itself####'; 16709Warnings: 16710Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16711 16712# check trigger-10 success: 1 16713DROP TRIGGER trg_2; 16714UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16715f_int2 = CAST(f_char1 AS SIGNED INT), 16716f_charbig = CONCAT('===',f_char1,'==='); 16717Warnings: 16718Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16719CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16720BEGIN 16721SET new.f_int1 = @my_max1 + @counter, 16722new.f_int2 = @my_min2 - @counter, 16723new.f_charbig = '####updated per insert trigger####'; 16724SET @counter = @counter + 1; 16725END| 16726SET @counter = 1; 16727SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16728Warnings: 16729Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16730INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16731SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16732CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16733WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16734ORDER BY f_int1; 16735DROP TRIGGER trg_3; 16736 16737# check trigger-11 success: 1 16738Warnings: 16739Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16740DELETE FROM t1 16741WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16742AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16743AND f_charbig = '####updated per insert trigger####'; 16744CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16745BEGIN 16746SET new.f_int1 = @my_max1 + @counter, 16747new.f_int2 = @my_min2 - @counter, 16748new.f_charbig = '####updated per insert trigger####'; 16749SET @counter = @counter + 1; 16750END| 16751SET @counter = 1; 16752SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16753Warnings: 16754Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16755INSERT INTO t1 (f_char1, f_char2, f_charbig) 16756SELECT CAST(f_int1 AS CHAR), 16757CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16759ORDER BY f_int1; 16760DROP TRIGGER trg_3; 16761 16762# check trigger-12 success: 1 16763Warnings: 16764Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16765DELETE FROM t1 16766WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16767AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16768AND f_charbig = '####updated per insert trigger####'; 16769ANALYZE TABLE t1; 16770Table Op Msg_type Msg_text 16771test.t1 analyze status OK 16772test.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. 16773CHECK TABLE t1 EXTENDED; 16774Table Op Msg_type Msg_text 16775test.t1 check status OK 16776test.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. 16777CHECKSUM TABLE t1 EXTENDED; 16778Table Checksum 16779test.t1 <some_value> 16780OPTIMIZE TABLE t1; 16781Table Op Msg_type Msg_text 16782test.t1 optimize status OK 16783test.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. 16784# check layout success: 1 16785REPAIR TABLE t1 EXTENDED; 16786Table Op Msg_type Msg_text 16787test.t1 repair status OK 16788test.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. 16789# check layout success: 1 16790TRUNCATE t1; 16791Warnings: 16792Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16793 16794# check TRUNCATE success: 1 16795# check layout success: 1 16796# End usability test (inc/partition_check.inc) 16797DROP TABLE t1; 16798CREATE TABLE t1 ( 16799f_int1 INTEGER, 16800f_int2 INTEGER, 16801f_char1 CHAR(20), 16802f_char2 CHAR(20), 16803f_charbig VARCHAR(1000) 16804, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 16805) 16806PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1) 16807(PARTITION part1 VALUES IN (0) 16808DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16809INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 16810(SUBPARTITION sp11 16811DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16812INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16813SUBPARTITION sp12 16814DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16815INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 16816PARTITION part2 VALUES IN (1) 16817DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16818INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 16819(SUBPARTITION sp21 16820DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16821INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16822SUBPARTITION sp22 16823DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16824INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), 16825PARTITION part3 VALUES IN (2) 16826DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16827INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 16828(SUBPARTITION sp31, 16829SUBPARTITION sp32), 16830PARTITION part4 VALUES IN (NULL) 16831DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16832INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 16833(SUBPARTITION sp41 16834DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16835INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 16836SUBPARTITION sp42 16837DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 16838INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')); 16839Warnings: 16840Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16841INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16842SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 16843Warnings: 16844Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 16845# Start usability test (inc/partition_check.inc) 16846create_command 16847SHOW CREATE TABLE t1; 16848Table Create Table 16849t1 CREATE TABLE `t1` ( 16850 `f_int1` int(11) DEFAULT NULL, 16851 `f_int2` int(11) DEFAULT NULL, 16852 `f_char1` char(20) DEFAULT NULL, 16853 `f_char2` char(20) DEFAULT NULL, 16854 `f_charbig` varchar(1000) DEFAULT NULL, 16855 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 16856 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 16857) ENGINE=MyISAM DEFAULT CHARSET=latin1 16858/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 16859SUBPARTITION BY HASH (f_int2 + 1) 16860(PARTITION part1 VALUES IN (0) 16861 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16862 SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16863 PARTITION part2 VALUES IN (1) 16864 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16865 SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16866 PARTITION part3 VALUES IN (2) 16867 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16868 SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 16869 PARTITION part4 VALUES IN (NULL) 16870 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 16871 SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 16872 16873unified filelist 16874t1#P#part1#SP#sp11.MYD 16875t1#P#part1#SP#sp11.MYI 16876t1#P#part1#SP#sp12.MYD 16877t1#P#part1#SP#sp12.MYI 16878t1#P#part2#SP#sp21.MYD 16879t1#P#part2#SP#sp21.MYI 16880t1#P#part2#SP#sp22.MYD 16881t1#P#part2#SP#sp22.MYI 16882t1#P#part3#SP#sp31.MYD 16883t1#P#part3#SP#sp31.MYI 16884t1#P#part3#SP#sp32.MYD 16885t1#P#part3#SP#sp32.MYI 16886t1#P#part4#SP#sp41.MYD 16887t1#P#part4#SP#sp41.MYI 16888t1#P#part4#SP#sp42.MYD 16889t1#P#part4#SP#sp42.MYI 16890t1.frm 16891t1.par 16892t1#P#part1#SP#sp11.MYD 16893t1#P#part1#SP#sp12.MYD 16894t1#P#part2#SP#sp21.MYD 16895t1#P#part2#SP#sp22.MYD 16896t1#P#part3#SP#sp31.MYD 16897t1#P#part3#SP#sp32.MYD 16898t1#P#part4#SP#sp41.MYD 16899t1#P#part4#SP#sp42.MYD 16900t1#P#part1#SP#sp11.MYI 16901t1#P#part1#SP#sp12.MYI 16902t1#P#part2#SP#sp21.MYI 16903t1#P#part2#SP#sp22.MYI 16904t1#P#part3#SP#sp31.MYI 16905t1#P#part3#SP#sp32.MYI 16906t1#P#part4#SP#sp41.MYI 16907t1#P#part4#SP#sp42.MYI 16908 16909# check prerequisites-1 success: 1 16910# check COUNT(*) success: 1 16911# check MIN/MAX(f_int1) success: 1 16912# check MIN/MAX(f_int2) success: 1 16913INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16914SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16915CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16916WHERE f_int1 IN (2,3); 16917ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16918# check prerequisites-3 success: 1 16919# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16920INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16921SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16922CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16923WHERE f_int1 IN (2,3); 16924DELETE FROM t1 WHERE f_charbig = 'delete me'; 16925INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16926SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16927CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16928WHERE f_int1 IN (2,3); 16929DELETE FROM t1 WHERE f_charbig = 'delete me'; 16930# check read via f_int1 success: 1 16931# check read via f_int2 success: 1 16932 16933# check multiple-1 success: 1 16934DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16935 16936# check multiple-2 success: 1 16937INSERT INTO t1 SELECT * FROM t0_template 16938WHERE MOD(f_int1,3) = 0; 16939 16940# check multiple-3 success: 1 16941UPDATE t1 SET f_int1 = f_int1 + @max_row 16942WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16943AND @max_row_div2 + @max_row_div4; 16944 16945# check multiple-4 success: 1 16946DELETE FROM t1 16947WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16948AND @max_row_div2 + @max_row_div4 + @max_row; 16949 16950# check multiple-5 success: 1 16951SELECT COUNT(*) INTO @try_count FROM t0_template 16952WHERE MOD(f_int1,3) = 0 16953AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16954SELECT COUNT(*) INTO @clash_count 16955FROM t1 INNER JOIN t0_template USING(f_int1) 16956WHERE MOD(f_int1,3) = 0 16957AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16958SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16959INSERT INTO t1 16960SET f_int1 = @cur_value , f_int2 = @cur_value, 16961f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16962f_charbig = '#SINGLE#'; 16963 16964# check single-1 success: 1 16965SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16966INSERT INTO t1 16967SET f_int1 = @cur_value , f_int2 = @cur_value, 16968f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16969f_charbig = '#SINGLE#'; 16970 16971# check single-2 success: 1 16972SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16973SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16974UPDATE t1 SET f_int1 = @cur_value2 16975WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16976 16977# check single-3 success: 1 16978SET @cur_value1= -1; 16979SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16980UPDATE t1 SET f_int1 = @cur_value1 16981WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16982 16983# check single-4 success: 1 16984SELECT MAX(f_int1) INTO @cur_value FROM t1; 16985DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16986 16987# check single-5 success: 1 16988DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16989 16990# check single-6 success: 1 16991INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16992 16993# check single-7 success: 1 16994DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16995DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16996INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16997f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16998f_charbig = '#NULL#'; 16999INSERT INTO t1 17000SET f_int1 = NULL , f_int2 = -@max_row, 17001f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17002f_charbig = '#NULL#'; 17003# check null success: 1 17004 17005# check null-1 success: 1 17006UPDATE t1 SET f_int1 = -@max_row 17007WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17008AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17009 17010# check null-2 success: 1 17011UPDATE t1 SET f_int1 = NULL 17012WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17013AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17014 17015# check null-3 success: 1 17016DELETE FROM t1 17017WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17018AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17019 17020# check null-4 success: 1 17021DELETE FROM t1 17022WHERE f_int1 = 0 AND f_int2 = 0 17023AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17024AND f_charbig = '#NULL#'; 17025INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17026SELECT f_int1, f_int1, '', '', 'was inserted' 17027 FROM t0_template source_tab 17028WHERE MOD(f_int1,3) = 0 17029AND f_int1 BETWEEN @max_row_div2 AND @max_row 17030ON DUPLICATE KEY 17031UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17032f_int2 = 2 * @max_row + source_tab.f_int1, 17033f_charbig = 'was updated'; 17034 17035# check unique-1-a success: 1 17036 17037# check unique-1-b success: 1 17038DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17039UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17040f_int2 = CAST(f_char1 AS SIGNED INT), 17041f_charbig = CONCAT('===',f_char1,'===') 17042WHERE f_charbig = 'was updated'; 17043REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17044SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17045 FROM t0_template source_tab 17046WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17047 17048# check replace success: 1 17049DELETE FROM t1 17050WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17051DELETE FROM t1 17052WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17053f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17054UPDATE t1 SET f_int2 = f_int1, 17055f_char1 = CAST(f_int1 AS CHAR), 17056f_char2 = CAST(f_int1 AS CHAR), 17057f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17058WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17059SET AUTOCOMMIT= 0; 17060INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17061SELECT f_int1, f_int1, '', '', 'was inserted' 17062FROM t0_template source_tab 17063WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17064 17065# check transactions-1 success: 1 17066COMMIT WORK; 17067 17068# check transactions-2 success: 1 17069ROLLBACK WORK; 17070 17071# check transactions-3 success: 1 17072DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17073COMMIT WORK; 17074ROLLBACK WORK; 17075 17076# check transactions-4 success: 1 17077INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17078SELECT f_int1, f_int1, '', '', 'was inserted' 17079FROM t0_template source_tab 17080WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17081 17082# check transactions-5 success: 1 17083ROLLBACK WORK; 17084Warnings: 17085Warning 1196 Some non-transactional changed tables couldn't be rolled back 17086 17087# check transactions-6 success: 1 17088# INFO: Storage engine used for t1 seems to be not transactional. 17089COMMIT; 17090 17091# check transactions-7 success: 1 17092DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17093COMMIT WORK; 17094SET @@session.sql_mode = 'traditional'; 17095Warnings: 17096Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17097SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17098INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17099SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17100'', '', 'was inserted' FROM t0_template 17101WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17102ERROR 22012: Division by 0 17103COMMIT; 17104 17105# check transactions-8 success: 1 17106# INFO: Storage engine used for t1 seems to be unable to revert 17107# changes made by the failing statement. 17108SET @@session.sql_mode = ''; 17109Warnings: 17110Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17111SET AUTOCOMMIT= 1; 17112DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17113COMMIT WORK; 17114UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17115 17116# check special-1 success: 1 17117UPDATE t1 SET f_charbig = ''; 17118 17119# check special-2 success: 1 17120UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17121INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17122SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17123WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17124INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17125SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17126'just inserted' FROM t0_template 17127WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17128CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17129BEGIN 17130UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17131f_charbig = 'updated by trigger' 17132 WHERE f_int1 = new.f_int1; 17133END| 17134INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17135SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17136WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17137 17138# check trigger-1 success: 1 17139DROP TRIGGER trg_1; 17140UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17141f_int2 = CAST(f_char1 AS SIGNED INT), 17142f_charbig = 'just inserted' 17143 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17144DELETE FROM t0_aux 17145WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17146INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17147SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17148'just inserted' FROM t0_template 17149WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17150CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17151BEGIN 17152UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17153f_charbig = 'updated by trigger' 17154 WHERE f_int1 = new.f_int1; 17155END| 17156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17157SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17159 17160# check trigger-2 success: 1 17161DROP TRIGGER trg_1; 17162UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17163f_int2 = CAST(f_char1 AS SIGNED INT), 17164f_charbig = 'just inserted' 17165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17166DELETE FROM t0_aux 17167WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17168INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17169SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17170'just inserted' FROM t0_template 17171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17172CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17173BEGIN 17174UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17175f_charbig = 'updated by trigger' 17176 WHERE f_int1 = new.f_int1; 17177END| 17178UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17179WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17180 17181# check trigger-3 success: 1 17182DROP TRIGGER trg_1; 17183UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17184f_int2 = CAST(f_char1 AS SIGNED INT), 17185f_charbig = 'just inserted' 17186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17187DELETE FROM t0_aux 17188WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17189INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17190SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17191'just inserted' FROM t0_template 17192WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17193CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17194BEGIN 17195UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17196f_charbig = 'updated by trigger' 17197 WHERE f_int1 = - old.f_int1; 17198END| 17199UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17200WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17201 17202# check trigger-4 success: 1 17203DROP TRIGGER trg_1; 17204UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17205f_int2 = CAST(f_char1 AS SIGNED INT), 17206f_charbig = 'just inserted' 17207 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17208DELETE FROM t0_aux 17209WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17210INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17211SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17212'just inserted' FROM t0_template 17213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17214CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17215BEGIN 17216UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17217f_charbig = 'updated by trigger' 17218 WHERE f_int1 = new.f_int1; 17219END| 17220UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17221WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17222 17223# check trigger-5 success: 1 17224DROP TRIGGER trg_1; 17225UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17226f_int2 = CAST(f_char1 AS SIGNED INT), 17227f_charbig = 'just inserted' 17228 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17229DELETE FROM t0_aux 17230WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17231INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17232SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17233'just inserted' FROM t0_template 17234WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17235CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17236BEGIN 17237UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17238f_charbig = 'updated by trigger' 17239 WHERE f_int1 = - old.f_int1; 17240END| 17241UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17242WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17243 17244# check trigger-6 success: 1 17245DROP TRIGGER trg_1; 17246UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17247f_int2 = CAST(f_char1 AS SIGNED INT), 17248f_charbig = 'just inserted' 17249 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17250DELETE FROM t0_aux 17251WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17252INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17253SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17254'just inserted' FROM t0_template 17255WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17256CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17257BEGIN 17258UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17259f_charbig = 'updated by trigger' 17260 WHERE f_int1 = - old.f_int1; 17261END| 17262DELETE FROM t0_aux 17263WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17264 17265# check trigger-7 success: 1 17266DROP TRIGGER trg_1; 17267UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17268f_int2 = CAST(f_char1 AS SIGNED INT), 17269f_charbig = 'just inserted' 17270 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17271DELETE FROM t0_aux 17272WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17273INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17274SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17275'just inserted' FROM t0_template 17276WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17277CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17278BEGIN 17279UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17280f_charbig = 'updated by trigger' 17281 WHERE f_int1 = - old.f_int1; 17282END| 17283DELETE FROM t0_aux 17284WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17285 17286# check trigger-8 success: 1 17287DROP TRIGGER trg_1; 17288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17289f_int2 = CAST(f_char1 AS SIGNED INT), 17290f_charbig = 'just inserted' 17291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17292DELETE FROM t0_aux 17293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17294DELETE FROM t1 17295WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17296CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17297BEGIN 17298SET new.f_int1 = old.f_int1 + @max_row, 17299new.f_int2 = old.f_int2 - @max_row, 17300new.f_charbig = '####updated per update trigger####'; 17301END| 17302UPDATE t1 17303SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17304f_charbig = '####updated per update statement itself####'; 17305Warnings: 17306Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17307 17308# check trigger-9 success: 1 17309DROP TRIGGER trg_2; 17310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17311f_int2 = CAST(f_char1 AS SIGNED INT), 17312f_charbig = CONCAT('===',f_char1,'==='); 17313Warnings: 17314Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17315CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17316BEGIN 17317SET new.f_int1 = new.f_int1 + @max_row, 17318new.f_int2 = new.f_int2 - @max_row, 17319new.f_charbig = '####updated per update trigger####'; 17320END| 17321UPDATE t1 17322SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17323f_charbig = '####updated per update statement itself####'; 17324Warnings: 17325Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17326 17327# check trigger-10 success: 1 17328DROP TRIGGER trg_2; 17329UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17330f_int2 = CAST(f_char1 AS SIGNED INT), 17331f_charbig = CONCAT('===',f_char1,'==='); 17332Warnings: 17333Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17334CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17335BEGIN 17336SET new.f_int1 = @my_max1 + @counter, 17337new.f_int2 = @my_min2 - @counter, 17338new.f_charbig = '####updated per insert trigger####'; 17339SET @counter = @counter + 1; 17340END| 17341SET @counter = 1; 17342SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17343Warnings: 17344Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17345INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17346SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17347CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17348WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17349ORDER BY f_int1; 17350DROP TRIGGER trg_3; 17351 17352# check trigger-11 success: 1 17353Warnings: 17354Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17355DELETE FROM t1 17356WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17357AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17358AND f_charbig = '####updated per insert trigger####'; 17359CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17360BEGIN 17361SET new.f_int1 = @my_max1 + @counter, 17362new.f_int2 = @my_min2 - @counter, 17363new.f_charbig = '####updated per insert trigger####'; 17364SET @counter = @counter + 1; 17365END| 17366SET @counter = 1; 17367SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17368Warnings: 17369Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17370INSERT INTO t1 (f_char1, f_char2, f_charbig) 17371SELECT CAST(f_int1 AS CHAR), 17372CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17373WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17374ORDER BY f_int1; 17375DROP TRIGGER trg_3; 17376 17377# check trigger-12 success: 1 17378Warnings: 17379Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17380DELETE FROM t1 17381WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17382AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17383AND f_charbig = '####updated per insert trigger####'; 17384ANALYZE TABLE t1; 17385Table Op Msg_type Msg_text 17386test.t1 analyze status OK 17387test.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. 17388CHECK TABLE t1 EXTENDED; 17389Table Op Msg_type Msg_text 17390test.t1 check status OK 17391test.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. 17392CHECKSUM TABLE t1 EXTENDED; 17393Table Checksum 17394test.t1 <some_value> 17395OPTIMIZE TABLE t1; 17396Table Op Msg_type Msg_text 17397test.t1 optimize status OK 17398test.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. 17399# check layout success: 1 17400REPAIR TABLE t1 EXTENDED; 17401Table Op Msg_type Msg_text 17402test.t1 repair status OK 17403test.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. 17404# check layout success: 1 17405TRUNCATE t1; 17406Warnings: 17407Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17408 17409# check TRUNCATE success: 1 17410# check layout success: 1 17411# End usability test (inc/partition_check.inc) 17412DROP TABLE t1; 17413CREATE TABLE t1 ( 17414f_int1 INTEGER, 17415f_int2 INTEGER, 17416f_char1 CHAR(20), 17417f_char2 CHAR(20), 17418f_charbig VARCHAR(1000) 17419, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 17420) 17421PARTITION BY LIST(ABS(MOD(f_int1,2))) 17422SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3 17423(PARTITION part1 VALUES IN (0) 17424DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 17425INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 17426PARTITION part2 VALUES IN (1) 17427DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 17428INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 17429PARTITION part3 VALUES IN (NULL) 17430DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 17431INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 17432Warnings: 17433Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17434INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17435SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 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# Start usability test (inc/partition_check.inc) 17439create_command 17440SHOW CREATE TABLE t1; 17441Table Create Table 17442t1 CREATE TABLE `t1` ( 17443 `f_int1` int(11) DEFAULT NULL, 17444 `f_int2` int(11) DEFAULT NULL, 17445 `f_char1` char(20) DEFAULT NULL, 17446 `f_char2` char(20) DEFAULT NULL, 17447 `f_charbig` varchar(1000) DEFAULT NULL, 17448 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 17449 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 17450) ENGINE=MyISAM DEFAULT CHARSET=latin1 17451/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 17452SUBPARTITION BY KEY (f_int2) 17453SUBPARTITIONS 3 17454(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 17455 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 17456 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 17457 17458unified filelist 17459t1#P#part1#SP#part1sp0.MYD 17460t1#P#part1#SP#part1sp0.MYI 17461t1#P#part1#SP#part1sp1.MYD 17462t1#P#part1#SP#part1sp1.MYI 17463t1#P#part1#SP#part1sp2.MYD 17464t1#P#part1#SP#part1sp2.MYI 17465t1#P#part2#SP#part2sp0.MYD 17466t1#P#part2#SP#part2sp0.MYI 17467t1#P#part2#SP#part2sp1.MYD 17468t1#P#part2#SP#part2sp1.MYI 17469t1#P#part2#SP#part2sp2.MYD 17470t1#P#part2#SP#part2sp2.MYI 17471t1#P#part3#SP#part3sp0.MYD 17472t1#P#part3#SP#part3sp0.MYI 17473t1#P#part3#SP#part3sp1.MYD 17474t1#P#part3#SP#part3sp1.MYI 17475t1#P#part3#SP#part3sp2.MYD 17476t1#P#part3#SP#part3sp2.MYI 17477t1.frm 17478t1.par 17479t1#P#part1#SP#part1sp0.MYD 17480t1#P#part1#SP#part1sp1.MYD 17481t1#P#part1#SP#part1sp2.MYD 17482t1#P#part2#SP#part2sp0.MYD 17483t1#P#part2#SP#part2sp1.MYD 17484t1#P#part2#SP#part2sp2.MYD 17485t1#P#part3#SP#part3sp0.MYD 17486t1#P#part3#SP#part3sp1.MYD 17487t1#P#part3#SP#part3sp2.MYD 17488t1#P#part1#SP#part1sp0.MYI 17489t1#P#part1#SP#part1sp1.MYI 17490t1#P#part1#SP#part1sp2.MYI 17491t1#P#part2#SP#part2sp0.MYI 17492t1#P#part2#SP#part2sp1.MYI 17493t1#P#part2#SP#part2sp2.MYI 17494t1#P#part3#SP#part3sp0.MYI 17495t1#P#part3#SP#part3sp1.MYI 17496t1#P#part3#SP#part3sp2.MYI 17497 17498# check prerequisites-1 success: 1 17499# check COUNT(*) success: 1 17500# check MIN/MAX(f_int1) success: 1 17501# check MIN/MAX(f_int2) success: 1 17502INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17503SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17504CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17505WHERE f_int1 IN (2,3); 17506ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 17507# check prerequisites-3 success: 1 17508# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 17509INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17510SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17511CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17512WHERE f_int1 IN (2,3); 17513DELETE FROM t1 WHERE f_charbig = 'delete me'; 17514INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17515SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17516CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17517WHERE f_int1 IN (2,3); 17518DELETE FROM t1 WHERE f_charbig = 'delete me'; 17519# check read via f_int1 success: 1 17520# check read via f_int2 success: 1 17521 17522# check multiple-1 success: 1 17523DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17524 17525# check multiple-2 success: 1 17526INSERT INTO t1 SELECT * FROM t0_template 17527WHERE MOD(f_int1,3) = 0; 17528 17529# check multiple-3 success: 1 17530UPDATE t1 SET f_int1 = f_int1 + @max_row 17531WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17532AND @max_row_div2 + @max_row_div4; 17533 17534# check multiple-4 success: 1 17535DELETE FROM t1 17536WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17537AND @max_row_div2 + @max_row_div4 + @max_row; 17538 17539# check multiple-5 success: 1 17540SELECT COUNT(*) INTO @try_count FROM t0_template 17541WHERE MOD(f_int1,3) = 0 17542AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17543SELECT COUNT(*) INTO @clash_count 17544FROM t1 INNER JOIN t0_template USING(f_int1) 17545WHERE MOD(f_int1,3) = 0 17546AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17547SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17548INSERT INTO t1 17549SET f_int1 = @cur_value , f_int2 = @cur_value, 17550f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17551f_charbig = '#SINGLE#'; 17552 17553# check single-1 success: 1 17554SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17555INSERT INTO t1 17556SET f_int1 = @cur_value , f_int2 = @cur_value, 17557f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17558f_charbig = '#SINGLE#'; 17559 17560# check single-2 success: 1 17561SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17562SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17563UPDATE t1 SET f_int1 = @cur_value2 17564WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17565 17566# check single-3 success: 1 17567SET @cur_value1= -1; 17568SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17569UPDATE t1 SET f_int1 = @cur_value1 17570WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17571 17572# check single-4 success: 1 17573SELECT MAX(f_int1) INTO @cur_value FROM t1; 17574DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17575 17576# check single-5 success: 1 17577DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17578 17579# check single-6 success: 1 17580INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17581 17582# check single-7 success: 1 17583DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 17584DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17585INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17586f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17587f_charbig = '#NULL#'; 17588INSERT INTO t1 17589SET f_int1 = NULL , f_int2 = -@max_row, 17590f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17591f_charbig = '#NULL#'; 17592# check null success: 1 17593 17594# check null-1 success: 1 17595UPDATE t1 SET f_int1 = -@max_row 17596WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17597AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17598 17599# check null-2 success: 1 17600UPDATE t1 SET f_int1 = NULL 17601WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17602AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17603 17604# check null-3 success: 1 17605DELETE FROM t1 17606WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17607AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17608 17609# check null-4 success: 1 17610DELETE FROM t1 17611WHERE f_int1 = 0 AND f_int2 = 0 17612AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17613AND f_charbig = '#NULL#'; 17614INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17615SELECT f_int1, f_int1, '', '', 'was inserted' 17616 FROM t0_template source_tab 17617WHERE MOD(f_int1,3) = 0 17618AND f_int1 BETWEEN @max_row_div2 AND @max_row 17619ON DUPLICATE KEY 17620UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17621f_int2 = 2 * @max_row + source_tab.f_int1, 17622f_charbig = 'was updated'; 17623 17624# check unique-1-a success: 1 17625 17626# check unique-1-b success: 1 17627DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17629f_int2 = CAST(f_char1 AS SIGNED INT), 17630f_charbig = CONCAT('===',f_char1,'===') 17631WHERE f_charbig = 'was updated'; 17632REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17633SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17634 FROM t0_template source_tab 17635WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17636 17637# check replace success: 1 17638DELETE FROM t1 17639WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17640DELETE FROM t1 17641WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17642f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17643UPDATE t1 SET f_int2 = f_int1, 17644f_char1 = CAST(f_int1 AS CHAR), 17645f_char2 = CAST(f_int1 AS CHAR), 17646f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17647WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17648SET AUTOCOMMIT= 0; 17649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17650SELECT f_int1, f_int1, '', '', 'was inserted' 17651FROM t0_template source_tab 17652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17653 17654# check transactions-1 success: 1 17655COMMIT WORK; 17656 17657# check transactions-2 success: 1 17658ROLLBACK WORK; 17659 17660# check transactions-3 success: 1 17661DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17662COMMIT WORK; 17663ROLLBACK WORK; 17664 17665# check transactions-4 success: 1 17666INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17667SELECT f_int1, f_int1, '', '', 'was inserted' 17668FROM t0_template source_tab 17669WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17670 17671# check transactions-5 success: 1 17672ROLLBACK WORK; 17673Warnings: 17674Warning 1196 Some non-transactional changed tables couldn't be rolled back 17675 17676# check transactions-6 success: 1 17677# INFO: Storage engine used for t1 seems to be not transactional. 17678COMMIT; 17679 17680# check transactions-7 success: 1 17681DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17682COMMIT WORK; 17683SET @@session.sql_mode = 'traditional'; 17684Warnings: 17685Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17686SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17687INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17688SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17689'', '', 'was inserted' FROM t0_template 17690WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17691ERROR 22012: Division by 0 17692COMMIT; 17693 17694# check transactions-8 success: 1 17695# INFO: Storage engine used for t1 seems to be unable to revert 17696# changes made by the failing statement. 17697SET @@session.sql_mode = ''; 17698Warnings: 17699Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17700SET AUTOCOMMIT= 1; 17701DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17702COMMIT WORK; 17703UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17704 17705# check special-1 success: 1 17706UPDATE t1 SET f_charbig = ''; 17707 17708# check special-2 success: 1 17709UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17710INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17711SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17712WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17713INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17714SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17715'just inserted' FROM t0_template 17716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17717CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17718BEGIN 17719UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17720f_charbig = 'updated by trigger' 17721 WHERE f_int1 = new.f_int1; 17722END| 17723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17724SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17725WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17726 17727# check trigger-1 success: 1 17728DROP TRIGGER trg_1; 17729UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17730f_int2 = CAST(f_char1 AS SIGNED INT), 17731f_charbig = 'just inserted' 17732 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17733DELETE FROM t0_aux 17734WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17735INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17736SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17737'just inserted' FROM t0_template 17738WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17739CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17740BEGIN 17741UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17742f_charbig = 'updated by trigger' 17743 WHERE f_int1 = new.f_int1; 17744END| 17745INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17746SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17747WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17748 17749# check trigger-2 success: 1 17750DROP TRIGGER trg_1; 17751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17752f_int2 = CAST(f_char1 AS SIGNED INT), 17753f_charbig = 'just inserted' 17754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17755DELETE FROM t0_aux 17756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17759'just inserted' FROM t0_template 17760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17761CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17762BEGIN 17763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17764f_charbig = 'updated by trigger' 17765 WHERE f_int1 = new.f_int1; 17766END| 17767UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17769 17770# check trigger-3 success: 1 17771DROP TRIGGER trg_1; 17772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17773f_int2 = CAST(f_char1 AS SIGNED INT), 17774f_charbig = 'just inserted' 17775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17776DELETE FROM t0_aux 17777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17780'just inserted' FROM t0_template 17781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17782CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17783BEGIN 17784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17785f_charbig = 'updated by trigger' 17786 WHERE f_int1 = - old.f_int1; 17787END| 17788UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17790 17791# check trigger-4 success: 1 17792DROP TRIGGER trg_1; 17793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17794f_int2 = CAST(f_char1 AS SIGNED INT), 17795f_charbig = 'just inserted' 17796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17797DELETE FROM t0_aux 17798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17801'just inserted' FROM t0_template 17802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17803CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17804BEGIN 17805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17806f_charbig = 'updated by trigger' 17807 WHERE f_int1 = new.f_int1; 17808END| 17809UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17810WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17811 17812# check trigger-5 success: 1 17813DROP TRIGGER trg_1; 17814UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17815f_int2 = CAST(f_char1 AS SIGNED INT), 17816f_charbig = 'just inserted' 17817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17818DELETE FROM t0_aux 17819WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17821SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17822'just inserted' FROM t0_template 17823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17824CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17825BEGIN 17826UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17827f_charbig = 'updated by trigger' 17828 WHERE f_int1 = - old.f_int1; 17829END| 17830UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17831WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17832 17833# check trigger-6 success: 1 17834DROP TRIGGER trg_1; 17835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17836f_int2 = CAST(f_char1 AS SIGNED INT), 17837f_charbig = 'just inserted' 17838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17839DELETE FROM t0_aux 17840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17843'just inserted' FROM t0_template 17844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17845CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17846BEGIN 17847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17848f_charbig = 'updated by trigger' 17849 WHERE f_int1 = - old.f_int1; 17850END| 17851DELETE FROM t0_aux 17852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17853 17854# check trigger-7 success: 1 17855DROP TRIGGER trg_1; 17856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17857f_int2 = CAST(f_char1 AS SIGNED INT), 17858f_charbig = 'just inserted' 17859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17860DELETE FROM t0_aux 17861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17862INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17863SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17864'just inserted' FROM t0_template 17865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17866CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17867BEGIN 17868UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17869f_charbig = 'updated by trigger' 17870 WHERE f_int1 = - old.f_int1; 17871END| 17872DELETE FROM t0_aux 17873WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17874 17875# check trigger-8 success: 1 17876DROP TRIGGER trg_1; 17877UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17878f_int2 = CAST(f_char1 AS SIGNED INT), 17879f_charbig = 'just inserted' 17880 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17881DELETE FROM t0_aux 17882WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17883DELETE FROM t1 17884WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17885CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17886BEGIN 17887SET new.f_int1 = old.f_int1 + @max_row, 17888new.f_int2 = old.f_int2 - @max_row, 17889new.f_charbig = '####updated per update trigger####'; 17890END| 17891UPDATE t1 17892SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17893f_charbig = '####updated per update statement itself####'; 17894Warnings: 17895Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17896 17897# check trigger-9 success: 1 17898DROP TRIGGER trg_2; 17899UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17900f_int2 = CAST(f_char1 AS SIGNED INT), 17901f_charbig = CONCAT('===',f_char1,'==='); 17902Warnings: 17903Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17904CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17905BEGIN 17906SET new.f_int1 = new.f_int1 + @max_row, 17907new.f_int2 = new.f_int2 - @max_row, 17908new.f_charbig = '####updated per update trigger####'; 17909END| 17910UPDATE t1 17911SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17912f_charbig = '####updated per update statement itself####'; 17913Warnings: 17914Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17915 17916# check trigger-10 success: 1 17917DROP TRIGGER trg_2; 17918UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17919f_int2 = CAST(f_char1 AS SIGNED INT), 17920f_charbig = CONCAT('===',f_char1,'==='); 17921Warnings: 17922Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17923CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17924BEGIN 17925SET new.f_int1 = @my_max1 + @counter, 17926new.f_int2 = @my_min2 - @counter, 17927new.f_charbig = '####updated per insert trigger####'; 17928SET @counter = @counter + 1; 17929END| 17930SET @counter = 1; 17931SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17932Warnings: 17933Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17934INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17935SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17936CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17938ORDER BY f_int1; 17939DROP TRIGGER trg_3; 17940 17941# check trigger-11 success: 1 17942Warnings: 17943Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17944DELETE FROM t1 17945WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17946AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17947AND f_charbig = '####updated per insert trigger####'; 17948CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17949BEGIN 17950SET new.f_int1 = @my_max1 + @counter, 17951new.f_int2 = @my_min2 - @counter, 17952new.f_charbig = '####updated per insert trigger####'; 17953SET @counter = @counter + 1; 17954END| 17955SET @counter = 1; 17956SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17957Warnings: 17958Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17959INSERT INTO t1 (f_char1, f_char2, f_charbig) 17960SELECT CAST(f_int1 AS CHAR), 17961CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17963ORDER BY f_int1; 17964DROP TRIGGER trg_3; 17965 17966# check trigger-12 success: 1 17967Warnings: 17968Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17969DELETE FROM t1 17970WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17971AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17972AND f_charbig = '####updated per insert trigger####'; 17973ANALYZE TABLE t1; 17974Table Op Msg_type Msg_text 17975test.t1 analyze status OK 17976test.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. 17977CHECK TABLE t1 EXTENDED; 17978Table Op Msg_type Msg_text 17979test.t1 check status OK 17980test.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. 17981CHECKSUM TABLE t1 EXTENDED; 17982Table Checksum 17983test.t1 <some_value> 17984OPTIMIZE TABLE t1; 17985Table Op Msg_type Msg_text 17986test.t1 optimize status OK 17987test.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. 17988# check layout success: 1 17989REPAIR TABLE t1 EXTENDED; 17990Table Op Msg_type Msg_text 17991test.t1 repair status OK 17992test.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. 17993# check layout success: 1 17994TRUNCATE t1; 17995Warnings: 17996Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 17997 17998# check TRUNCATE success: 1 17999# check layout success: 1 18000# End usability test (inc/partition_check.inc) 18001DROP TABLE t1; 18002#======================================================================== 18003# 5 use partition_directory with DATA/INDEX DIRECTORY 18004#======================================================================== 18005DROP TABLE IF EXISTS t1; 18006CREATE TABLE t1 ( 18007f_int1 INTEGER, 18008f_int2 INTEGER, 18009f_char1 CHAR(20), 18010f_char2 CHAR(20), 18011f_charbig VARCHAR(1000) 18012, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 18013) 18014PARTITION BY HASH(f_int1) PARTITIONS 2 18015(PARTITION p1 18016INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 18017PARTITION p2 18018INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 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. 18021INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18022SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 18023Warnings: 18024Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18025# Start usability test (inc/partition_check.inc) 18026create_command 18027SHOW CREATE TABLE t1; 18028Table Create Table 18029t1 CREATE TABLE `t1` ( 18030 `f_int1` int(11) DEFAULT NULL, 18031 `f_int2` int(11) DEFAULT NULL, 18032 `f_char1` char(20) DEFAULT NULL, 18033 `f_char2` char(20) DEFAULT NULL, 18034 `f_charbig` varchar(1000) DEFAULT NULL, 18035 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 18036 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 18037) ENGINE=MyISAM DEFAULT CHARSET=latin1 18038/*!50100 PARTITION BY HASH (f_int1) 18039(PARTITION p1 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 18040 PARTITION p2 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 18041 18042unified filelist 18043t1#P#p1.MYD 18044t1#P#p1.MYI 18045t1#P#p2.MYD 18046t1#P#p2.MYI 18047t1.frm 18048t1.par 18049t1#P#p1.MYI 18050t1#P#p2.MYI 18051 18052# check prerequisites-1 success: 1 18053# check COUNT(*) success: 1 18054# check MIN/MAX(f_int1) success: 1 18055# check MIN/MAX(f_int2) success: 1 18056INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18057SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18058CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18059WHERE f_int1 IN (2,3); 18060ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18061# check prerequisites-3 success: 1 18062# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18063INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18064SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18065CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18066WHERE f_int1 IN (2,3); 18067DELETE FROM t1 WHERE f_charbig = 'delete me'; 18068INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18069SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18070CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18071WHERE f_int1 IN (2,3); 18072DELETE FROM t1 WHERE f_charbig = 'delete me'; 18073# check read via f_int1 success: 1 18074# check read via f_int2 success: 1 18075 18076# check multiple-1 success: 1 18077DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18078 18079# check multiple-2 success: 1 18080INSERT INTO t1 SELECT * FROM t0_template 18081WHERE MOD(f_int1,3) = 0; 18082 18083# check multiple-3 success: 1 18084UPDATE t1 SET f_int1 = f_int1 + @max_row 18085WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18086AND @max_row_div2 + @max_row_div4; 18087 18088# check multiple-4 success: 1 18089DELETE FROM t1 18090WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18091AND @max_row_div2 + @max_row_div4 + @max_row; 18092 18093# check multiple-5 success: 1 18094SELECT COUNT(*) INTO @try_count FROM t0_template 18095WHERE MOD(f_int1,3) = 0 18096AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18097SELECT COUNT(*) INTO @clash_count 18098FROM t1 INNER JOIN t0_template USING(f_int1) 18099WHERE MOD(f_int1,3) = 0 18100AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18101SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18102INSERT INTO t1 18103SET f_int1 = @cur_value , f_int2 = @cur_value, 18104f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18105f_charbig = '#SINGLE#'; 18106 18107# check single-1 success: 1 18108SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18109INSERT INTO t1 18110SET f_int1 = @cur_value , f_int2 = @cur_value, 18111f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18112f_charbig = '#SINGLE#'; 18113 18114# check single-2 success: 1 18115SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18116SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18117UPDATE t1 SET f_int1 = @cur_value2 18118WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18119 18120# check single-3 success: 1 18121SET @cur_value1= -1; 18122SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18123UPDATE t1 SET f_int1 = @cur_value1 18124WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18125 18126# check single-4 success: 1 18127SELECT MAX(f_int1) INTO @cur_value FROM t1; 18128DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18129 18130# check single-5 success: 1 18131DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18132 18133# check single-6 success: 1 18134INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18135 18136# check single-7 success: 1 18137DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18138DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18139INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18140f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18141f_charbig = '#NULL#'; 18142INSERT INTO t1 18143SET f_int1 = NULL , f_int2 = -@max_row, 18144f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18145f_charbig = '#NULL#'; 18146# check null success: 1 18147 18148# check null-1 success: 1 18149UPDATE t1 SET f_int1 = -@max_row 18150WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18151AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18152 18153# check null-2 success: 1 18154UPDATE t1 SET f_int1 = NULL 18155WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18156AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18157 18158# check null-3 success: 1 18159DELETE FROM t1 18160WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18161AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18162 18163# check null-4 success: 1 18164DELETE FROM t1 18165WHERE f_int1 = 0 AND f_int2 = 0 18166AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18167AND f_charbig = '#NULL#'; 18168INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18169SELECT f_int1, f_int1, '', '', 'was inserted' 18170 FROM t0_template source_tab 18171WHERE MOD(f_int1,3) = 0 18172AND f_int1 BETWEEN @max_row_div2 AND @max_row 18173ON DUPLICATE KEY 18174UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18175f_int2 = 2 * @max_row + source_tab.f_int1, 18176f_charbig = 'was updated'; 18177 18178# check unique-1-a success: 1 18179 18180# check unique-1-b success: 1 18181DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18182UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18183f_int2 = CAST(f_char1 AS SIGNED INT), 18184f_charbig = CONCAT('===',f_char1,'===') 18185WHERE f_charbig = 'was updated'; 18186REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18187SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18188 FROM t0_template source_tab 18189WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18190 18191# check replace success: 1 18192DELETE FROM t1 18193WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18194DELETE FROM t1 18195WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18196f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18197UPDATE t1 SET f_int2 = f_int1, 18198f_char1 = CAST(f_int1 AS CHAR), 18199f_char2 = CAST(f_int1 AS CHAR), 18200f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18201WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18202SET AUTOCOMMIT= 0; 18203INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18204SELECT f_int1, f_int1, '', '', 'was inserted' 18205FROM t0_template source_tab 18206WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18207 18208# check transactions-1 success: 1 18209COMMIT WORK; 18210 18211# check transactions-2 success: 1 18212ROLLBACK WORK; 18213 18214# check transactions-3 success: 1 18215DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18216COMMIT WORK; 18217ROLLBACK WORK; 18218 18219# check transactions-4 success: 1 18220INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18221SELECT f_int1, f_int1, '', '', 'was inserted' 18222FROM t0_template source_tab 18223WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18224 18225# check transactions-5 success: 1 18226ROLLBACK WORK; 18227Warnings: 18228Warning 1196 Some non-transactional changed tables couldn't be rolled back 18229 18230# check transactions-6 success: 1 18231# INFO: Storage engine used for t1 seems to be not transactional. 18232COMMIT; 18233 18234# check transactions-7 success: 1 18235DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18236COMMIT WORK; 18237SET @@session.sql_mode = 'traditional'; 18238Warnings: 18239Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18240SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18241INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18242SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18243'', '', 'was inserted' FROM t0_template 18244WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18245ERROR 22012: Division by 0 18246COMMIT; 18247 18248# check transactions-8 success: 1 18249# INFO: Storage engine used for t1 seems to be unable to revert 18250# changes made by the failing statement. 18251SET @@session.sql_mode = ''; 18252Warnings: 18253Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18254SET AUTOCOMMIT= 1; 18255DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18256COMMIT WORK; 18257UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18258 18259# check special-1 success: 1 18260UPDATE t1 SET f_charbig = ''; 18261 18262# check special-2 success: 1 18263UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18264INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18265SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18267INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18268SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18269'just inserted' FROM t0_template 18270WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18271CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18272BEGIN 18273UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18274f_charbig = 'updated by trigger' 18275 WHERE f_int1 = new.f_int1; 18276END| 18277INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18278SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18279WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18280 18281# check trigger-1 success: 1 18282DROP TRIGGER trg_1; 18283UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18284f_int2 = CAST(f_char1 AS SIGNED INT), 18285f_charbig = 'just inserted' 18286 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18287DELETE FROM t0_aux 18288WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18289INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18290SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18291'just inserted' FROM t0_template 18292WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18293CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18294BEGIN 18295UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18296f_charbig = 'updated by trigger' 18297 WHERE f_int1 = new.f_int1; 18298END| 18299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18300SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18301WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18302 18303# check trigger-2 success: 1 18304DROP TRIGGER trg_1; 18305UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18306f_int2 = CAST(f_char1 AS SIGNED INT), 18307f_charbig = 'just inserted' 18308 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18309DELETE FROM t0_aux 18310WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18311INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18312SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18313'just inserted' FROM t0_template 18314WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18315CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18316BEGIN 18317UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18318f_charbig = 'updated by trigger' 18319 WHERE f_int1 = new.f_int1; 18320END| 18321UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18322WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18323 18324# check trigger-3 success: 1 18325DROP TRIGGER trg_1; 18326UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18327f_int2 = CAST(f_char1 AS SIGNED INT), 18328f_charbig = 'just inserted' 18329 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18330DELETE FROM t0_aux 18331WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18332INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18333SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18334'just inserted' FROM t0_template 18335WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18336CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18337BEGIN 18338UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18339f_charbig = 'updated by trigger' 18340 WHERE f_int1 = - old.f_int1; 18341END| 18342UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18343WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18344 18345# check trigger-4 success: 1 18346DROP TRIGGER trg_1; 18347UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18348f_int2 = CAST(f_char1 AS SIGNED INT), 18349f_charbig = 'just inserted' 18350 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18351DELETE FROM t0_aux 18352WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18353INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18354SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18355'just inserted' FROM t0_template 18356WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18357CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18358BEGIN 18359UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18360f_charbig = 'updated by trigger' 18361 WHERE f_int1 = new.f_int1; 18362END| 18363UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18364WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18365 18366# check trigger-5 success: 1 18367DROP TRIGGER trg_1; 18368UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18369f_int2 = CAST(f_char1 AS SIGNED INT), 18370f_charbig = 'just inserted' 18371 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18372DELETE FROM t0_aux 18373WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18374INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18375SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18376'just inserted' FROM t0_template 18377WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18378CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18379BEGIN 18380UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18381f_charbig = 'updated by trigger' 18382 WHERE f_int1 = - old.f_int1; 18383END| 18384UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18385WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18386 18387# check trigger-6 success: 1 18388DROP TRIGGER trg_1; 18389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18390f_int2 = CAST(f_char1 AS SIGNED INT), 18391f_charbig = 'just inserted' 18392 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18393DELETE FROM t0_aux 18394WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18395INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18396SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18397'just inserted' FROM t0_template 18398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18399CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18400BEGIN 18401UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18402f_charbig = 'updated by trigger' 18403 WHERE f_int1 = - old.f_int1; 18404END| 18405DELETE FROM t0_aux 18406WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18407 18408# check trigger-7 success: 1 18409DROP TRIGGER trg_1; 18410UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18411f_int2 = CAST(f_char1 AS SIGNED INT), 18412f_charbig = 'just inserted' 18413 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18414DELETE FROM t0_aux 18415WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18416INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18417SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18418'just inserted' FROM t0_template 18419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18420CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18421BEGIN 18422UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18423f_charbig = 'updated by trigger' 18424 WHERE f_int1 = - old.f_int1; 18425END| 18426DELETE FROM t0_aux 18427WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18428 18429# check trigger-8 success: 1 18430DROP TRIGGER trg_1; 18431UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18432f_int2 = CAST(f_char1 AS SIGNED INT), 18433f_charbig = 'just inserted' 18434 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18435DELETE FROM t0_aux 18436WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18437DELETE FROM t1 18438WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18439CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18440BEGIN 18441SET new.f_int1 = old.f_int1 + @max_row, 18442new.f_int2 = old.f_int2 - @max_row, 18443new.f_charbig = '####updated per update trigger####'; 18444END| 18445UPDATE t1 18446SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18447f_charbig = '####updated per update statement itself####'; 18448Warnings: 18449Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18450 18451# check trigger-9 success: 1 18452DROP TRIGGER trg_2; 18453UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18454f_int2 = CAST(f_char1 AS SIGNED INT), 18455f_charbig = CONCAT('===',f_char1,'==='); 18456Warnings: 18457Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18458CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18459BEGIN 18460SET new.f_int1 = new.f_int1 + @max_row, 18461new.f_int2 = new.f_int2 - @max_row, 18462new.f_charbig = '####updated per update trigger####'; 18463END| 18464UPDATE t1 18465SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18466f_charbig = '####updated per update statement itself####'; 18467Warnings: 18468Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18469 18470# check trigger-10 success: 1 18471DROP TRIGGER trg_2; 18472UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18473f_int2 = CAST(f_char1 AS SIGNED INT), 18474f_charbig = CONCAT('===',f_char1,'==='); 18475Warnings: 18476Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18477CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18478BEGIN 18479SET new.f_int1 = @my_max1 + @counter, 18480new.f_int2 = @my_min2 - @counter, 18481new.f_charbig = '####updated per insert trigger####'; 18482SET @counter = @counter + 1; 18483END| 18484SET @counter = 1; 18485SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18486Warnings: 18487Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18488INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18489SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18490CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18491WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18492ORDER BY f_int1; 18493DROP TRIGGER trg_3; 18494 18495# check trigger-11 success: 1 18496Warnings: 18497Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18498DELETE FROM t1 18499WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18500AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18501AND f_charbig = '####updated per insert trigger####'; 18502CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18503BEGIN 18504SET new.f_int1 = @my_max1 + @counter, 18505new.f_int2 = @my_min2 - @counter, 18506new.f_charbig = '####updated per insert trigger####'; 18507SET @counter = @counter + 1; 18508END| 18509SET @counter = 1; 18510SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18511Warnings: 18512Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18513INSERT INTO t1 (f_char1, f_char2, f_charbig) 18514SELECT CAST(f_int1 AS CHAR), 18515CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18516WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18517ORDER BY f_int1; 18518DROP TRIGGER trg_3; 18519 18520# check trigger-12 success: 1 18521Warnings: 18522Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18523DELETE FROM t1 18524WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18525AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18526AND f_charbig = '####updated per insert trigger####'; 18527ANALYZE TABLE t1; 18528Table Op Msg_type Msg_text 18529test.t1 analyze status OK 18530test.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. 18531CHECK TABLE t1 EXTENDED; 18532Table Op Msg_type Msg_text 18533test.t1 check status OK 18534test.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. 18535CHECKSUM TABLE t1 EXTENDED; 18536Table Checksum 18537test.t1 <some_value> 18538OPTIMIZE TABLE t1; 18539Table Op Msg_type Msg_text 18540test.t1 optimize status OK 18541test.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. 18542# check layout success: 1 18543REPAIR TABLE t1 EXTENDED; 18544Table Op Msg_type Msg_text 18545test.t1 repair status OK 18546test.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. 18547# check layout success: 1 18548TRUNCATE t1; 18549Warnings: 18550Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18551 18552# check TRUNCATE success: 1 18553# check layout success: 1 18554# End usability test (inc/partition_check.inc) 18555DROP TABLE t1; 18556CREATE TABLE t1 ( 18557f_int1 INTEGER, 18558f_int2 INTEGER, 18559f_char1 CHAR(20), 18560f_char2 CHAR(20), 18561f_charbig VARCHAR(1000) 18562, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 18563) 18564PARTITION BY HASH(f_int1) PARTITIONS 5 18565(PARTITION p1 18566DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 18567PARTITION p2 18568INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 18569PARTITION p3 18570DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 18571INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 18572PARTITION p4, 18573PARTITION p5 18574INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 18575Warnings: 18576Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 18577INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18578SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 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. 18581# Start usability test (inc/partition_check.inc) 18582create_command 18583SHOW CREATE TABLE t1; 18584Table Create Table 18585t1 CREATE TABLE `t1` ( 18586 `f_int1` int(11) DEFAULT NULL, 18587 `f_int2` int(11) DEFAULT NULL, 18588 `f_char1` char(20) DEFAULT NULL, 18589 `f_char2` char(20) DEFAULT NULL, 18590 `f_charbig` varchar(1000) DEFAULT NULL, 18591 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 18592 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 18593) ENGINE=MyISAM DEFAULT CHARSET=latin1 18594/*!50100 PARTITION BY HASH (f_int1) 18595(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 18596 PARTITION p2 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 18597 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 18598 PARTITION p4 ENGINE = MyISAM, 18599 PARTITION p5 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 18600 18601unified filelist 18602t1#P#p1.MYD 18603t1#P#p1.MYI 18604t1#P#p2.MYD 18605t1#P#p2.MYI 18606t1#P#p3.MYD 18607t1#P#p3.MYI 18608t1#P#p4.MYD 18609t1#P#p4.MYI 18610t1#P#p5.MYD 18611t1#P#p5.MYI 18612t1.frm 18613t1.par 18614t1#P#p1.MYD 18615t1#P#p3.MYD 18616t1#P#p2.MYI 18617t1#P#p3.MYI 18618t1#P#p5.MYI 18619 18620# check prerequisites-1 success: 1 18621# check COUNT(*) success: 1 18622# check MIN/MAX(f_int1) success: 1 18623# check MIN/MAX(f_int2) success: 1 18624INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18625SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18626CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18627WHERE f_int1 IN (2,3); 18628ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18629# check prerequisites-3 success: 1 18630# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18631INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18632SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18633CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18634WHERE f_int1 IN (2,3); 18635DELETE FROM t1 WHERE f_charbig = 'delete me'; 18636INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18637SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18638CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18639WHERE f_int1 IN (2,3); 18640DELETE FROM t1 WHERE f_charbig = 'delete me'; 18641# check read via f_int1 success: 1 18642# check read via f_int2 success: 1 18643 18644# check multiple-1 success: 1 18645DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18646 18647# check multiple-2 success: 1 18648INSERT INTO t1 SELECT * FROM t0_template 18649WHERE MOD(f_int1,3) = 0; 18650 18651# check multiple-3 success: 1 18652UPDATE t1 SET f_int1 = f_int1 + @max_row 18653WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18654AND @max_row_div2 + @max_row_div4; 18655 18656# check multiple-4 success: 1 18657DELETE FROM t1 18658WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18659AND @max_row_div2 + @max_row_div4 + @max_row; 18660 18661# check multiple-5 success: 1 18662SELECT COUNT(*) INTO @try_count FROM t0_template 18663WHERE MOD(f_int1,3) = 0 18664AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18665SELECT COUNT(*) INTO @clash_count 18666FROM t1 INNER JOIN t0_template USING(f_int1) 18667WHERE MOD(f_int1,3) = 0 18668AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18669SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18670INSERT INTO t1 18671SET f_int1 = @cur_value , f_int2 = @cur_value, 18672f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18673f_charbig = '#SINGLE#'; 18674 18675# check single-1 success: 1 18676SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18677INSERT INTO t1 18678SET f_int1 = @cur_value , f_int2 = @cur_value, 18679f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18680f_charbig = '#SINGLE#'; 18681 18682# check single-2 success: 1 18683SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18684SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18685UPDATE t1 SET f_int1 = @cur_value2 18686WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18687 18688# check single-3 success: 1 18689SET @cur_value1= -1; 18690SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18691UPDATE t1 SET f_int1 = @cur_value1 18692WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18693 18694# check single-4 success: 1 18695SELECT MAX(f_int1) INTO @cur_value FROM t1; 18696DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18697 18698# check single-5 success: 1 18699DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18700 18701# check single-6 success: 1 18702INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18703 18704# check single-7 success: 1 18705DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18706DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18707INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18708f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18709f_charbig = '#NULL#'; 18710INSERT INTO t1 18711SET f_int1 = NULL , f_int2 = -@max_row, 18712f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18713f_charbig = '#NULL#'; 18714# check null success: 1 18715 18716# check null-1 success: 1 18717UPDATE t1 SET f_int1 = -@max_row 18718WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18719AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18720 18721# check null-2 success: 1 18722UPDATE t1 SET f_int1 = NULL 18723WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18724AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18725 18726# check null-3 success: 1 18727DELETE FROM t1 18728WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18729AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18730 18731# check null-4 success: 1 18732DELETE FROM t1 18733WHERE f_int1 = 0 AND f_int2 = 0 18734AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18735AND f_charbig = '#NULL#'; 18736INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18737SELECT f_int1, f_int1, '', '', 'was inserted' 18738 FROM t0_template source_tab 18739WHERE MOD(f_int1,3) = 0 18740AND f_int1 BETWEEN @max_row_div2 AND @max_row 18741ON DUPLICATE KEY 18742UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18743f_int2 = 2 * @max_row + source_tab.f_int1, 18744f_charbig = 'was updated'; 18745 18746# check unique-1-a success: 1 18747 18748# check unique-1-b success: 1 18749DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18750UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18751f_int2 = CAST(f_char1 AS SIGNED INT), 18752f_charbig = CONCAT('===',f_char1,'===') 18753WHERE f_charbig = 'was updated'; 18754REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18755SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18756 FROM t0_template source_tab 18757WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18758 18759# check replace success: 1 18760DELETE FROM t1 18761WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18762DELETE FROM t1 18763WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18764f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18765UPDATE t1 SET f_int2 = f_int1, 18766f_char1 = CAST(f_int1 AS CHAR), 18767f_char2 = CAST(f_int1 AS CHAR), 18768f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18769WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18770SET AUTOCOMMIT= 0; 18771INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18772SELECT f_int1, f_int1, '', '', 'was inserted' 18773FROM t0_template source_tab 18774WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18775 18776# check transactions-1 success: 1 18777COMMIT WORK; 18778 18779# check transactions-2 success: 1 18780ROLLBACK WORK; 18781 18782# check transactions-3 success: 1 18783DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18784COMMIT WORK; 18785ROLLBACK WORK; 18786 18787# check transactions-4 success: 1 18788INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18789SELECT f_int1, f_int1, '', '', 'was inserted' 18790FROM t0_template source_tab 18791WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18792 18793# check transactions-5 success: 1 18794ROLLBACK WORK; 18795Warnings: 18796Warning 1196 Some non-transactional changed tables couldn't be rolled back 18797 18798# check transactions-6 success: 1 18799# INFO: Storage engine used for t1 seems to be not transactional. 18800COMMIT; 18801 18802# check transactions-7 success: 1 18803DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18804COMMIT WORK; 18805SET @@session.sql_mode = 'traditional'; 18806Warnings: 18807Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18808SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18809INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18810SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18811'', '', 'was inserted' FROM t0_template 18812WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18813ERROR 22012: Division by 0 18814COMMIT; 18815 18816# check transactions-8 success: 1 18817# INFO: Storage engine used for t1 seems to be unable to revert 18818# changes made by the failing statement. 18819SET @@session.sql_mode = ''; 18820Warnings: 18821Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18822SET AUTOCOMMIT= 1; 18823DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18824COMMIT WORK; 18825UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18826 18827# check special-1 success: 1 18828UPDATE t1 SET f_charbig = ''; 18829 18830# check special-2 success: 1 18831UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18832INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18833SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18834WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18835INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18836SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18837'just inserted' FROM t0_template 18838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18839CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18840BEGIN 18841UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18842f_charbig = 'updated by trigger' 18843 WHERE f_int1 = new.f_int1; 18844END| 18845INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18846SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18848 18849# check trigger-1 success: 1 18850DROP TRIGGER trg_1; 18851UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18852f_int2 = CAST(f_char1 AS SIGNED INT), 18853f_charbig = 'just inserted' 18854 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18855DELETE FROM t0_aux 18856WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18857INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18858SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18859'just inserted' FROM t0_template 18860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18861CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18862BEGIN 18863UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18864f_charbig = 'updated by trigger' 18865 WHERE f_int1 = new.f_int1; 18866END| 18867INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18868SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18869WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18870 18871# check trigger-2 success: 1 18872DROP TRIGGER trg_1; 18873UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18874f_int2 = CAST(f_char1 AS SIGNED INT), 18875f_charbig = 'just inserted' 18876 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18877DELETE FROM t0_aux 18878WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18879INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18880SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18881'just inserted' FROM t0_template 18882WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18883CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18884BEGIN 18885UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18886f_charbig = 'updated by trigger' 18887 WHERE f_int1 = new.f_int1; 18888END| 18889UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18890WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18891 18892# check trigger-3 success: 1 18893DROP TRIGGER trg_1; 18894UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18895f_int2 = CAST(f_char1 AS SIGNED INT), 18896f_charbig = 'just inserted' 18897 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18898DELETE FROM t0_aux 18899WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18900INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18901SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18902'just inserted' FROM t0_template 18903WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18904CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18905BEGIN 18906UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18907f_charbig = 'updated by trigger' 18908 WHERE f_int1 = - old.f_int1; 18909END| 18910UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18911WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18912 18913# check trigger-4 success: 1 18914DROP TRIGGER trg_1; 18915UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18916f_int2 = CAST(f_char1 AS SIGNED INT), 18917f_charbig = 'just inserted' 18918 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18919DELETE FROM t0_aux 18920WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18921INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18922SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18923'just inserted' FROM t0_template 18924WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18925CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18926BEGIN 18927UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18928f_charbig = 'updated by trigger' 18929 WHERE f_int1 = new.f_int1; 18930END| 18931UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18932WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18933 18934# check trigger-5 success: 1 18935DROP TRIGGER trg_1; 18936UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18937f_int2 = CAST(f_char1 AS SIGNED INT), 18938f_charbig = 'just inserted' 18939 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18940DELETE FROM t0_aux 18941WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18942INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18943SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18944'just inserted' FROM t0_template 18945WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18946CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18947BEGIN 18948UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18949f_charbig = 'updated by trigger' 18950 WHERE f_int1 = - old.f_int1; 18951END| 18952UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18953WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18954 18955# check trigger-6 success: 1 18956DROP TRIGGER trg_1; 18957UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18958f_int2 = CAST(f_char1 AS SIGNED INT), 18959f_charbig = 'just inserted' 18960 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18961DELETE FROM t0_aux 18962WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18963INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18964SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18965'just inserted' FROM t0_template 18966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18967CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18968BEGIN 18969UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18970f_charbig = 'updated by trigger' 18971 WHERE f_int1 = - old.f_int1; 18972END| 18973DELETE FROM t0_aux 18974WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18975 18976# check trigger-7 success: 1 18977DROP TRIGGER trg_1; 18978UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18979f_int2 = CAST(f_char1 AS SIGNED INT), 18980f_charbig = 'just inserted' 18981 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18982DELETE FROM t0_aux 18983WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18984INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18985SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18986'just inserted' FROM t0_template 18987WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18988CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18989BEGIN 18990UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18991f_charbig = 'updated by trigger' 18992 WHERE f_int1 = - old.f_int1; 18993END| 18994DELETE FROM t0_aux 18995WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18996 18997# check trigger-8 success: 1 18998DROP TRIGGER trg_1; 18999UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19000f_int2 = CAST(f_char1 AS SIGNED INT), 19001f_charbig = 'just inserted' 19002 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19003DELETE FROM t0_aux 19004WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19005DELETE FROM t1 19006WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19007CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19008BEGIN 19009SET new.f_int1 = old.f_int1 + @max_row, 19010new.f_int2 = old.f_int2 - @max_row, 19011new.f_charbig = '####updated per update trigger####'; 19012END| 19013UPDATE t1 19014SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19015f_charbig = '####updated per update statement itself####'; 19016Warnings: 19017Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19018 19019# check trigger-9 success: 1 19020DROP TRIGGER trg_2; 19021UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19022f_int2 = CAST(f_char1 AS SIGNED INT), 19023f_charbig = CONCAT('===',f_char1,'==='); 19024Warnings: 19025Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19026CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19027BEGIN 19028SET new.f_int1 = new.f_int1 + @max_row, 19029new.f_int2 = new.f_int2 - @max_row, 19030new.f_charbig = '####updated per update trigger####'; 19031END| 19032UPDATE t1 19033SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19034f_charbig = '####updated per update statement itself####'; 19035Warnings: 19036Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19037 19038# check trigger-10 success: 1 19039DROP TRIGGER trg_2; 19040UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19041f_int2 = CAST(f_char1 AS SIGNED INT), 19042f_charbig = CONCAT('===',f_char1,'==='); 19043Warnings: 19044Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19045CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19046BEGIN 19047SET new.f_int1 = @my_max1 + @counter, 19048new.f_int2 = @my_min2 - @counter, 19049new.f_charbig = '####updated per insert trigger####'; 19050SET @counter = @counter + 1; 19051END| 19052SET @counter = 1; 19053SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19054Warnings: 19055Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19056INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19057SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19058CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19059WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19060ORDER BY f_int1; 19061DROP TRIGGER trg_3; 19062 19063# check trigger-11 success: 1 19064Warnings: 19065Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19066DELETE FROM t1 19067WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19068AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19069AND f_charbig = '####updated per insert trigger####'; 19070CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19071BEGIN 19072SET new.f_int1 = @my_max1 + @counter, 19073new.f_int2 = @my_min2 - @counter, 19074new.f_charbig = '####updated per insert trigger####'; 19075SET @counter = @counter + 1; 19076END| 19077SET @counter = 1; 19078SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19079Warnings: 19080Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19081INSERT INTO t1 (f_char1, f_char2, f_charbig) 19082SELECT CAST(f_int1 AS CHAR), 19083CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19084WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19085ORDER BY f_int1; 19086DROP TRIGGER trg_3; 19087 19088# check trigger-12 success: 1 19089Warnings: 19090Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19091DELETE FROM t1 19092WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19093AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19094AND f_charbig = '####updated per insert trigger####'; 19095ANALYZE TABLE t1; 19096Table Op Msg_type Msg_text 19097test.t1 analyze status OK 19098test.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. 19099CHECK TABLE t1 EXTENDED; 19100Table Op Msg_type Msg_text 19101test.t1 check status OK 19102test.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. 19103CHECKSUM TABLE t1 EXTENDED; 19104Table Checksum 19105test.t1 <some_value> 19106OPTIMIZE TABLE t1; 19107Table Op Msg_type Msg_text 19108test.t1 optimize status OK 19109test.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. 19110# check layout success: 1 19111REPAIR TABLE t1 EXTENDED; 19112Table Op Msg_type Msg_text 19113test.t1 repair status OK 19114test.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. 19115# check layout success: 1 19116TRUNCATE t1; 19117Warnings: 19118Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19119 19120# check TRUNCATE success: 1 19121# check layout success: 1 19122# End usability test (inc/partition_check.inc) 19123DROP TABLE t1; 19124CREATE TABLE t1 ( 19125f_int1 INTEGER, 19126f_int2 INTEGER, 19127f_char1 CHAR(20), 19128f_char2 CHAR(20), 19129f_charbig VARCHAR(1000) 19130, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 19131) 19132PARTITION BY LIST(MOD(f_int1,4)) 19133(PARTITION part_3 VALUES IN (-3) 19134INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 19135PARTITION part_2 VALUES IN (-2) 19136DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 19137PARTITION part_1 VALUES IN (-1) 19138DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 19139PARTITION part_N VALUES IN (NULL) 19140DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 19141PARTITION part0 VALUES IN (0) 19142INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 19143PARTITION part1 VALUES IN (1) 19144, 19145PARTITION part2 VALUES IN (2) 19146DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 19147PARTITION part3 VALUES IN (3) 19148DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 19149Warnings: 19150Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19151INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19152SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 19153Warnings: 19154Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19155# Start usability test (inc/partition_check.inc) 19156create_command 19157SHOW CREATE TABLE t1; 19158Table Create Table 19159t1 CREATE TABLE `t1` ( 19160 `f_int1` int(11) DEFAULT NULL, 19161 `f_int2` int(11) DEFAULT NULL, 19162 `f_char1` char(20) DEFAULT NULL, 19163 `f_char2` char(20) DEFAULT NULL, 19164 `f_charbig` varchar(1000) DEFAULT NULL, 19165 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 19166 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 19167) ENGINE=MyISAM DEFAULT CHARSET=latin1 19168/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 19169(PARTITION part_3 VALUES IN (-3) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 19170 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 19171 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 19172 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 19173 PARTITION part0 VALUES IN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 19174 PARTITION part1 VALUES IN (1) ENGINE = MyISAM, 19175 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 19176 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 19177 19178unified filelist 19179t1#P#part0.MYD 19180t1#P#part0.MYI 19181t1#P#part1.MYD 19182t1#P#part1.MYI 19183t1#P#part2.MYD 19184t1#P#part2.MYI 19185t1#P#part3.MYD 19186t1#P#part3.MYI 19187t1#P#part_1.MYD 19188t1#P#part_1.MYI 19189t1#P#part_2.MYD 19190t1#P#part_2.MYI 19191t1#P#part_3.MYD 19192t1#P#part_3.MYI 19193t1#P#part_N.MYD 19194t1#P#part_N.MYI 19195t1.frm 19196t1.par 19197t1#P#part2.MYD 19198t1#P#part3.MYD 19199t1#P#part_1.MYD 19200t1#P#part_2.MYD 19201t1#P#part_N.MYD 19202t1#P#part0.MYI 19203t1#P#part3.MYI 19204t1#P#part_1.MYI 19205t1#P#part_3.MYI 19206 19207# check prerequisites-1 success: 1 19208# check COUNT(*) success: 1 19209# check MIN/MAX(f_int1) success: 1 19210# check MIN/MAX(f_int2) success: 1 19211INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19212SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19213CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19214WHERE f_int1 IN (2,3); 19215ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19216# check prerequisites-3 success: 1 19217# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19218INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19219SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19220CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19221WHERE f_int1 IN (2,3); 19222DELETE FROM t1 WHERE f_charbig = 'delete me'; 19223INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19224SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19225CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19226WHERE f_int1 IN (2,3); 19227DELETE FROM t1 WHERE f_charbig = 'delete me'; 19228# check read via f_int1 success: 1 19229# check read via f_int2 success: 1 19230 19231# check multiple-1 success: 1 19232DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19233 19234# check multiple-2 success: 1 19235INSERT INTO t1 SELECT * FROM t0_template 19236WHERE MOD(f_int1,3) = 0; 19237 19238# check multiple-3 success: 1 19239UPDATE t1 SET f_int1 = f_int1 + @max_row 19240WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19241AND @max_row_div2 + @max_row_div4; 19242 19243# check multiple-4 success: 1 19244DELETE FROM t1 19245WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19246AND @max_row_div2 + @max_row_div4 + @max_row; 19247 19248# check multiple-5 success: 1 19249SELECT COUNT(*) INTO @try_count FROM t0_template 19250WHERE MOD(f_int1,3) = 0 19251AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19252SELECT COUNT(*) INTO @clash_count 19253FROM t1 INNER JOIN t0_template USING(f_int1) 19254WHERE MOD(f_int1,3) = 0 19255AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19256SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19257INSERT INTO t1 19258SET f_int1 = @cur_value , f_int2 = @cur_value, 19259f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19260f_charbig = '#SINGLE#'; 19261 19262# check single-1 success: 1 19263SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19264INSERT INTO t1 19265SET f_int1 = @cur_value , f_int2 = @cur_value, 19266f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19267f_charbig = '#SINGLE#'; 19268 19269# check single-2 success: 1 19270SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19271SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19272UPDATE t1 SET f_int1 = @cur_value2 19273WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19274 19275# check single-3 success: 1 19276SET @cur_value1= -1; 19277SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19278UPDATE t1 SET f_int1 = @cur_value1 19279WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19280 19281# check single-4 success: 1 19282SELECT MAX(f_int1) INTO @cur_value FROM t1; 19283DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19284 19285# check single-5 success: 1 19286DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19287 19288# check single-6 success: 1 19289INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19290 19291# check single-7 success: 1 19292DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19293DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19294INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19295f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19296f_charbig = '#NULL#'; 19297INSERT INTO t1 19298SET f_int1 = NULL , f_int2 = -@max_row, 19299f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19300f_charbig = '#NULL#'; 19301# check null success: 1 19302 19303# check null-1 success: 1 19304UPDATE t1 SET f_int1 = -@max_row 19305WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19306AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19307 19308# check null-2 success: 1 19309UPDATE t1 SET f_int1 = NULL 19310WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19311AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19312 19313# check null-3 success: 1 19314DELETE FROM t1 19315WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19316AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19317 19318# check null-4 success: 1 19319DELETE FROM t1 19320WHERE f_int1 = 0 AND f_int2 = 0 19321AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19322AND f_charbig = '#NULL#'; 19323INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19324SELECT f_int1, f_int1, '', '', 'was inserted' 19325 FROM t0_template source_tab 19326WHERE MOD(f_int1,3) = 0 19327AND f_int1 BETWEEN @max_row_div2 AND @max_row 19328ON DUPLICATE KEY 19329UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19330f_int2 = 2 * @max_row + source_tab.f_int1, 19331f_charbig = 'was updated'; 19332 19333# check unique-1-a success: 1 19334 19335# check unique-1-b success: 1 19336DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19338f_int2 = CAST(f_char1 AS SIGNED INT), 19339f_charbig = CONCAT('===',f_char1,'===') 19340WHERE f_charbig = 'was updated'; 19341REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19342SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19343 FROM t0_template source_tab 19344WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19345 19346# check replace success: 1 19347DELETE FROM t1 19348WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19349DELETE FROM t1 19350WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19351f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19352UPDATE t1 SET f_int2 = f_int1, 19353f_char1 = CAST(f_int1 AS CHAR), 19354f_char2 = CAST(f_int1 AS CHAR), 19355f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19356WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19357SET AUTOCOMMIT= 0; 19358INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19359SELECT f_int1, f_int1, '', '', 'was inserted' 19360FROM t0_template source_tab 19361WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19362 19363# check transactions-1 success: 1 19364COMMIT WORK; 19365 19366# check transactions-2 success: 1 19367ROLLBACK WORK; 19368 19369# check transactions-3 success: 1 19370DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19371COMMIT WORK; 19372ROLLBACK WORK; 19373 19374# check transactions-4 success: 1 19375INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19376SELECT f_int1, f_int1, '', '', 'was inserted' 19377FROM t0_template source_tab 19378WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19379 19380# check transactions-5 success: 1 19381ROLLBACK WORK; 19382Warnings: 19383Warning 1196 Some non-transactional changed tables couldn't be rolled back 19384 19385# check transactions-6 success: 1 19386# INFO: Storage engine used for t1 seems to be not transactional. 19387COMMIT; 19388 19389# check transactions-7 success: 1 19390DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19391COMMIT WORK; 19392SET @@session.sql_mode = 'traditional'; 19393Warnings: 19394Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19395SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19396INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19397SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19398'', '', 'was inserted' FROM t0_template 19399WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19400ERROR 22012: Division by 0 19401COMMIT; 19402 19403# check transactions-8 success: 1 19404# INFO: Storage engine used for t1 seems to be unable to revert 19405# changes made by the failing statement. 19406SET @@session.sql_mode = ''; 19407Warnings: 19408Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19409SET AUTOCOMMIT= 1; 19410DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19411COMMIT WORK; 19412UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19413 19414# check special-1 success: 1 19415UPDATE t1 SET f_charbig = ''; 19416 19417# check special-2 success: 1 19418UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19419INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19420SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19421WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19422INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19423SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19424'just inserted' FROM t0_template 19425WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19426CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19427BEGIN 19428UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19429f_charbig = 'updated by trigger' 19430 WHERE f_int1 = new.f_int1; 19431END| 19432INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19433SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19434WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19435 19436# check trigger-1 success: 1 19437DROP TRIGGER trg_1; 19438UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19439f_int2 = CAST(f_char1 AS SIGNED INT), 19440f_charbig = 'just inserted' 19441 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19442DELETE FROM t0_aux 19443WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19444INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19445SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19446'just inserted' FROM t0_template 19447WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19448CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 19449BEGIN 19450UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19451f_charbig = 'updated by trigger' 19452 WHERE f_int1 = new.f_int1; 19453END| 19454INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19455SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19456WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19457 19458# check trigger-2 success: 1 19459DROP TRIGGER trg_1; 19460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19461f_int2 = CAST(f_char1 AS SIGNED INT), 19462f_charbig = 'just inserted' 19463 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19464DELETE FROM t0_aux 19465WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19466INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19467SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19468'just inserted' FROM t0_template 19469WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19470CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19471BEGIN 19472UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19473f_charbig = 'updated by trigger' 19474 WHERE f_int1 = new.f_int1; 19475END| 19476UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19477WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19478 19479# check trigger-3 success: 1 19480DROP TRIGGER trg_1; 19481UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19482f_int2 = CAST(f_char1 AS SIGNED INT), 19483f_charbig = 'just inserted' 19484 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19485DELETE FROM t0_aux 19486WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19488SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19489'just inserted' FROM t0_template 19490WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19491CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19492BEGIN 19493UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19494f_charbig = 'updated by trigger' 19495 WHERE f_int1 = - old.f_int1; 19496END| 19497UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19498WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19499 19500# check trigger-4 success: 1 19501DROP TRIGGER trg_1; 19502UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19503f_int2 = CAST(f_char1 AS SIGNED INT), 19504f_charbig = 'just inserted' 19505 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19506DELETE FROM t0_aux 19507WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19508INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19509SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19510'just inserted' FROM t0_template 19511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19512CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19513BEGIN 19514UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19515f_charbig = 'updated by trigger' 19516 WHERE f_int1 = new.f_int1; 19517END| 19518UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19519WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19520 19521# check trigger-5 success: 1 19522DROP TRIGGER trg_1; 19523UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19524f_int2 = CAST(f_char1 AS SIGNED INT), 19525f_charbig = 'just inserted' 19526 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19527DELETE FROM t0_aux 19528WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19529INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19530SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19531'just inserted' FROM t0_template 19532WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19533CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19534BEGIN 19535UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19536f_charbig = 'updated by trigger' 19537 WHERE f_int1 = - old.f_int1; 19538END| 19539UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19540WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19541 19542# check trigger-6 success: 1 19543DROP TRIGGER trg_1; 19544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19545f_int2 = CAST(f_char1 AS SIGNED INT), 19546f_charbig = 'just inserted' 19547 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19548DELETE FROM t0_aux 19549WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19550INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19551SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19552'just inserted' FROM t0_template 19553WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19554CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19555BEGIN 19556UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19557f_charbig = 'updated by trigger' 19558 WHERE f_int1 = - old.f_int1; 19559END| 19560DELETE FROM t0_aux 19561WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19562 19563# check trigger-7 success: 1 19564DROP TRIGGER trg_1; 19565UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19566f_int2 = CAST(f_char1 AS SIGNED INT), 19567f_charbig = 'just inserted' 19568 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19569DELETE FROM t0_aux 19570WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19571INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19572SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19573'just inserted' FROM t0_template 19574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19575CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19576BEGIN 19577UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19578f_charbig = 'updated by trigger' 19579 WHERE f_int1 = - old.f_int1; 19580END| 19581DELETE FROM t0_aux 19582WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19583 19584# check trigger-8 success: 1 19585DROP TRIGGER trg_1; 19586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19587f_int2 = CAST(f_char1 AS SIGNED INT), 19588f_charbig = 'just inserted' 19589 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19590DELETE FROM t0_aux 19591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19592DELETE FROM t1 19593WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19594CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19595BEGIN 19596SET new.f_int1 = old.f_int1 + @max_row, 19597new.f_int2 = old.f_int2 - @max_row, 19598new.f_charbig = '####updated per update trigger####'; 19599END| 19600UPDATE t1 19601SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19602f_charbig = '####updated per update statement itself####'; 19603Warnings: 19604Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19605 19606# check trigger-9 success: 1 19607DROP TRIGGER trg_2; 19608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19609f_int2 = CAST(f_char1 AS SIGNED INT), 19610f_charbig = CONCAT('===',f_char1,'==='); 19611Warnings: 19612Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19613CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19614BEGIN 19615SET new.f_int1 = new.f_int1 + @max_row, 19616new.f_int2 = new.f_int2 - @max_row, 19617new.f_charbig = '####updated per update trigger####'; 19618END| 19619UPDATE t1 19620SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19621f_charbig = '####updated per update statement itself####'; 19622Warnings: 19623Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19624 19625# check trigger-10 success: 1 19626DROP TRIGGER trg_2; 19627UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19628f_int2 = CAST(f_char1 AS SIGNED INT), 19629f_charbig = CONCAT('===',f_char1,'==='); 19630Warnings: 19631Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19632CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19633BEGIN 19634SET new.f_int1 = @my_max1 + @counter, 19635new.f_int2 = @my_min2 - @counter, 19636new.f_charbig = '####updated per insert trigger####'; 19637SET @counter = @counter + 1; 19638END| 19639SET @counter = 1; 19640SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19641Warnings: 19642Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19643INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19644SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19645CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19647ORDER BY f_int1; 19648DROP TRIGGER trg_3; 19649 19650# check trigger-11 success: 1 19651Warnings: 19652Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19653DELETE FROM t1 19654WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19655AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19656AND f_charbig = '####updated per insert trigger####'; 19657CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19658BEGIN 19659SET new.f_int1 = @my_max1 + @counter, 19660new.f_int2 = @my_min2 - @counter, 19661new.f_charbig = '####updated per insert trigger####'; 19662SET @counter = @counter + 1; 19663END| 19664SET @counter = 1; 19665SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19666Warnings: 19667Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19668INSERT INTO t1 (f_char1, f_char2, f_charbig) 19669SELECT CAST(f_int1 AS CHAR), 19670CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19672ORDER BY f_int1; 19673DROP TRIGGER trg_3; 19674 19675# check trigger-12 success: 1 19676Warnings: 19677Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19678DELETE FROM t1 19679WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19680AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19681AND f_charbig = '####updated per insert trigger####'; 19682ANALYZE TABLE t1; 19683Table Op Msg_type Msg_text 19684test.t1 analyze status OK 19685test.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. 19686CHECK TABLE t1 EXTENDED; 19687Table Op Msg_type Msg_text 19688test.t1 check status OK 19689test.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. 19690CHECKSUM TABLE t1 EXTENDED; 19691Table Checksum 19692test.t1 <some_value> 19693OPTIMIZE TABLE t1; 19694Table Op Msg_type Msg_text 19695test.t1 optimize status OK 19696test.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. 19697# check layout success: 1 19698REPAIR TABLE t1 EXTENDED; 19699Table Op Msg_type Msg_text 19700test.t1 repair status OK 19701test.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. 19702# check layout success: 1 19703TRUNCATE t1; 19704Warnings: 19705Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19706 19707# check TRUNCATE success: 1 19708# check layout success: 1 19709# End usability test (inc/partition_check.inc) 19710DROP TABLE t1; 19711CREATE TABLE t1 ( 19712f_int1 INTEGER, 19713f_int2 INTEGER, 19714f_char1 CHAR(20), 19715f_char2 CHAR(20), 19716f_charbig VARCHAR(1000) 19717, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 19718) 19719PARTITION BY RANGE(f_int1) 19720(PARTITION parta VALUES LESS THAN (0) 19721INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 19722PARTITION partb VALUES LESS THAN (5) 19723DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 19724PARTITION partc VALUES LESS THAN (10) 19725DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 19726INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 19727PARTITION partd VALUES LESS THAN (10 + 5), 19728PARTITION parte VALUES LESS THAN (20) 19729DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 19730PARTITION partf VALUES LESS THAN (2147483646) 19731INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 19732Warnings: 19733Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19734INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19735SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 19736Warnings: 19737Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 19738# Start usability test (inc/partition_check.inc) 19739create_command 19740SHOW CREATE TABLE t1; 19741Table Create Table 19742t1 CREATE TABLE `t1` ( 19743 `f_int1` int(11) DEFAULT NULL, 19744 `f_int2` int(11) DEFAULT NULL, 19745 `f_char1` char(20) DEFAULT NULL, 19746 `f_char2` char(20) DEFAULT NULL, 19747 `f_charbig` varchar(1000) DEFAULT NULL, 19748 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 19749 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 19750) ENGINE=MyISAM DEFAULT CHARSET=latin1 19751/*!50100 PARTITION BY RANGE (f_int1) 19752(PARTITION parta VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 19753 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 19754 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 19755 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, 19756 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 19757 PARTITION partf VALUES LESS THAN (2147483646) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 19758 19759unified filelist 19760t1#P#parta.MYD 19761t1#P#parta.MYI 19762t1#P#partb.MYD 19763t1#P#partb.MYI 19764t1#P#partc.MYD 19765t1#P#partc.MYI 19766t1#P#partd.MYD 19767t1#P#partd.MYI 19768t1#P#parte.MYD 19769t1#P#parte.MYI 19770t1#P#partf.MYD 19771t1#P#partf.MYI 19772t1.frm 19773t1.par 19774t1#P#partb.MYD 19775t1#P#partc.MYD 19776t1#P#parte.MYD 19777t1#P#parta.MYI 19778t1#P#partc.MYI 19779t1#P#partf.MYI 19780 19781# check prerequisites-1 success: 1 19782# check COUNT(*) success: 1 19783# check MIN/MAX(f_int1) success: 1 19784# check MIN/MAX(f_int2) success: 1 19785INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19786SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19787CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19788WHERE f_int1 IN (2,3); 19789ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19790# check prerequisites-3 success: 1 19791# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19792INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19793SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19794CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19795WHERE f_int1 IN (2,3); 19796DELETE FROM t1 WHERE f_charbig = 'delete me'; 19797INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19798SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19799CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19800WHERE f_int1 IN (2,3); 19801DELETE FROM t1 WHERE f_charbig = 'delete me'; 19802# check read via f_int1 success: 1 19803# check read via f_int2 success: 1 19804 19805# check multiple-1 success: 1 19806DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19807 19808# check multiple-2 success: 1 19809INSERT INTO t1 SELECT * FROM t0_template 19810WHERE MOD(f_int1,3) = 0; 19811 19812# check multiple-3 success: 1 19813UPDATE t1 SET f_int1 = f_int1 + @max_row 19814WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19815AND @max_row_div2 + @max_row_div4; 19816 19817# check multiple-4 success: 1 19818DELETE FROM t1 19819WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19820AND @max_row_div2 + @max_row_div4 + @max_row; 19821 19822# check multiple-5 success: 1 19823SELECT COUNT(*) INTO @try_count FROM t0_template 19824WHERE MOD(f_int1,3) = 0 19825AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19826SELECT COUNT(*) INTO @clash_count 19827FROM t1 INNER JOIN t0_template USING(f_int1) 19828WHERE MOD(f_int1,3) = 0 19829AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19830SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19831INSERT INTO t1 19832SET f_int1 = @cur_value , f_int2 = @cur_value, 19833f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19834f_charbig = '#SINGLE#'; 19835 19836# check single-1 success: 1 19837SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19838INSERT INTO t1 19839SET f_int1 = @cur_value , f_int2 = @cur_value, 19840f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19841f_charbig = '#SINGLE#'; 19842 19843# check single-2 success: 1 19844SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19845SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19846UPDATE t1 SET f_int1 = @cur_value2 19847WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19848 19849# check single-3 success: 1 19850SET @cur_value1= -1; 19851SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19852UPDATE t1 SET f_int1 = @cur_value1 19853WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19854 19855# check single-4 success: 1 19856SELECT MAX(f_int1) INTO @cur_value FROM t1; 19857DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19858 19859# check single-5 success: 1 19860DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19861 19862# check single-6 success: 1 19863INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19864ERROR HY000: Table has no partition for value 2147483647 19865DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19866INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19867f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19868f_charbig = '#NULL#'; 19869INSERT INTO t1 19870SET f_int1 = NULL , f_int2 = -@max_row, 19871f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19872f_charbig = '#NULL#'; 19873# check null success: 1 19874 19875# check null-1 success: 1 19876UPDATE t1 SET f_int1 = -@max_row 19877WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19878AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19879 19880# check null-2 success: 1 19881UPDATE t1 SET f_int1 = NULL 19882WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19883AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19884 19885# check null-3 success: 1 19886DELETE FROM t1 19887WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19888AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19889 19890# check null-4 success: 1 19891DELETE FROM t1 19892WHERE f_int1 = 0 AND f_int2 = 0 19893AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19894AND f_charbig = '#NULL#'; 19895INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19896SELECT f_int1, f_int1, '', '', 'was inserted' 19897 FROM t0_template source_tab 19898WHERE MOD(f_int1,3) = 0 19899AND f_int1 BETWEEN @max_row_div2 AND @max_row 19900ON DUPLICATE KEY 19901UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19902f_int2 = 2 * @max_row + source_tab.f_int1, 19903f_charbig = 'was updated'; 19904 19905# check unique-1-a success: 1 19906 19907# check unique-1-b success: 1 19908DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19909UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19910f_int2 = CAST(f_char1 AS SIGNED INT), 19911f_charbig = CONCAT('===',f_char1,'===') 19912WHERE f_charbig = 'was updated'; 19913REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19914SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19915 FROM t0_template source_tab 19916WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19917 19918# check replace success: 1 19919DELETE FROM t1 19920WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19921DELETE FROM t1 19922WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19923f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19924UPDATE t1 SET f_int2 = f_int1, 19925f_char1 = CAST(f_int1 AS CHAR), 19926f_char2 = CAST(f_int1 AS CHAR), 19927f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19928WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19929SET AUTOCOMMIT= 0; 19930INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19931SELECT f_int1, f_int1, '', '', 'was inserted' 19932FROM t0_template source_tab 19933WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19934 19935# check transactions-1 success: 1 19936COMMIT WORK; 19937 19938# check transactions-2 success: 1 19939ROLLBACK WORK; 19940 19941# check transactions-3 success: 1 19942DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19943COMMIT WORK; 19944ROLLBACK WORK; 19945 19946# check transactions-4 success: 1 19947INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19948SELECT f_int1, f_int1, '', '', 'was inserted' 19949FROM t0_template source_tab 19950WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19951 19952# check transactions-5 success: 1 19953ROLLBACK WORK; 19954Warnings: 19955Warning 1196 Some non-transactional changed tables couldn't be rolled back 19956 19957# check transactions-6 success: 1 19958# INFO: Storage engine used for t1 seems to be not transactional. 19959COMMIT; 19960 19961# check transactions-7 success: 1 19962DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19963COMMIT WORK; 19964SET @@session.sql_mode = 'traditional'; 19965Warnings: 19966Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19967SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19968INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19969SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19970'', '', 'was inserted' FROM t0_template 19971WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19972ERROR 22012: Division by 0 19973COMMIT; 19974 19975# check transactions-8 success: 1 19976# INFO: Storage engine used for t1 seems to be unable to revert 19977# changes made by the failing statement. 19978SET @@session.sql_mode = ''; 19979Warnings: 19980Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19981SET AUTOCOMMIT= 1; 19982DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19983COMMIT WORK; 19984UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19985 19986# check special-1 success: 1 19987UPDATE t1 SET f_charbig = ''; 19988 19989# check special-2 success: 1 19990UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19991INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19992SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19993WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19996'just inserted' FROM t0_template 19997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19998CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19999BEGIN 20000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20001f_charbig = 'updated by trigger' 20002 WHERE f_int1 = new.f_int1; 20003END| 20004INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20005SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20006WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20007 20008# check trigger-1 success: 1 20009DROP TRIGGER trg_1; 20010UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20011f_int2 = CAST(f_char1 AS SIGNED INT), 20012f_charbig = 'just inserted' 20013 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20014DELETE FROM t0_aux 20015WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20016INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20017SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20018'just inserted' FROM t0_template 20019WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20020CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20021BEGIN 20022UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20023f_charbig = 'updated by trigger' 20024 WHERE f_int1 = new.f_int1; 20025END| 20026INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20027SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20028WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20029 20030# check trigger-2 success: 1 20031DROP TRIGGER trg_1; 20032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20033f_int2 = CAST(f_char1 AS SIGNED INT), 20034f_charbig = 'just inserted' 20035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20036DELETE FROM t0_aux 20037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20040'just inserted' FROM t0_template 20041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20042CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20043BEGIN 20044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20045f_charbig = 'updated by trigger' 20046 WHERE f_int1 = new.f_int1; 20047END| 20048UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20050 20051# check trigger-3 success: 1 20052DROP TRIGGER trg_1; 20053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20054f_int2 = CAST(f_char1 AS SIGNED INT), 20055f_charbig = 'just inserted' 20056 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20057DELETE FROM t0_aux 20058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20060SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20061'just inserted' FROM t0_template 20062WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20063CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20064BEGIN 20065UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20066f_charbig = 'updated by trigger' 20067 WHERE f_int1 = - old.f_int1; 20068END| 20069UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20070WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20071 20072# check trigger-4 success: 1 20073DROP TRIGGER trg_1; 20074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20075f_int2 = CAST(f_char1 AS SIGNED INT), 20076f_charbig = 'just inserted' 20077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20078DELETE FROM t0_aux 20079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20082'just inserted' FROM t0_template 20083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20084CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20085BEGIN 20086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20087f_charbig = 'updated by trigger' 20088 WHERE f_int1 = new.f_int1; 20089END| 20090UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20092 20093# check trigger-5 success: 1 20094DROP TRIGGER trg_1; 20095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20096f_int2 = CAST(f_char1 AS SIGNED INT), 20097f_charbig = 'just inserted' 20098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20099DELETE FROM t0_aux 20100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20103'just inserted' FROM t0_template 20104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20105CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20106BEGIN 20107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20108f_charbig = 'updated by trigger' 20109 WHERE f_int1 = - old.f_int1; 20110END| 20111UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20113 20114# check trigger-6 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 BEFORE DELETE 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 = - old.f_int1; 20131END| 20132DELETE FROM t0_aux 20133WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20134 20135# check trigger-7 success: 1 20136DROP TRIGGER trg_1; 20137UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20138f_int2 = CAST(f_char1 AS SIGNED INT), 20139f_charbig = 'just inserted' 20140 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20141DELETE FROM t0_aux 20142WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20143INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20144SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20145'just inserted' FROM t0_template 20146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20147CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20148BEGIN 20149UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20150f_charbig = 'updated by trigger' 20151 WHERE f_int1 = - old.f_int1; 20152END| 20153DELETE FROM t0_aux 20154WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20155 20156# check trigger-8 success: 1 20157DROP TRIGGER trg_1; 20158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20159f_int2 = CAST(f_char1 AS SIGNED INT), 20160f_charbig = 'just inserted' 20161 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20162DELETE FROM t0_aux 20163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20164DELETE FROM t1 20165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20166CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20167BEGIN 20168SET new.f_int1 = old.f_int1 + @max_row, 20169new.f_int2 = old.f_int2 - @max_row, 20170new.f_charbig = '####updated per update trigger####'; 20171END| 20172UPDATE t1 20173SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20174f_charbig = '####updated per update statement itself####'; 20175Warnings: 20176Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20177 20178# check trigger-9 success: 1 20179DROP TRIGGER trg_2; 20180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20181f_int2 = CAST(f_char1 AS SIGNED INT), 20182f_charbig = CONCAT('===',f_char1,'==='); 20183Warnings: 20184Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20185CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20186BEGIN 20187SET new.f_int1 = new.f_int1 + @max_row, 20188new.f_int2 = new.f_int2 - @max_row, 20189new.f_charbig = '####updated per update trigger####'; 20190END| 20191UPDATE t1 20192SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20193f_charbig = '####updated per update statement itself####'; 20194Warnings: 20195Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20196 20197# check trigger-10 success: 1 20198DROP TRIGGER trg_2; 20199UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20200f_int2 = CAST(f_char1 AS SIGNED INT), 20201f_charbig = CONCAT('===',f_char1,'==='); 20202Warnings: 20203Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20204CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20205BEGIN 20206SET new.f_int1 = @my_max1 + @counter, 20207new.f_int2 = @my_min2 - @counter, 20208new.f_charbig = '####updated per insert trigger####'; 20209SET @counter = @counter + 1; 20210END| 20211SET @counter = 1; 20212SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20213Warnings: 20214Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20215INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20216SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20217CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20219ORDER BY f_int1; 20220DROP TRIGGER trg_3; 20221 20222# check trigger-11 success: 1 20223Warnings: 20224Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20225DELETE FROM t1 20226WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20227AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20228AND f_charbig = '####updated per insert trigger####'; 20229CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20230BEGIN 20231SET new.f_int1 = @my_max1 + @counter, 20232new.f_int2 = @my_min2 - @counter, 20233new.f_charbig = '####updated per insert trigger####'; 20234SET @counter = @counter + 1; 20235END| 20236SET @counter = 1; 20237SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20238Warnings: 20239Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20240INSERT INTO t1 (f_char1, f_char2, f_charbig) 20241SELECT CAST(f_int1 AS CHAR), 20242CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20243WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20244ORDER BY f_int1; 20245DROP TRIGGER trg_3; 20246 20247# check trigger-12 success: 1 20248Warnings: 20249Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20250DELETE FROM t1 20251WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20252AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20253AND f_charbig = '####updated per insert trigger####'; 20254ANALYZE TABLE t1; 20255Table Op Msg_type Msg_text 20256test.t1 analyze status OK 20257test.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. 20258CHECK TABLE t1 EXTENDED; 20259Table Op Msg_type Msg_text 20260test.t1 check status OK 20261test.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. 20262CHECKSUM TABLE t1 EXTENDED; 20263Table Checksum 20264test.t1 <some_value> 20265OPTIMIZE TABLE t1; 20266Table Op Msg_type Msg_text 20267test.t1 optimize status OK 20268test.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. 20269# check layout success: 1 20270REPAIR TABLE t1 EXTENDED; 20271Table Op Msg_type Msg_text 20272test.t1 repair status OK 20273test.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. 20274# check layout success: 1 20275TRUNCATE t1; 20276Warnings: 20277Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20278 20279# check TRUNCATE success: 1 20280# check layout success: 1 20281# End usability test (inc/partition_check.inc) 20282DROP TABLE t1; 20283CREATE TABLE t1 ( 20284f_int1 INTEGER, 20285f_int2 INTEGER, 20286f_char1 CHAR(20), 20287f_char2 CHAR(20), 20288f_charbig VARCHAR(1000) 20289, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 20290) 20291PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 20292(PARTITION parta VALUES LESS THAN (0) 20293INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', 20294PARTITION partb VALUES LESS THAN (5) 20295DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', 20296PARTITION partc VALUES LESS THAN (10), 20297PARTITION partd VALUES LESS THAN (2147483646) 20298DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 20299INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'); 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. 20302INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20303SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 20304Warnings: 20305Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20306# Start usability test (inc/partition_check.inc) 20307create_command 20308SHOW CREATE TABLE t1; 20309Table Create Table 20310t1 CREATE TABLE `t1` ( 20311 `f_int1` int(11) DEFAULT NULL, 20312 `f_int2` int(11) DEFAULT NULL, 20313 `f_char1` char(20) DEFAULT NULL, 20314 `f_char2` char(20) DEFAULT NULL, 20315 `f_charbig` varchar(1000) DEFAULT NULL, 20316 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 20317 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 20318) ENGINE=MyISAM DEFAULT CHARSET=latin1 20319/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 20320SUBPARTITION BY HASH (f_int1) 20321SUBPARTITIONS 2 20322(PARTITION parta VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 20323 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 20324 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, 20325 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */ 20326 20327unified filelist 20328t1#P#parta#SP#partasp0.MYD 20329t1#P#parta#SP#partasp0.MYI 20330t1#P#parta#SP#partasp1.MYD 20331t1#P#parta#SP#partasp1.MYI 20332t1#P#partb#SP#partbsp0.MYD 20333t1#P#partb#SP#partbsp0.MYI 20334t1#P#partb#SP#partbsp1.MYD 20335t1#P#partb#SP#partbsp1.MYI 20336t1#P#partc#SP#partcsp0.MYD 20337t1#P#partc#SP#partcsp0.MYI 20338t1#P#partc#SP#partcsp1.MYD 20339t1#P#partc#SP#partcsp1.MYI 20340t1#P#partd#SP#partdsp0.MYD 20341t1#P#partd#SP#partdsp0.MYI 20342t1#P#partd#SP#partdsp1.MYD 20343t1#P#partd#SP#partdsp1.MYI 20344t1.frm 20345t1.par 20346t1#P#partb#SP#partbsp0.MYD 20347t1#P#partb#SP#partbsp1.MYD 20348t1#P#partd#SP#partdsp0.MYD 20349t1#P#partd#SP#partdsp1.MYD 20350t1#P#parta#SP#partasp0.MYI 20351t1#P#parta#SP#partasp1.MYI 20352t1#P#partd#SP#partdsp0.MYI 20353t1#P#partd#SP#partdsp1.MYI 20354 20355# check prerequisites-1 success: 1 20356# check COUNT(*) success: 1 20357# check MIN/MAX(f_int1) success: 1 20358# check MIN/MAX(f_int2) success: 1 20359INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20360SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20361CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 20362WHERE f_int1 IN (2,3); 20363ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 20364# check prerequisites-3 success: 1 20365# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 20366INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20367SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20368CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20369WHERE f_int1 IN (2,3); 20370DELETE FROM t1 WHERE f_charbig = 'delete me'; 20371INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20372SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20373CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20374WHERE f_int1 IN (2,3); 20375DELETE FROM t1 WHERE f_charbig = 'delete me'; 20376# check read via f_int1 success: 1 20377# check read via f_int2 success: 1 20378 20379# check multiple-1 success: 1 20380DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 20381 20382# check multiple-2 success: 1 20383INSERT INTO t1 SELECT * FROM t0_template 20384WHERE MOD(f_int1,3) = 0; 20385 20386# check multiple-3 success: 1 20387UPDATE t1 SET f_int1 = f_int1 + @max_row 20388WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 20389AND @max_row_div2 + @max_row_div4; 20390 20391# check multiple-4 success: 1 20392DELETE FROM t1 20393WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 20394AND @max_row_div2 + @max_row_div4 + @max_row; 20395 20396# check multiple-5 success: 1 20397SELECT COUNT(*) INTO @try_count FROM t0_template 20398WHERE MOD(f_int1,3) = 0 20399AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20400SELECT COUNT(*) INTO @clash_count 20401FROM t1 INNER JOIN t0_template USING(f_int1) 20402WHERE MOD(f_int1,3) = 0 20403AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20404SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 20405INSERT INTO t1 20406SET f_int1 = @cur_value , f_int2 = @cur_value, 20407f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20408f_charbig = '#SINGLE#'; 20409 20410# check single-1 success: 1 20411SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 20412INSERT INTO t1 20413SET f_int1 = @cur_value , f_int2 = @cur_value, 20414f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20415f_charbig = '#SINGLE#'; 20416 20417# check single-2 success: 1 20418SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 20419SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 20420UPDATE t1 SET f_int1 = @cur_value2 20421WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 20422 20423# check single-3 success: 1 20424SET @cur_value1= -1; 20425SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 20426UPDATE t1 SET f_int1 = @cur_value1 20427WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 20428 20429# check single-4 success: 1 20430SELECT MAX(f_int1) INTO @cur_value FROM t1; 20431DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 20432 20433# check single-5 success: 1 20434DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 20435 20436# check single-6 success: 1 20437INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 20438 20439# check single-7 success: 1 20440DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 20441DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 20442INSERT t1 SET f_int1 = 0 , f_int2 = 0, 20443f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 20444f_charbig = '#NULL#'; 20445INSERT INTO t1 20446SET f_int1 = NULL , f_int2 = -@max_row, 20447f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 20448f_charbig = '#NULL#'; 20449# check null success: 1 20450 20451# check null-1 success: 1 20452UPDATE t1 SET f_int1 = -@max_row 20453WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20454AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20455 20456# check null-2 success: 1 20457UPDATE t1 SET f_int1 = NULL 20458WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20459AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20460 20461# check null-3 success: 1 20462DELETE FROM t1 20463WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 20464AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 20465 20466# check null-4 success: 1 20467DELETE FROM t1 20468WHERE f_int1 = 0 AND f_int2 = 0 20469AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 20470AND f_charbig = '#NULL#'; 20471INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20472SELECT f_int1, f_int1, '', '', 'was inserted' 20473 FROM t0_template source_tab 20474WHERE MOD(f_int1,3) = 0 20475AND f_int1 BETWEEN @max_row_div2 AND @max_row 20476ON DUPLICATE KEY 20477UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 20478f_int2 = 2 * @max_row + source_tab.f_int1, 20479f_charbig = 'was updated'; 20480 20481# check unique-1-a success: 1 20482 20483# check unique-1-b success: 1 20484DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20485UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20486f_int2 = CAST(f_char1 AS SIGNED INT), 20487f_charbig = CONCAT('===',f_char1,'===') 20488WHERE f_charbig = 'was updated'; 20489REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20490SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 20491 FROM t0_template source_tab 20492WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20493 20494# check replace success: 1 20495DELETE FROM t1 20496WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 20497DELETE FROM t1 20498WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 20499f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 20500UPDATE t1 SET f_int2 = f_int1, 20501f_char1 = CAST(f_int1 AS CHAR), 20502f_char2 = CAST(f_int1 AS CHAR), 20503f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 20504WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 20505SET AUTOCOMMIT= 0; 20506INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20507SELECT f_int1, f_int1, '', '', 'was inserted' 20508FROM t0_template source_tab 20509WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20510 20511# check transactions-1 success: 1 20512COMMIT WORK; 20513 20514# check transactions-2 success: 1 20515ROLLBACK WORK; 20516 20517# check transactions-3 success: 1 20518DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20519COMMIT WORK; 20520ROLLBACK WORK; 20521 20522# check transactions-4 success: 1 20523INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20524SELECT f_int1, f_int1, '', '', 'was inserted' 20525FROM t0_template source_tab 20526WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20527 20528# check transactions-5 success: 1 20529ROLLBACK WORK; 20530Warnings: 20531Warning 1196 Some non-transactional changed tables couldn't be rolled back 20532 20533# check transactions-6 success: 1 20534# INFO: Storage engine used for t1 seems to be not transactional. 20535COMMIT; 20536 20537# check transactions-7 success: 1 20538DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20539COMMIT WORK; 20540SET @@session.sql_mode = 'traditional'; 20541Warnings: 20542Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20543SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 20544INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20545SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 20546'', '', 'was inserted' FROM t0_template 20547WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 20548ERROR 22012: Division by 0 20549COMMIT; 20550 20551# check transactions-8 success: 1 20552# INFO: Storage engine used for t1 seems to be unable to revert 20553# changes made by the failing statement. 20554SET @@session.sql_mode = ''; 20555Warnings: 20556Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 20557SET AUTOCOMMIT= 1; 20558DELETE FROM t1 WHERE f_charbig = 'was inserted'; 20559COMMIT WORK; 20560UPDATE t1 SET f_charbig = REPEAT('b', 1000); 20561 20562# check special-1 success: 1 20563UPDATE t1 SET f_charbig = ''; 20564 20565# check special-2 success: 1 20566UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 20567INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20568SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 20569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20570INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20571SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20572'just inserted' FROM t0_template 20573WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20574CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 20575BEGIN 20576UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20577f_charbig = 'updated by trigger' 20578 WHERE f_int1 = new.f_int1; 20579END| 20580INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20581SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20583 20584# check trigger-1 success: 1 20585DROP TRIGGER trg_1; 20586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20587f_int2 = CAST(f_char1 AS SIGNED INT), 20588f_charbig = 'just inserted' 20589 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20590DELETE FROM t0_aux 20591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20594'just inserted' FROM t0_template 20595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20596CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20597BEGIN 20598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20599f_charbig = 'updated by trigger' 20600 WHERE f_int1 = new.f_int1; 20601END| 20602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20603SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20605 20606# check trigger-2 success: 1 20607DROP TRIGGER trg_1; 20608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20609f_int2 = CAST(f_char1 AS SIGNED INT), 20610f_charbig = 'just inserted' 20611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20612DELETE FROM t0_aux 20613WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20615SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20616'just inserted' FROM t0_template 20617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20618CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20619BEGIN 20620UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20621f_charbig = 'updated by trigger' 20622 WHERE f_int1 = new.f_int1; 20623END| 20624UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20625WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20626 20627# check trigger-3 success: 1 20628DROP TRIGGER trg_1; 20629UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20630f_int2 = CAST(f_char1 AS SIGNED INT), 20631f_charbig = 'just inserted' 20632 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20633DELETE FROM t0_aux 20634WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20635INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20636SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20637'just inserted' FROM t0_template 20638WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20639CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20640BEGIN 20641UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20642f_charbig = 'updated by trigger' 20643 WHERE f_int1 = - old.f_int1; 20644END| 20645UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20646WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20647 20648# check trigger-4 success: 1 20649DROP TRIGGER trg_1; 20650UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20651f_int2 = CAST(f_char1 AS SIGNED INT), 20652f_charbig = 'just inserted' 20653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20654DELETE FROM t0_aux 20655WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20656INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20657SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20658'just inserted' FROM t0_template 20659WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20660CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20661BEGIN 20662UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20663f_charbig = 'updated by trigger' 20664 WHERE f_int1 = new.f_int1; 20665END| 20666UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20667WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20668 20669# check trigger-5 success: 1 20670DROP TRIGGER trg_1; 20671UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20672f_int2 = CAST(f_char1 AS SIGNED INT), 20673f_charbig = 'just inserted' 20674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20675DELETE FROM t0_aux 20676WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20677INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20678SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20679'just inserted' FROM t0_template 20680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20681CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20682BEGIN 20683UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20684f_charbig = 'updated by trigger' 20685 WHERE f_int1 = - old.f_int1; 20686END| 20687UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20688WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20689 20690# check trigger-6 success: 1 20691DROP TRIGGER trg_1; 20692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20693f_int2 = CAST(f_char1 AS SIGNED INT), 20694f_charbig = 'just inserted' 20695 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20696DELETE FROM t0_aux 20697WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20698INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20699SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20700'just inserted' FROM t0_template 20701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20702CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20703BEGIN 20704UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20705f_charbig = 'updated by trigger' 20706 WHERE f_int1 = - old.f_int1; 20707END| 20708DELETE FROM t0_aux 20709WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20710 20711# check trigger-7 success: 1 20712DROP TRIGGER trg_1; 20713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20714f_int2 = CAST(f_char1 AS SIGNED INT), 20715f_charbig = 'just inserted' 20716 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20717DELETE FROM t0_aux 20718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20721'just inserted' FROM t0_template 20722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20723CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20724BEGIN 20725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20726f_charbig = 'updated by trigger' 20727 WHERE f_int1 = - old.f_int1; 20728END| 20729DELETE FROM t0_aux 20730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20731 20732# check trigger-8 success: 1 20733DROP TRIGGER trg_1; 20734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20735f_int2 = CAST(f_char1 AS SIGNED INT), 20736f_charbig = 'just inserted' 20737 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20738DELETE FROM t0_aux 20739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20740DELETE FROM t1 20741WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20742CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20743BEGIN 20744SET new.f_int1 = old.f_int1 + @max_row, 20745new.f_int2 = old.f_int2 - @max_row, 20746new.f_charbig = '####updated per update trigger####'; 20747END| 20748UPDATE t1 20749SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20750f_charbig = '####updated per update statement itself####'; 20751Warnings: 20752Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20753 20754# check trigger-9 success: 1 20755DROP TRIGGER trg_2; 20756UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20757f_int2 = CAST(f_char1 AS SIGNED INT), 20758f_charbig = CONCAT('===',f_char1,'==='); 20759Warnings: 20760Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20761CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20762BEGIN 20763SET new.f_int1 = new.f_int1 + @max_row, 20764new.f_int2 = new.f_int2 - @max_row, 20765new.f_charbig = '####updated per update trigger####'; 20766END| 20767UPDATE t1 20768SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20769f_charbig = '####updated per update statement itself####'; 20770Warnings: 20771Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20772 20773# check trigger-10 success: 1 20774DROP TRIGGER trg_2; 20775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20776f_int2 = CAST(f_char1 AS SIGNED INT), 20777f_charbig = CONCAT('===',f_char1,'==='); 20778Warnings: 20779Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20780CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20781BEGIN 20782SET new.f_int1 = @my_max1 + @counter, 20783new.f_int2 = @my_min2 - @counter, 20784new.f_charbig = '####updated per insert trigger####'; 20785SET @counter = @counter + 1; 20786END| 20787SET @counter = 1; 20788SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20789Warnings: 20790Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20791INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20792SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20793CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20795ORDER BY f_int1; 20796DROP TRIGGER trg_3; 20797 20798# check trigger-11 success: 1 20799Warnings: 20800Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20801DELETE FROM t1 20802WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20803AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20804AND f_charbig = '####updated per insert trigger####'; 20805CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20806BEGIN 20807SET new.f_int1 = @my_max1 + @counter, 20808new.f_int2 = @my_min2 - @counter, 20809new.f_charbig = '####updated per insert trigger####'; 20810SET @counter = @counter + 1; 20811END| 20812SET @counter = 1; 20813SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20814Warnings: 20815Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20816INSERT INTO t1 (f_char1, f_char2, f_charbig) 20817SELECT CAST(f_int1 AS CHAR), 20818CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20819WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20820ORDER BY f_int1; 20821DROP TRIGGER trg_3; 20822 20823# check trigger-12 success: 1 20824Warnings: 20825Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20826DELETE FROM t1 20827WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20828AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20829AND f_charbig = '####updated per insert trigger####'; 20830ANALYZE TABLE t1; 20831Table Op Msg_type Msg_text 20832test.t1 analyze status OK 20833test.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. 20834CHECK TABLE t1 EXTENDED; 20835Table Op Msg_type Msg_text 20836test.t1 check status OK 20837test.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. 20838CHECKSUM TABLE t1 EXTENDED; 20839Table Checksum 20840test.t1 <some_value> 20841OPTIMIZE TABLE t1; 20842Table Op Msg_type Msg_text 20843test.t1 optimize status OK 20844test.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. 20845# check layout success: 1 20846REPAIR TABLE t1 EXTENDED; 20847Table Op Msg_type Msg_text 20848test.t1 repair status OK 20849test.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. 20850# check layout success: 1 20851TRUNCATE t1; 20852Warnings: 20853Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20854 20855# check TRUNCATE success: 1 20856# check layout success: 1 20857# End usability test (inc/partition_check.inc) 20858DROP TABLE t1; 20859CREATE TABLE t1 ( 20860f_int1 INTEGER, 20861f_int2 INTEGER, 20862f_char1 CHAR(20), 20863f_char2 CHAR(20), 20864f_charbig VARCHAR(1000) 20865, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 20866) 20867/*!50100 PARTITION BY RANGE(f_int1) 20868SUBPARTITION BY KEY(f_int1) 20869(PARTITION part1 VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 20870(SUBPARTITION subpart11, 20871SUBPARTITION subpart12), 20872PARTITION part2 VALUES LESS THAN (5) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 20873(SUBPARTITION subpart21, 20874SUBPARTITION subpart22), 20875PARTITION part3 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' 20876(SUBPARTITION subpart31, 20877SUBPARTITION subpart32), 20878PARTITION part4 VALUES LESS THAN (2147483646) 20879(SUBPARTITION subpart41, 20880SUBPARTITION subpart42)) */; 20881Warnings: 20882Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20883INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 20884SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 20885Warnings: 20886Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 20887# Start usability test (inc/partition_check.inc) 20888create_command 20889SHOW CREATE TABLE t1; 20890Table Create Table 20891t1 CREATE TABLE `t1` ( 20892 `f_int1` int(11) DEFAULT NULL, 20893 `f_int2` int(11) DEFAULT NULL, 20894 `f_char1` char(20) DEFAULT NULL, 20895 `f_char2` char(20) DEFAULT NULL, 20896 `f_charbig` varchar(1000) DEFAULT NULL, 20897 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 20898 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 20899) ENGINE=MyISAM DEFAULT CHARSET=latin1 20900/*!50100 PARTITION BY RANGE (f_int1) 20901SUBPARTITION BY KEY (f_int1) 20902(PARTITION part1 VALUES LESS THAN (0) 20903 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 20904 SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM), 20905 PARTITION part2 VALUES LESS THAN (5) 20906 (SUBPARTITION subpart21 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 20907 SUBPARTITION subpart22 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 20908 PARTITION part3 VALUES LESS THAN (10) 20909 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 20910 SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 20911 PARTITION part4 VALUES LESS THAN (2147483646) 20912 (SUBPARTITION subpart41 ENGINE = MyISAM, 20913 SUBPARTITION subpart42 ENGINE = MyISAM)) */ 20914 20915unified filelist 20916t1#P#part1#SP#subpart11.MYD 20917t1#P#part1#SP#subpart11.MYI 20918t1#P#part1#SP#subpart12.MYD 20919t1#P#part1#SP#subpart12.MYI 20920t1#P#part2#SP#subpart21.MYD 20921t1#P#part2#SP#subpart21.MYI 20922t1#P#part2#SP#subpart22.MYD 20923t1#P#part2#SP#subpart22.MYI 20924t1#P#part3#SP#subpart31.MYD 20925t1#P#part3#SP#subpart31.MYI 20926t1#P#part3#SP#subpart32.MYD 20927t1#P#part3#SP#subpart32.MYI 20928t1#P#part4#SP#subpart41.MYD 20929t1#P#part4#SP#subpart41.MYI 20930t1#P#part4#SP#subpart42.MYD 20931t1#P#part4#SP#subpart42.MYI 20932t1.frm 20933t1.par 20934t1#P#part1#SP#subpart11.MYD 20935t1#P#part1#SP#subpart12.MYD 20936t1#P#part3#SP#subpart31.MYD 20937t1#P#part3#SP#subpart32.MYD 20938t1#P#part2#SP#subpart21.MYI 20939t1#P#part2#SP#subpart22.MYI 20940t1#P#part3#SP#subpart31.MYI 20941t1#P#part3#SP#subpart32.MYI 20942 20943# check prerequisites-1 success: 1 20944# check COUNT(*) success: 1 20945# check MIN/MAX(f_int1) success: 1 20946# check MIN/MAX(f_int2) success: 1 20947INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20948SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20949CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 20950WHERE f_int1 IN (2,3); 20951ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 20952# check prerequisites-3 success: 1 20953# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 20954INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20955SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20956CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20957WHERE f_int1 IN (2,3); 20958DELETE FROM t1 WHERE f_charbig = 'delete me'; 20959INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20960SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 20961CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 20962WHERE f_int1 IN (2,3); 20963DELETE FROM t1 WHERE f_charbig = 'delete me'; 20964# check read via f_int1 success: 1 20965# check read via f_int2 success: 1 20966 20967# check multiple-1 success: 1 20968DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 20969 20970# check multiple-2 success: 1 20971INSERT INTO t1 SELECT * FROM t0_template 20972WHERE MOD(f_int1,3) = 0; 20973 20974# check multiple-3 success: 1 20975UPDATE t1 SET f_int1 = f_int1 + @max_row 20976WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 20977AND @max_row_div2 + @max_row_div4; 20978 20979# check multiple-4 success: 1 20980DELETE FROM t1 20981WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 20982AND @max_row_div2 + @max_row_div4 + @max_row; 20983 20984# check multiple-5 success: 1 20985SELECT COUNT(*) INTO @try_count FROM t0_template 20986WHERE MOD(f_int1,3) = 0 20987AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20988SELECT COUNT(*) INTO @clash_count 20989FROM t1 INNER JOIN t0_template USING(f_int1) 20990WHERE MOD(f_int1,3) = 0 20991AND f_int1 BETWEEN @max_row_div2 AND @max_row; 20992SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 20993INSERT INTO t1 20994SET f_int1 = @cur_value , f_int2 = @cur_value, 20995f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 20996f_charbig = '#SINGLE#'; 20997 20998# check single-1 success: 1 20999SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21000INSERT INTO t1 21001SET f_int1 = @cur_value , f_int2 = @cur_value, 21002f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21003f_charbig = '#SINGLE#'; 21004 21005# check single-2 success: 1 21006SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21007SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21008UPDATE t1 SET f_int1 = @cur_value2 21009WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21010 21011# check single-3 success: 1 21012SET @cur_value1= -1; 21013SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21014UPDATE t1 SET f_int1 = @cur_value1 21015WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21016 21017# check single-4 success: 1 21018SELECT MAX(f_int1) INTO @cur_value FROM t1; 21019DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21020 21021# check single-5 success: 1 21022DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21023 21024# check single-6 success: 1 21025INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21026ERROR HY000: Table has no partition for value 2147483647 21027DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21028INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21029f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21030f_charbig = '#NULL#'; 21031INSERT INTO t1 21032SET f_int1 = NULL , f_int2 = -@max_row, 21033f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21034f_charbig = '#NULL#'; 21035# check null success: 1 21036 21037# check null-1 success: 1 21038UPDATE t1 SET f_int1 = -@max_row 21039WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21040AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21041 21042# check null-2 success: 1 21043UPDATE t1 SET f_int1 = NULL 21044WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21045AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21046 21047# check null-3 success: 1 21048DELETE FROM t1 21049WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21050AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21051 21052# check null-4 success: 1 21053DELETE FROM t1 21054WHERE f_int1 = 0 AND f_int2 = 0 21055AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21056AND f_charbig = '#NULL#'; 21057INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21058SELECT f_int1, f_int1, '', '', 'was inserted' 21059 FROM t0_template source_tab 21060WHERE MOD(f_int1,3) = 0 21061AND f_int1 BETWEEN @max_row_div2 AND @max_row 21062ON DUPLICATE KEY 21063UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21064f_int2 = 2 * @max_row + source_tab.f_int1, 21065f_charbig = 'was updated'; 21066 21067# check unique-1-a success: 1 21068 21069# check unique-1-b success: 1 21070DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21072f_int2 = CAST(f_char1 AS SIGNED INT), 21073f_charbig = CONCAT('===',f_char1,'===') 21074WHERE f_charbig = 'was updated'; 21075REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21076SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21077 FROM t0_template source_tab 21078WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21079 21080# check replace success: 1 21081DELETE FROM t1 21082WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21083DELETE FROM t1 21084WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21085f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21086UPDATE t1 SET f_int2 = f_int1, 21087f_char1 = CAST(f_int1 AS CHAR), 21088f_char2 = CAST(f_int1 AS CHAR), 21089f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21090WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21091SET AUTOCOMMIT= 0; 21092INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21093SELECT f_int1, f_int1, '', '', 'was inserted' 21094FROM t0_template source_tab 21095WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21096 21097# check transactions-1 success: 1 21098COMMIT WORK; 21099 21100# check transactions-2 success: 1 21101ROLLBACK WORK; 21102 21103# check transactions-3 success: 1 21104DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21105COMMIT WORK; 21106ROLLBACK WORK; 21107 21108# check transactions-4 success: 1 21109INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21110SELECT f_int1, f_int1, '', '', 'was inserted' 21111FROM t0_template source_tab 21112WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21113 21114# check transactions-5 success: 1 21115ROLLBACK WORK; 21116Warnings: 21117Warning 1196 Some non-transactional changed tables couldn't be rolled back 21118 21119# check transactions-6 success: 1 21120# INFO: Storage engine used for t1 seems to be not transactional. 21121COMMIT; 21122 21123# check transactions-7 success: 1 21124DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21125COMMIT WORK; 21126SET @@session.sql_mode = 'traditional'; 21127Warnings: 21128Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21129SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21131SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21132'', '', 'was inserted' FROM t0_template 21133WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21134ERROR 22012: Division by 0 21135COMMIT; 21136 21137# check transactions-8 success: 1 21138# INFO: Storage engine used for t1 seems to be unable to revert 21139# changes made by the failing statement. 21140SET @@session.sql_mode = ''; 21141Warnings: 21142Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21143SET AUTOCOMMIT= 1; 21144DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21145COMMIT WORK; 21146UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21147 21148# check special-1 success: 1 21149UPDATE t1 SET f_charbig = ''; 21150 21151# check special-2 success: 1 21152UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21153INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21154SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21157SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21158'just inserted' FROM t0_template 21159WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21160CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21161BEGIN 21162UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21163f_charbig = 'updated by trigger' 21164 WHERE f_int1 = new.f_int1; 21165END| 21166INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21167SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21169 21170# check trigger-1 success: 1 21171DROP TRIGGER trg_1; 21172UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21173f_int2 = CAST(f_char1 AS SIGNED INT), 21174f_charbig = 'just inserted' 21175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21176DELETE FROM t0_aux 21177WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21178INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21179SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21180'just inserted' FROM t0_template 21181WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21182CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21183BEGIN 21184UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21185f_charbig = 'updated by trigger' 21186 WHERE f_int1 = new.f_int1; 21187END| 21188INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21189SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21190WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21191 21192# check trigger-2 success: 1 21193DROP TRIGGER trg_1; 21194UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21195f_int2 = CAST(f_char1 AS SIGNED INT), 21196f_charbig = 'just inserted' 21197 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21198DELETE FROM t0_aux 21199WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21200INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21201SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21202'just inserted' FROM t0_template 21203WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21204CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21205BEGIN 21206UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21207f_charbig = 'updated by trigger' 21208 WHERE f_int1 = new.f_int1; 21209END| 21210UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21211WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21212 21213# check trigger-3 success: 1 21214DROP TRIGGER trg_1; 21215UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21216f_int2 = CAST(f_char1 AS SIGNED INT), 21217f_charbig = 'just inserted' 21218 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21219DELETE FROM t0_aux 21220WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21221INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21222SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21223'just inserted' FROM t0_template 21224WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21225CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21226BEGIN 21227UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21228f_charbig = 'updated by trigger' 21229 WHERE f_int1 = - old.f_int1; 21230END| 21231UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21232WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21233 21234# check trigger-4 success: 1 21235DROP TRIGGER trg_1; 21236UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21237f_int2 = CAST(f_char1 AS SIGNED INT), 21238f_charbig = 'just inserted' 21239 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21240DELETE FROM t0_aux 21241WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21242INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21243SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21244'just inserted' FROM t0_template 21245WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21246CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21247BEGIN 21248UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21249f_charbig = 'updated by trigger' 21250 WHERE f_int1 = new.f_int1; 21251END| 21252UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21253WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21254 21255# check trigger-5 success: 1 21256DROP TRIGGER trg_1; 21257UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21258f_int2 = CAST(f_char1 AS SIGNED INT), 21259f_charbig = 'just inserted' 21260 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21261DELETE FROM t0_aux 21262WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21263INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21264SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21265'just inserted' FROM t0_template 21266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21267CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21268BEGIN 21269UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21270f_charbig = 'updated by trigger' 21271 WHERE f_int1 = - old.f_int1; 21272END| 21273UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21274WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21275 21276# check trigger-6 success: 1 21277DROP TRIGGER trg_1; 21278UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21279f_int2 = CAST(f_char1 AS SIGNED INT), 21280f_charbig = 'just inserted' 21281 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21282DELETE FROM t0_aux 21283WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21284INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21285SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21286'just inserted' FROM t0_template 21287WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21288CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21289BEGIN 21290UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21291f_charbig = 'updated by trigger' 21292 WHERE f_int1 = - old.f_int1; 21293END| 21294DELETE FROM t0_aux 21295WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21296 21297# check trigger-7 success: 1 21298DROP TRIGGER trg_1; 21299UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21300f_int2 = CAST(f_char1 AS SIGNED INT), 21301f_charbig = 'just inserted' 21302 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21303DELETE FROM t0_aux 21304WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21305INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21306SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21307'just inserted' FROM t0_template 21308WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21309CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 21310BEGIN 21311UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21312f_charbig = 'updated by trigger' 21313 WHERE f_int1 = - old.f_int1; 21314END| 21315DELETE FROM t0_aux 21316WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21317 21318# check trigger-8 success: 1 21319DROP TRIGGER trg_1; 21320UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21321f_int2 = CAST(f_char1 AS SIGNED INT), 21322f_charbig = 'just inserted' 21323 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21324DELETE FROM t0_aux 21325WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21326DELETE FROM t1 21327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21328CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21329BEGIN 21330SET new.f_int1 = old.f_int1 + @max_row, 21331new.f_int2 = old.f_int2 - @max_row, 21332new.f_charbig = '####updated per update trigger####'; 21333END| 21334UPDATE t1 21335SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21336f_charbig = '####updated per update statement itself####'; 21337Warnings: 21338Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21339 21340# check trigger-9 success: 1 21341DROP TRIGGER trg_2; 21342UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21343f_int2 = CAST(f_char1 AS SIGNED INT), 21344f_charbig = CONCAT('===',f_char1,'==='); 21345Warnings: 21346Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21347CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21348BEGIN 21349SET new.f_int1 = new.f_int1 + @max_row, 21350new.f_int2 = new.f_int2 - @max_row, 21351new.f_charbig = '####updated per update trigger####'; 21352END| 21353UPDATE t1 21354SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21355f_charbig = '####updated per update statement itself####'; 21356Warnings: 21357Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21358 21359# check trigger-10 success: 1 21360DROP TRIGGER trg_2; 21361UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21362f_int2 = CAST(f_char1 AS SIGNED INT), 21363f_charbig = CONCAT('===',f_char1,'==='); 21364Warnings: 21365Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21366CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21367BEGIN 21368SET new.f_int1 = @my_max1 + @counter, 21369new.f_int2 = @my_min2 - @counter, 21370new.f_charbig = '####updated per insert trigger####'; 21371SET @counter = @counter + 1; 21372END| 21373SET @counter = 1; 21374SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21375Warnings: 21376Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21377INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21378SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21379CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21380WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21381ORDER BY f_int1; 21382DROP TRIGGER trg_3; 21383 21384# check trigger-11 success: 1 21385Warnings: 21386Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21387DELETE FROM t1 21388WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21389AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21390AND f_charbig = '####updated per insert trigger####'; 21391CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21392BEGIN 21393SET new.f_int1 = @my_max1 + @counter, 21394new.f_int2 = @my_min2 - @counter, 21395new.f_charbig = '####updated per insert trigger####'; 21396SET @counter = @counter + 1; 21397END| 21398SET @counter = 1; 21399SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21400Warnings: 21401Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21402INSERT INTO t1 (f_char1, f_char2, f_charbig) 21403SELECT CAST(f_int1 AS CHAR), 21404CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21406ORDER BY f_int1; 21407DROP TRIGGER trg_3; 21408 21409# check trigger-12 success: 1 21410Warnings: 21411Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21412DELETE FROM t1 21413WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21414AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21415AND f_charbig = '####updated per insert trigger####'; 21416ANALYZE TABLE t1; 21417Table Op Msg_type Msg_text 21418test.t1 analyze status OK 21419test.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. 21420CHECK TABLE t1 EXTENDED; 21421Table Op Msg_type Msg_text 21422test.t1 check status OK 21423test.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. 21424CHECKSUM TABLE t1 EXTENDED; 21425Table Checksum 21426test.t1 <some_value> 21427OPTIMIZE TABLE t1; 21428Table Op Msg_type Msg_text 21429test.t1 optimize status OK 21430test.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. 21431# check layout success: 1 21432REPAIR TABLE t1 EXTENDED; 21433Table Op Msg_type Msg_text 21434test.t1 repair status OK 21435test.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. 21436# check layout success: 1 21437TRUNCATE t1; 21438Warnings: 21439Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21440 21441# check TRUNCATE success: 1 21442# check layout success: 1 21443# End usability test (inc/partition_check.inc) 21444DROP TABLE t1; 21445CREATE TABLE t1 ( 21446f_int1 INTEGER, 21447f_int2 INTEGER, 21448f_char1 CHAR(20), 21449f_char2 CHAR(20), 21450f_charbig VARCHAR(1000) 21451, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1) 21452) 21453/*!50100 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) (PARTITION part1 VALUES IN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', SUBPARTITION sp12 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', SUBPARTITION sp22 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), PARTITION part3 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' (SUBPARTITION sp31, SUBPARTITION sp32), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')) */; 21454Warnings: 21455Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21456INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21457SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template; 21458Warnings: 21459Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21460# Start usability test (inc/partition_check.inc) 21461create_command 21462SHOW CREATE TABLE t1; 21463Table Create Table 21464t1 CREATE TABLE `t1` ( 21465 `f_int1` int(11) DEFAULT NULL, 21466 `f_int2` int(11) DEFAULT NULL, 21467 `f_char1` char(20) DEFAULT NULL, 21468 `f_char2` char(20) DEFAULT NULL, 21469 `f_charbig` varchar(1000) DEFAULT NULL, 21470 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`), 21471 UNIQUE KEY `uidx2` (`f_int2`,`f_int1`) 21472) ENGINE=MyISAM DEFAULT CHARSET=latin1 21473/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 21474SUBPARTITION BY HASH (f_int1 + 1) 21475(PARTITION part1 VALUES IN (0) 21476 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 21477 SUBPARTITION sp12 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 21478 PARTITION part2 VALUES IN (1) 21479 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM, 21480 SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 21481 PARTITION part3 VALUES IN (2) 21482 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 21483 SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM), 21484 PARTITION part4 VALUES IN (NULL) 21485 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM, 21486 SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */ 21487 21488unified filelist 21489t1#P#part1#SP#sp11.MYD 21490t1#P#part1#SP#sp11.MYI 21491t1#P#part1#SP#sp12.MYD 21492t1#P#part1#SP#sp12.MYI 21493t1#P#part2#SP#sp21.MYD 21494t1#P#part2#SP#sp21.MYI 21495t1#P#part2#SP#sp22.MYD 21496t1#P#part2#SP#sp22.MYI 21497t1#P#part3#SP#sp31.MYD 21498t1#P#part3#SP#sp31.MYI 21499t1#P#part3#SP#sp32.MYD 21500t1#P#part3#SP#sp32.MYI 21501t1#P#part4#SP#sp41.MYD 21502t1#P#part4#SP#sp41.MYI 21503t1#P#part4#SP#sp42.MYD 21504t1#P#part4#SP#sp42.MYI 21505t1.frm 21506t1.par 21507t1#P#part1#SP#sp11.MYD 21508t1#P#part2#SP#sp21.MYD 21509t1#P#part2#SP#sp22.MYD 21510t1#P#part3#SP#sp31.MYD 21511t1#P#part3#SP#sp32.MYD 21512t1#P#part4#SP#sp41.MYD 21513t1#P#part4#SP#sp42.MYD 21514t1#P#part1#SP#sp11.MYI 21515t1#P#part1#SP#sp12.MYI 21516t1#P#part2#SP#sp22.MYI 21517t1#P#part3#SP#sp31.MYI 21518t1#P#part3#SP#sp32.MYI 21519t1#P#part4#SP#sp41.MYI 21520t1#P#part4#SP#sp42.MYI 21521 21522# check prerequisites-1 success: 1 21523# check COUNT(*) success: 1 21524# check MIN/MAX(f_int1) success: 1 21525# check MIN/MAX(f_int2) success: 1 21526INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21527SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21528CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 21529WHERE f_int1 IN (2,3); 21530ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 21531# check prerequisites-3 success: 1 21532# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 21533INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21534SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21535CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21536WHERE f_int1 IN (2,3); 21537DELETE FROM t1 WHERE f_charbig = 'delete me'; 21538INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21539SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 21540CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 21541WHERE f_int1 IN (2,3); 21542DELETE FROM t1 WHERE f_charbig = 'delete me'; 21543# check read via f_int1 success: 1 21544# check read via f_int2 success: 1 21545 21546# check multiple-1 success: 1 21547DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 21548 21549# check multiple-2 success: 1 21550INSERT INTO t1 SELECT * FROM t0_template 21551WHERE MOD(f_int1,3) = 0; 21552 21553# check multiple-3 success: 1 21554UPDATE t1 SET f_int1 = f_int1 + @max_row 21555WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 21556AND @max_row_div2 + @max_row_div4; 21557 21558# check multiple-4 success: 1 21559DELETE FROM t1 21560WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 21561AND @max_row_div2 + @max_row_div4 + @max_row; 21562 21563# check multiple-5 success: 1 21564SELECT COUNT(*) INTO @try_count FROM t0_template 21565WHERE MOD(f_int1,3) = 0 21566AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21567SELECT COUNT(*) INTO @clash_count 21568FROM t1 INNER JOIN t0_template USING(f_int1) 21569WHERE MOD(f_int1,3) = 0 21570AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21571SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 21572INSERT INTO t1 21573SET f_int1 = @cur_value , f_int2 = @cur_value, 21574f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21575f_charbig = '#SINGLE#'; 21576 21577# check single-1 success: 1 21578SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 21579INSERT INTO t1 21580SET f_int1 = @cur_value , f_int2 = @cur_value, 21581f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 21582f_charbig = '#SINGLE#'; 21583 21584# check single-2 success: 1 21585SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 21586SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 21587UPDATE t1 SET f_int1 = @cur_value2 21588WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 21589 21590# check single-3 success: 1 21591SET @cur_value1= -1; 21592SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 21593UPDATE t1 SET f_int1 = @cur_value1 21594WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 21595 21596# check single-4 success: 1 21597SELECT MAX(f_int1) INTO @cur_value FROM t1; 21598DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 21599 21600# check single-5 success: 1 21601DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 21602 21603# check single-6 success: 1 21604INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 21605 21606# check single-7 success: 1 21607DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 21608DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 21609INSERT t1 SET f_int1 = 0 , f_int2 = 0, 21610f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 21611f_charbig = '#NULL#'; 21612INSERT INTO t1 21613SET f_int1 = NULL , f_int2 = -@max_row, 21614f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 21615f_charbig = '#NULL#'; 21616# check null success: 1 21617 21618# check null-1 success: 1 21619UPDATE t1 SET f_int1 = -@max_row 21620WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21621AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21622 21623# check null-2 success: 1 21624UPDATE t1 SET f_int1 = NULL 21625WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21626AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21627 21628# check null-3 success: 1 21629DELETE FROM t1 21630WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 21631AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 21632 21633# check null-4 success: 1 21634DELETE FROM t1 21635WHERE f_int1 = 0 AND f_int2 = 0 21636AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 21637AND f_charbig = '#NULL#'; 21638INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21639SELECT f_int1, f_int1, '', '', 'was inserted' 21640 FROM t0_template source_tab 21641WHERE MOD(f_int1,3) = 0 21642AND f_int1 BETWEEN @max_row_div2 AND @max_row 21643ON DUPLICATE KEY 21644UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 21645f_int2 = 2 * @max_row + source_tab.f_int1, 21646f_charbig = 'was updated'; 21647 21648# check unique-1-a success: 1 21649 21650# check unique-1-b success: 1 21651DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21653f_int2 = CAST(f_char1 AS SIGNED INT), 21654f_charbig = CONCAT('===',f_char1,'===') 21655WHERE f_charbig = 'was updated'; 21656REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21657SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 21658 FROM t0_template source_tab 21659WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 21660 21661# check replace success: 1 21662DELETE FROM t1 21663WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 21664DELETE FROM t1 21665WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 21666f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 21667UPDATE t1 SET f_int2 = f_int1, 21668f_char1 = CAST(f_int1 AS CHAR), 21669f_char2 = CAST(f_int1 AS CHAR), 21670f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 21671WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 21672SET AUTOCOMMIT= 0; 21673INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21674SELECT f_int1, f_int1, '', '', 'was inserted' 21675FROM t0_template source_tab 21676WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21677 21678# check transactions-1 success: 1 21679COMMIT WORK; 21680 21681# check transactions-2 success: 1 21682ROLLBACK WORK; 21683 21684# check transactions-3 success: 1 21685DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21686COMMIT WORK; 21687ROLLBACK WORK; 21688 21689# check transactions-4 success: 1 21690INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21691SELECT f_int1, f_int1, '', '', 'was inserted' 21692FROM t0_template source_tab 21693WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21694 21695# check transactions-5 success: 1 21696ROLLBACK WORK; 21697Warnings: 21698Warning 1196 Some non-transactional changed tables couldn't be rolled back 21699 21700# check transactions-6 success: 1 21701# INFO: Storage engine used for t1 seems to be not transactional. 21702COMMIT; 21703 21704# check transactions-7 success: 1 21705DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21706COMMIT WORK; 21707SET @@session.sql_mode = 'traditional'; 21708Warnings: 21709Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21710SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 21711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21712SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 21713'', '', 'was inserted' FROM t0_template 21714WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 21715ERROR 22012: Division by 0 21716COMMIT; 21717 21718# check transactions-8 success: 1 21719# INFO: Storage engine used for t1 seems to be unable to revert 21720# changes made by the failing statement. 21721SET @@session.sql_mode = ''; 21722Warnings: 21723Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 21724SET AUTOCOMMIT= 1; 21725DELETE FROM t1 WHERE f_charbig = 'was inserted'; 21726COMMIT WORK; 21727UPDATE t1 SET f_charbig = REPEAT('b', 1000); 21728 21729# check special-1 success: 1 21730UPDATE t1 SET f_charbig = ''; 21731 21732# check special-2 success: 1 21733UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 21734INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 21735SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 21736WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21737INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21738SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21739'just inserted' FROM t0_template 21740WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21741CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 21742BEGIN 21743UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21744f_charbig = 'updated by trigger' 21745 WHERE f_int1 = new.f_int1; 21746END| 21747INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21748SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21750 21751# check trigger-1 success: 1 21752DROP TRIGGER trg_1; 21753UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21754f_int2 = CAST(f_char1 AS SIGNED INT), 21755f_charbig = 'just inserted' 21756 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21757DELETE FROM t0_aux 21758WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21759INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21760SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21761'just inserted' FROM t0_template 21762WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21763CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 21764BEGIN 21765UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21766f_charbig = 'updated by trigger' 21767 WHERE f_int1 = new.f_int1; 21768END| 21769INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21770SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 21771WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21772 21773# check trigger-2 success: 1 21774DROP TRIGGER trg_1; 21775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21776f_int2 = CAST(f_char1 AS SIGNED INT), 21777f_charbig = 'just inserted' 21778 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21779DELETE FROM t0_aux 21780WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21781INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21782SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21783'just inserted' FROM t0_template 21784WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21785CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21786BEGIN 21787UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21788f_charbig = 'updated by trigger' 21789 WHERE f_int1 = new.f_int1; 21790END| 21791UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21792WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21793 21794# check trigger-3 success: 1 21795DROP TRIGGER trg_1; 21796UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21797f_int2 = CAST(f_char1 AS SIGNED INT), 21798f_charbig = 'just inserted' 21799 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21800DELETE FROM t0_aux 21801WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21802INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21803SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21804'just inserted' FROM t0_template 21805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21806CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 21807BEGIN 21808UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21809f_charbig = 'updated by trigger' 21810 WHERE f_int1 = - old.f_int1; 21811END| 21812UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21813WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21814 21815# check trigger-4 success: 1 21816DROP TRIGGER trg_1; 21817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21818f_int2 = CAST(f_char1 AS SIGNED INT), 21819f_charbig = 'just inserted' 21820 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21821DELETE FROM t0_aux 21822WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21823INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21824SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21825'just inserted' FROM t0_template 21826WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21827CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21828BEGIN 21829UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21830f_charbig = 'updated by trigger' 21831 WHERE f_int1 = new.f_int1; 21832END| 21833UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21834WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21835 21836# check trigger-5 success: 1 21837DROP TRIGGER trg_1; 21838UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21839f_int2 = CAST(f_char1 AS SIGNED INT), 21840f_charbig = 'just inserted' 21841 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21842DELETE FROM t0_aux 21843WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21844INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21845SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21846'just inserted' FROM t0_template 21847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21848CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 21849BEGIN 21850UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21851f_charbig = 'updated by trigger' 21852 WHERE f_int1 = - old.f_int1; 21853END| 21854UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 21855WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21856 21857# check trigger-6 success: 1 21858DROP TRIGGER trg_1; 21859UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21860f_int2 = CAST(f_char1 AS SIGNED INT), 21861f_charbig = 'just inserted' 21862 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21863DELETE FROM t0_aux 21864WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21865INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21866SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21867'just inserted' FROM t0_template 21868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21869CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 21870BEGIN 21871UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21872f_charbig = 'updated by trigger' 21873 WHERE f_int1 = - old.f_int1; 21874END| 21875DELETE FROM t0_aux 21876WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21877 21878# check trigger-7 success: 1 21879DROP TRIGGER trg_1; 21880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21881f_int2 = CAST(f_char1 AS SIGNED INT), 21882f_charbig = 'just inserted' 21883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21884DELETE FROM t0_aux 21885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 21887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 21888'just inserted' FROM t0_template 21889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21890CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 21891BEGIN 21892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 21893f_charbig = 'updated by trigger' 21894 WHERE f_int1 = - old.f_int1; 21895END| 21896DELETE FROM t0_aux 21897WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 21898 21899# check trigger-8 success: 1 21900DROP TRIGGER trg_1; 21901UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21902f_int2 = CAST(f_char1 AS SIGNED INT), 21903f_charbig = 'just inserted' 21904 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 21905DELETE FROM t0_aux 21906WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21907DELETE FROM t1 21908WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 21909CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21910BEGIN 21911SET new.f_int1 = old.f_int1 + @max_row, 21912new.f_int2 = old.f_int2 - @max_row, 21913new.f_charbig = '####updated per update trigger####'; 21914END| 21915UPDATE t1 21916SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21917f_charbig = '####updated per update statement itself####'; 21918Warnings: 21919Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21920 21921# check trigger-9 success: 1 21922DROP TRIGGER trg_2; 21923UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21924f_int2 = CAST(f_char1 AS SIGNED INT), 21925f_charbig = CONCAT('===',f_char1,'==='); 21926Warnings: 21927Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21928CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 21929BEGIN 21930SET new.f_int1 = new.f_int1 + @max_row, 21931new.f_int2 = new.f_int2 - @max_row, 21932new.f_charbig = '####updated per update trigger####'; 21933END| 21934UPDATE t1 21935SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 21936f_charbig = '####updated per update statement itself####'; 21937Warnings: 21938Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21939 21940# check trigger-10 success: 1 21941DROP TRIGGER trg_2; 21942UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 21943f_int2 = CAST(f_char1 AS SIGNED INT), 21944f_charbig = CONCAT('===',f_char1,'==='); 21945Warnings: 21946Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21947CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21948BEGIN 21949SET new.f_int1 = @my_max1 + @counter, 21950new.f_int2 = @my_min2 - @counter, 21951new.f_charbig = '####updated per insert trigger####'; 21952SET @counter = @counter + 1; 21953END| 21954SET @counter = 1; 21955SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21956Warnings: 21957Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21958INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 21959SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 21960CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21961WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21962ORDER BY f_int1; 21963DROP TRIGGER trg_3; 21964 21965# check trigger-11 success: 1 21966Warnings: 21967Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21968DELETE FROM t1 21969WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21970AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21971AND f_charbig = '####updated per insert trigger####'; 21972CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 21973BEGIN 21974SET new.f_int1 = @my_max1 + @counter, 21975new.f_int2 = @my_min2 - @counter, 21976new.f_charbig = '####updated per insert trigger####'; 21977SET @counter = @counter + 1; 21978END| 21979SET @counter = 1; 21980SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 21981Warnings: 21982Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21983INSERT INTO t1 (f_char1, f_char2, f_charbig) 21984SELECT CAST(f_int1 AS CHAR), 21985CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 21986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 21987ORDER BY f_int1; 21988DROP TRIGGER trg_3; 21989 21990# check trigger-12 success: 1 21991Warnings: 21992Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 21993DELETE FROM t1 21994WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 21995AND f_int2 <> CAST(f_char1 AS SIGNED INT) 21996AND f_charbig = '####updated per insert trigger####'; 21997ANALYZE TABLE t1; 21998Table Op Msg_type Msg_text 21999test.t1 analyze status OK 22000test.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. 22001CHECK TABLE t1 EXTENDED; 22002Table Op Msg_type Msg_text 22003test.t1 check status OK 22004test.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. 22005CHECKSUM TABLE t1 EXTENDED; 22006Table Checksum 22007test.t1 <some_value> 22008OPTIMIZE TABLE t1; 22009Table Op Msg_type Msg_text 22010test.t1 optimize status OK 22011test.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. 22012# check layout success: 1 22013REPAIR TABLE t1 EXTENDED; 22014Table Op Msg_type Msg_text 22015test.t1 repair status OK 22016test.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. 22017# check layout success: 1 22018TRUNCATE t1; 22019Warnings: 22020Warning 1287 The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead. 22021 22022# check TRUNCATE success: 1 22023# check layout success: 1 22024# End usability test (inc/partition_check.inc) 22025DROP TABLE t1; 22026DROP VIEW IF EXISTS v1; 22027DROP TABLE IF EXISTS t1; 22028DROP TABLE IF EXISTS t0_aux; 22029DROP TABLE IF EXISTS t0_definition; 22030DROP TABLE IF EXISTS t0_template; 22031